(hx509_cms_verify_signed): add external store of certificates, use the

right digest algorithm identifier.


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15795 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2005-07-27 20:29:01 +00:00
parent 8e29b2d8f8
commit a2cf1e1758

View File

@@ -400,6 +400,7 @@ int
hx509_cms_verify_signed(hx509_verify_ctx ctx, hx509_cms_verify_signed(hx509_verify_ctx ctx,
const char *data, const char *data,
size_t length, size_t length,
hx509_certs store,
heim_oid *contentType, heim_oid *contentType,
heim_octet_string *content, heim_octet_string *content,
hx509_certs *signer_certs) hx509_certs *signer_certs)
@@ -444,6 +445,12 @@ hx509_cms_verify_signed(hx509_verify_ctx ctx,
goto out; goto out;
} }
if (store) {
ret = hx509_certs_merge(certs, store);
if (ret)
goto out;
}
ret = HX509_CMS_SIGNER_NOT_FOUND; ret = HX509_CMS_SIGNER_NOT_FOUND;
for (found_valid_sig = 0, i = 0; i < sd.signerInfos.len; i++) { for (found_valid_sig = 0, i = 0; i < sd.signerInfos.len; i++) {
heim_octet_string *signed_data; heim_octet_string *signed_data;
@@ -464,18 +471,11 @@ hx509_cms_verify_signed(hx509_verify_ctx ctx,
continue; continue;
if (signer_info->signedAttrs) { if (signer_info->signedAttrs) {
const AlgorithmIdentifier *salg;
const Attribute *attr; const Attribute *attr;
CMSAttributes sa; CMSAttributes sa;
heim_octet_string os; heim_octet_string os;
salg = _hx509_digest_signature(&signer_info->signatureAlgorithm);
if (salg == NULL) {
ret = HX509_ALG_NOT_SUPP;
continue;
}
sa.val = signer_info->signedAttrs->val; sa.val = signer_info->signedAttrs->val;
sa.len = signer_info->signedAttrs->len; sa.len = signer_info->signedAttrs->len;
@@ -498,7 +498,7 @@ hx509_cms_verify_signed(hx509_verify_ctx ctx,
continue; continue;
ret = _hx509_verify_signature(NULL, ret = _hx509_verify_signature(NULL,
salg, &signer_info->digestAlgorithm,
sd.encapContentInfo.eContent, sd.encapContentInfo.eContent,
&os); &os);
free_octet_string(&os); free_octet_string(&os);