|
@@ -67,8 +67,9 @@ __setup("ca_keys=", ca_keys_setup);
|
|
|
*
|
|
|
* Returns 0 if the new certificate was accepted, -ENOKEY if we couldn't find a
|
|
|
* matching parent certificate in the trusted list, -EKEYREJECTED if the
|
|
|
- * signature check fails or the key is blacklisted and some other error if
|
|
|
- * there is a matching certificate but the signature check cannot be performed.
|
|
|
+ * signature check fails or the key is blacklisted, -ENOPKG if the signature
|
|
|
+ * uses unsupported crypto, or some other error if there is a matching
|
|
|
+ * certificate but the signature check cannot be performed.
|
|
|
*/
|
|
|
int restrict_link_by_signature(struct key *dest_keyring,
|
|
|
const struct key_type *type,
|
|
@@ -88,6 +89,8 @@ int restrict_link_by_signature(struct key *dest_keyring,
|
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
sig = payload->data[asym_auth];
|
|
|
+ if (!sig)
|
|
|
+ return -ENOPKG;
|
|
|
if (!sig->auth_ids[0] && !sig->auth_ids[1])
|
|
|
return -ENOKEY;
|
|
|
|
|
@@ -139,6 +142,8 @@ static int key_or_keyring_common(struct key *dest_keyring,
|
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
sig = payload->data[asym_auth];
|
|
|
+ if (!sig)
|
|
|
+ return -ENOPKG;
|
|
|
if (!sig->auth_ids[0] && !sig->auth_ids[1])
|
|
|
return -ENOKEY;
|
|
|
|
|
@@ -222,9 +227,9 @@ static int key_or_keyring_common(struct key *dest_keyring,
|
|
|
*
|
|
|
* Returns 0 if the new certificate was accepted, -ENOKEY if we
|
|
|
* couldn't find a matching parent certificate in the trusted list,
|
|
|
- * -EKEYREJECTED if the signature check fails, and some other error if
|
|
|
- * there is a matching certificate but the signature check cannot be
|
|
|
- * performed.
|
|
|
+ * -EKEYREJECTED if the signature check fails, -ENOPKG if the signature uses
|
|
|
+ * unsupported crypto, or some other error if there is a matching certificate
|
|
|
+ * but the signature check cannot be performed.
|
|
|
*/
|
|
|
int restrict_link_by_key_or_keyring(struct key *dest_keyring,
|
|
|
const struct key_type *type,
|
|
@@ -249,9 +254,9 @@ int restrict_link_by_key_or_keyring(struct key *dest_keyring,
|
|
|
*
|
|
|
* Returns 0 if the new certificate was accepted, -ENOKEY if we
|
|
|
* couldn't find a matching parent certificate in the trusted list,
|
|
|
- * -EKEYREJECTED if the signature check fails, and some other error if
|
|
|
- * there is a matching certificate but the signature check cannot be
|
|
|
- * performed.
|
|
|
+ * -EKEYREJECTED if the signature check fails, -ENOPKG if the signature uses
|
|
|
+ * unsupported crypto, or some other error if there is a matching certificate
|
|
|
+ * but the signature check cannot be performed.
|
|
|
*/
|
|
|
int restrict_link_by_key_or_keyring_chain(struct key *dest_keyring,
|
|
|
const struct key_type *type,
|