diff options
| author | James Morris <james.l.morris@oracle.com> | 2015-08-13 22:08:39 -0400 |
|---|---|---|
| committer | James Morris <james.l.morris@oracle.com> | 2015-08-13 22:08:39 -0400 |
| commit | e4fc02f24c223ee8d668bf2d39bb8a2dbd61b40e (patch) | |
| tree | 8ad26407ec8b8898f6ff5f396ff628919a56c624 /include | |
| parent | aa62efff65ba572814511efa68cb158fe9e960c4 (diff) | |
| parent | e9a5e8cc55286941503f36c5b7485a5aa923b3f1 (diff) | |
Merge tag 'modsign-pkcs7-20150812-3' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs into next
Diffstat (limited to 'include')
| -rw-r--r-- | include/crypto/pkcs7.h | 13 | ||||
| -rw-r--r-- | include/crypto/public_key.h | 18 | ||||
| -rw-r--r-- | include/keys/system_keyring.h | 7 | ||||
| -rw-r--r-- | include/linux/oid_registry.h | 4 | ||||
| -rw-r--r-- | include/linux/verify_pefile.h | 6 |
5 files changed, 44 insertions, 4 deletions
diff --git a/include/crypto/pkcs7.h b/include/crypto/pkcs7.h index 691c79172a26..441aff9b5aa7 100644 --- a/include/crypto/pkcs7.h +++ b/include/crypto/pkcs7.h | |||
| @@ -9,6 +9,11 @@ | |||
| 9 | * 2 of the Licence, or (at your option) any later version. | 9 | * 2 of the Licence, or (at your option) any later version. |
| 10 | */ | 10 | */ |
| 11 | 11 | ||
| 12 | #ifndef _CRYPTO_PKCS7_H | ||
| 13 | #define _CRYPTO_PKCS7_H | ||
| 14 | |||
| 15 | #include <crypto/public_key.h> | ||
| 16 | |||
| 12 | struct key; | 17 | struct key; |
| 13 | struct pkcs7_message; | 18 | struct pkcs7_message; |
| 14 | 19 | ||
| @@ -33,4 +38,10 @@ extern int pkcs7_validate_trust(struct pkcs7_message *pkcs7, | |||
| 33 | /* | 38 | /* |
| 34 | * pkcs7_verify.c | 39 | * pkcs7_verify.c |
| 35 | */ | 40 | */ |
| 36 | extern int pkcs7_verify(struct pkcs7_message *pkcs7); | 41 | extern int pkcs7_verify(struct pkcs7_message *pkcs7, |
| 42 | enum key_being_used_for usage); | ||
| 43 | |||
| 44 | extern int pkcs7_supply_detached_data(struct pkcs7_message *pkcs7, | ||
| 45 | const void *data, size_t datalen); | ||
| 46 | |||
| 47 | #endif /* _CRYPTO_PKCS7_H */ | ||
diff --git a/include/crypto/public_key.h b/include/crypto/public_key.h index 54add2069901..067c242b1e15 100644 --- a/include/crypto/public_key.h +++ b/include/crypto/public_key.h | |||
| @@ -33,12 +33,27 @@ extern const struct public_key_algorithm *pkey_algo[PKEY_ALGO__LAST]; | |||
| 33 | enum pkey_id_type { | 33 | enum pkey_id_type { |
| 34 | PKEY_ID_PGP, /* OpenPGP generated key ID */ | 34 | PKEY_ID_PGP, /* OpenPGP generated key ID */ |
| 35 | PKEY_ID_X509, /* X.509 arbitrary subjectKeyIdentifier */ | 35 | PKEY_ID_X509, /* X.509 arbitrary subjectKeyIdentifier */ |
| 36 | PKEY_ID_PKCS7, /* Signature in PKCS#7 message */ | ||
| 36 | PKEY_ID_TYPE__LAST | 37 | PKEY_ID_TYPE__LAST |
| 37 | }; | 38 | }; |
| 38 | 39 | ||
| 39 | extern const char *const pkey_id_type_name[PKEY_ID_TYPE__LAST]; | 40 | extern const char *const pkey_id_type_name[PKEY_ID_TYPE__LAST]; |
| 40 | 41 | ||
| 41 | /* | 42 | /* |
| 43 | * The use to which an asymmetric key is being put. | ||
| 44 | */ | ||
| 45 | enum key_being_used_for { | ||
| 46 | VERIFYING_MODULE_SIGNATURE, | ||
| 47 | VERIFYING_FIRMWARE_SIGNATURE, | ||
| 48 | VERIFYING_KEXEC_PE_SIGNATURE, | ||
| 49 | VERIFYING_KEY_SIGNATURE, | ||
| 50 | VERIFYING_KEY_SELF_SIGNATURE, | ||
| 51 | VERIFYING_UNSPECIFIED_SIGNATURE, | ||
| 52 | NR__KEY_BEING_USED_FOR | ||
| 53 | }; | ||
| 54 | extern const char *const key_being_used_for[NR__KEY_BEING_USED_FOR]; | ||
| 55 | |||
| 56 | /* | ||
| 42 | * Cryptographic data for the public-key subtype of the asymmetric key type. | 57 | * Cryptographic data for the public-key subtype of the asymmetric key type. |
| 43 | * | 58 | * |
| 44 | * Note that this may include private part of the key as well as the public | 59 | * Note that this may include private part of the key as well as the public |
| @@ -101,7 +116,8 @@ extern int verify_signature(const struct key *key, | |||
| 101 | 116 | ||
| 102 | struct asymmetric_key_id; | 117 | struct asymmetric_key_id; |
| 103 | extern struct key *x509_request_asymmetric_key(struct key *keyring, | 118 | extern struct key *x509_request_asymmetric_key(struct key *keyring, |
| 104 | const struct asymmetric_key_id *kid, | 119 | const struct asymmetric_key_id *id, |
| 120 | const struct asymmetric_key_id *skid, | ||
| 105 | bool partial); | 121 | bool partial); |
| 106 | 122 | ||
| 107 | #endif /* _LINUX_PUBLIC_KEY_H */ | 123 | #endif /* _LINUX_PUBLIC_KEY_H */ |
diff --git a/include/keys/system_keyring.h b/include/keys/system_keyring.h index 72665eb80692..b20cd885c1fd 100644 --- a/include/keys/system_keyring.h +++ b/include/keys/system_keyring.h | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #ifdef CONFIG_SYSTEM_TRUSTED_KEYRING | 15 | #ifdef CONFIG_SYSTEM_TRUSTED_KEYRING |
| 16 | 16 | ||
| 17 | #include <linux/key.h> | 17 | #include <linux/key.h> |
| 18 | #include <crypto/public_key.h> | ||
| 18 | 19 | ||
| 19 | extern struct key *system_trusted_keyring; | 20 | extern struct key *system_trusted_keyring; |
| 20 | static inline struct key *get_system_trusted_keyring(void) | 21 | static inline struct key *get_system_trusted_keyring(void) |
| @@ -28,4 +29,10 @@ static inline struct key *get_system_trusted_keyring(void) | |||
| 28 | } | 29 | } |
| 29 | #endif | 30 | #endif |
| 30 | 31 | ||
| 32 | #ifdef CONFIG_SYSTEM_DATA_VERIFICATION | ||
| 33 | extern int system_verify_data(const void *data, unsigned long len, | ||
| 34 | const void *raw_pkcs7, size_t pkcs7_len, | ||
| 35 | enum key_being_used_for usage); | ||
| 36 | #endif | ||
| 37 | |||
| 31 | #endif /* _KEYS_SYSTEM_KEYRING_H */ | 38 | #endif /* _KEYS_SYSTEM_KEYRING_H */ |
diff --git a/include/linux/oid_registry.h b/include/linux/oid_registry.h index c2bbf672b84e..93e0ff92fb9b 100644 --- a/include/linux/oid_registry.h +++ b/include/linux/oid_registry.h | |||
| @@ -41,7 +41,7 @@ enum OID { | |||
| 41 | OID_signed_data, /* 1.2.840.113549.1.7.2 */ | 41 | OID_signed_data, /* 1.2.840.113549.1.7.2 */ |
| 42 | /* PKCS#9 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)} */ | 42 | /* PKCS#9 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)} */ |
| 43 | OID_email_address, /* 1.2.840.113549.1.9.1 */ | 43 | OID_email_address, /* 1.2.840.113549.1.9.1 */ |
| 44 | OID_content_type, /* 1.2.840.113549.1.9.3 */ | 44 | OID_contentType, /* 1.2.840.113549.1.9.3 */ |
| 45 | OID_messageDigest, /* 1.2.840.113549.1.9.4 */ | 45 | OID_messageDigest, /* 1.2.840.113549.1.9.4 */ |
| 46 | OID_signingTime, /* 1.2.840.113549.1.9.5 */ | 46 | OID_signingTime, /* 1.2.840.113549.1.9.5 */ |
| 47 | OID_smimeCapabilites, /* 1.2.840.113549.1.9.15 */ | 47 | OID_smimeCapabilites, /* 1.2.840.113549.1.9.15 */ |
| @@ -54,6 +54,8 @@ enum OID { | |||
| 54 | 54 | ||
| 55 | /* Microsoft Authenticode & Software Publishing */ | 55 | /* Microsoft Authenticode & Software Publishing */ |
| 56 | OID_msIndirectData, /* 1.3.6.1.4.1.311.2.1.4 */ | 56 | OID_msIndirectData, /* 1.3.6.1.4.1.311.2.1.4 */ |
| 57 | OID_msStatementType, /* 1.3.6.1.4.1.311.2.1.11 */ | ||
| 58 | OID_msSpOpusInfo, /* 1.3.6.1.4.1.311.2.1.12 */ | ||
| 57 | OID_msPeImageDataObjId, /* 1.3.6.1.4.1.311.2.1.15 */ | 59 | OID_msPeImageDataObjId, /* 1.3.6.1.4.1.311.2.1.15 */ |
| 58 | OID_msIndividualSPKeyPurpose, /* 1.3.6.1.4.1.311.2.1.21 */ | 60 | OID_msIndividualSPKeyPurpose, /* 1.3.6.1.4.1.311.2.1.21 */ |
| 59 | OID_msOutlookExpress, /* 1.3.6.1.4.1.311.16.4 */ | 61 | OID_msOutlookExpress, /* 1.3.6.1.4.1.311.16.4 */ |
diff --git a/include/linux/verify_pefile.h b/include/linux/verify_pefile.h index ac34819214f9..da2049b5161c 100644 --- a/include/linux/verify_pefile.h +++ b/include/linux/verify_pefile.h | |||
| @@ -12,7 +12,11 @@ | |||
| 12 | #ifndef _LINUX_VERIFY_PEFILE_H | 12 | #ifndef _LINUX_VERIFY_PEFILE_H |
| 13 | #define _LINUX_VERIFY_PEFILE_H | 13 | #define _LINUX_VERIFY_PEFILE_H |
| 14 | 14 | ||
| 15 | #include <crypto/public_key.h> | ||
| 16 | |||
| 15 | extern int verify_pefile_signature(const void *pebuf, unsigned pelen, | 17 | extern int verify_pefile_signature(const void *pebuf, unsigned pelen, |
| 16 | struct key *trusted_keyring, bool *_trusted); | 18 | struct key *trusted_keyring, |
| 19 | enum key_being_used_for usage, | ||
| 20 | bool *_trusted); | ||
| 17 | 21 | ||
| 18 | #endif /* _LINUX_VERIFY_PEFILE_H */ | 22 | #endif /* _LINUX_VERIFY_PEFILE_H */ |
