diff options
author | Stef Walter <stefw@redhat.com> | 2014-10-09 08:15:29 +0200 |
---|---|---|
committer | Stef Walter <stefw@redhat.com> | 2014-10-09 13:08:05 +0200 |
commit | 03d280df9a73aca5cb6eabbcb97ef3ca4e1ae0e5 (patch) | |
tree | 943e5da0523a6c6094026cc96e393d40fee1e282 /trust/x509.h | |
parent | b3579cb54bd5cd16e9740404408b2505b4b1e26b (diff) |
trust: Certificate CKA_ID is SubjectKeyIdentifier if possible
The PKCS#11 spec states that the CKA_ID should match the
SubjectKeyIdentifier if such an extension is present.
We delay the filling of CKA_ID until the builder phase of populating
attributes which allows us to have more control over how this works.
Note that we don't make CKA_ID reflect SubjectKeyIdentifier *attached*
extensions. The CKA_ID isn't supposed to change after object creation.
Making it dependent on attached extensions would be making promises
we cannot keep, since attached extensions can be added/removed at any
time.
This also means the CKA_ID of attached extensions and certificates
won't necessarily match up, but that was never promised, and not how
attached extensions should be matched to their certificate anyway.
Based on a patch and research done by David Woodhouse.
https://bugs.freedesktop.org/show_bug.cgi?id=84761
Diffstat (limited to 'trust/x509.h')
-rw-r--r-- | trust/x509.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/trust/x509.h b/trust/x509.h index af91c28..45fa628 100644 --- a/trust/x509.h +++ b/trust/x509.h @@ -46,7 +46,7 @@ unsigned char * p11_x509_find_extension (node_asn *cert, size_t der_len, size_t *ext_len); -bool p11_x509_calc_keyid (node_asn *cert, +bool p11_x509_hash_subject_public_key (node_asn *cert, const unsigned char *der, size_t der_len, unsigned char *keyid); @@ -65,6 +65,11 @@ p11_array * p11_x509_parse_extended_key_usage (p11_dict *asn1_defs, const unsigned char *ext_der, size_t ext_len); +unsigned char * p11_x509_parse_subject_key_identifier (p11_dict *asn1_defs, + const unsigned char *ext_der, + size_t ext_len, + size_t *keyid_len); + char * p11_x509_parse_dn_name (p11_dict *asn_defs, const unsigned char *der, size_t der_len, |