aboutsummaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2016-03-03 16:49:27 -0500
committerDavid Howells <dhowells@redhat.com>2016-03-03 16:49:27 -0500
commitd43de6c780a84def056afaf4fb3e66bdaa1efc00 (patch)
treef6221a2761cd7fbdb9c5bdc3e82b6dbfef90430a /init
parenta49de377e051eac5bc50a3b838614a05671da4e7 (diff)
akcipher: Move the RSA DER encoding check to the crypto layer
Move the RSA EMSA-PKCS1-v1_5 encoding from the asymmetric-key public_key subtype to the rsa crypto module's pkcs1pad template. This means that the public_key subtype no longer has any dependencies on public key type. To make this work, the following changes have been made: (1) The rsa pkcs1pad template is now used for RSA keys. This strips off the padding and returns just the message hash. (2) In a previous patch, the pkcs1pad template gained an optional second parameter that, if given, specifies the hash used. We now give this, and pkcs1pad checks the encoded message E(M) for the EMSA-PKCS1-v1_5 encoding and verifies that the correct digest OID is present. (3) The crypto driver in crypto/asymmetric_keys/rsa.c is now reduced to something that doesn't care about what the encryption actually does and and has been merged into public_key.c. (4) CONFIG_PUBLIC_KEY_ALGO_RSA is gone. Module signing must set CONFIG_CRYPTO_RSA=y instead. Thoughts: (*) Should the encoding style (eg. raw, EMSA-PKCS1-v1_5) also be passed to the padding template? Should there be multiple padding templates registered that share most of the code? Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com> Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'init')
-rw-r--r--init/Kconfig2
1 files changed, 1 insertions, 1 deletions
diff --git a/init/Kconfig b/init/Kconfig
index 22320804fbaf..af4de4f1b02c 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1757,9 +1757,9 @@ config SYSTEM_DATA_VERIFICATION
1757 select SYSTEM_TRUSTED_KEYRING 1757 select SYSTEM_TRUSTED_KEYRING
1758 select KEYS 1758 select KEYS
1759 select CRYPTO 1759 select CRYPTO
1760 select CRYPTO_RSA
1760 select ASYMMETRIC_KEY_TYPE 1761 select ASYMMETRIC_KEY_TYPE
1761 select ASYMMETRIC_PUBLIC_KEY_SUBTYPE 1762 select ASYMMETRIC_PUBLIC_KEY_SUBTYPE
1762 select PUBLIC_KEY_ALGO_RSA
1763 select ASN1 1763 select ASN1
1764 select OID_REGISTRY 1764 select OID_REGISTRY
1765 select X509_CERTIFICATE_PARSER 1765 select X509_CERTIFICATE_PARSER