X.509: Extract both parts of the AuthorityKeyIdentifier
Extract both parts of the AuthorityKeyIdentifier, not just the keyIdentifier, as the second part can be used to match X.509 certificates by issuer and serialNumber. Signed-off-by: David Howells <dhowells@redhat.com> Tested-by: Vivek Goyal <vgoyal@redhat.com>
This commit is contained in:
parent
c05cae9a58
commit
b92e6570a9
7 changed files with 145 additions and 69 deletions
|
@ -227,10 +227,10 @@ static int x509_validate_trust(struct x509_certificate *cert,
|
|||
if (!trust_keyring)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (ca_keyid && !asymmetric_key_id_partial(cert->authority, ca_keyid))
|
||||
if (ca_keyid && !asymmetric_key_id_partial(cert->akid_skid, ca_keyid))
|
||||
return -EPERM;
|
||||
|
||||
key = x509_request_asymmetric_key(trust_keyring, cert->authority,
|
||||
key = x509_request_asymmetric_key(trust_keyring, cert->akid_skid,
|
||||
false);
|
||||
if (!IS_ERR(key)) {
|
||||
if (!use_builtin_keys
|
||||
|
@ -287,8 +287,8 @@ static int x509_key_preparse(struct key_preparsed_payload *prep)
|
|||
cert->pub->id_type = PKEY_ID_X509;
|
||||
|
||||
/* Check the signature on the key if it appears to be self-signed */
|
||||
if (!cert->authority ||
|
||||
asymmetric_key_id_same(cert->skid, cert->authority)) {
|
||||
if (!cert->akid_skid ||
|
||||
asymmetric_key_id_same(cert->skid, cert->akid_skid)) {
|
||||
ret = x509_check_signature(cert->pub, cert); /* self-signed */
|
||||
if (ret < 0)
|
||||
goto error_free_cert;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue