int rpmvsVerifyItems(struct rpmvs_s *sis, int range, rpmDigestBundle bundle, rpmKeyring keyring, rpmsinfoCb cb, void *cbdata) { int failed = 0; for (int i = 0; i < sis->nsigs; i++) { struct rpmsinfo_s *sinfo = &sis->sigs[i]; if (sinfo->range == range) { if (sis->rcs[i] == RPMRC_OK) { DIGEST_CTX ctx = rpmDigestBundleDupCtx(bundle, sinfo->id); sis->results[i] = _free(sis->results[i]); sis->rcs[i] = rpmVerifySignature(keyring, sinfo, ctx, &sis->results[i]); rpmDigestFinal(ctx, NULL, NULL, 0); rpmDigestBundleFinal(bundle, sinfo->id, NULL, NULL, 0); } if (cb) sis->rcs[i] = cb(sinfo, sis->rcs[i], sis->results[i], cbdata); if (sis->rcs[i] != RPMRC_OK) failed++; } } return failed; }
void fdFiniDigest(FD_t fd, int hashalgo, void ** datap, size_t * lenp, int asAscii) { if (fd && fd->digests) { fdstat_enter(fd, FDSTAT_DIGEST); rpmDigestBundleFinal(fd->digests, hashalgo, datap, lenp, asAscii); fdstat_exit(fd, FDSTAT_DIGEST, (ssize_t) 0); } }