Here's a set of patches that cleans up the public key handling in the asymmetric key functions:
(1) - (3) These are Tadeusz's RSA akcipher conversion. (4) This removes all knowledge of RSA from the software public key asymmetric key subtype. Instead, the public key type and the hash type are indicated to the crypto layer and the RSA module there does all the appropriate encoding. (5) This changes the various algorithm IDs to text labels instead of enums as the strings are what we actually deal with (printing, passing to the crypto layer). (6) This separates the private parts of the software public key subtype into a private header in the implementation directory. (7) This renames public_key.c to software_pkey.c and changes the Kconfig symbol to match. (8) This renames symbols beginning "public_key" to "software_pkey" except struct for public_key_signature which is a wider API component. The patches can be found here also: http://git.kernel.org/cgit/linux/kernel/git/dhowells/linux-fs.git/log/?h=keys-rsa David --- David Howells (5): akcipher: Move the RSA DER encoding to the crypto layer X.509: Make algo identifiers text instead of enum X.509: Make the public_key asymmetric key type internal data private X.509: Rename public_key.c to software_pkey.c X.509: Rename public_key* to software_pkey* Tadeusz Struk (3): crypto: KEYS: convert public key and digsig asym to the akcipher api integrity: convert digsig to akcipher api crypto: public_key: remove MPIs from public_key_signature struct arch/s390/configs/default_defconfig | 2 arch/s390/configs/gcov_defconfig | 2 arch/s390/configs/performance_defconfig | 2 crypto/asymmetric_keys/Kconfig | 17 +- crypto/asymmetric_keys/Makefile | 10 - crypto/asymmetric_keys/mscode_parser.c | 14 + crypto/asymmetric_keys/pkcs7_parser.c | 30 +-- crypto/asymmetric_keys/pkcs7_trust.c | 2 crypto/asymmetric_keys/pkcs7_verify.c | 12 + crypto/asymmetric_keys/public_key.c | 130 -------------- crypto/asymmetric_keys/public_key.h | 36 ---- crypto/asymmetric_keys/rsa.c | 278 ----------------------------- crypto/asymmetric_keys/software_pkey.c | 142 +++++++++++++++ crypto/asymmetric_keys/software_pkey.h | 33 +++ crypto/asymmetric_keys/verify_pefile.c | 4 crypto/asymmetric_keys/verify_pefile.h | 2 crypto/asymmetric_keys/x509_cert_parser.c | 67 ++----- crypto/asymmetric_keys/x509_parser.h | 4 crypto/asymmetric_keys/x509_public_key.c | 43 ++-- crypto/asymmetric_keys/x509_rsakey.asn1 | 4 crypto/rsa.c | 210 +++++++++++++++++++--- crypto/testmgr.c | 5 - include/crypto/akcipher.h | 7 + include/crypto/public_key.h | 79 +------- init/Kconfig | 4 kernel/module_signing.c | 6 + security/integrity/Kconfig | 3 security/integrity/digsig_asymmetric.c | 16 +- 28 files changed, 467 insertions(+), 697 deletions(-) delete mode 100644 crypto/asymmetric_keys/public_key.c delete mode 100644 crypto/asymmetric_keys/public_key.h delete mode 100644 crypto/asymmetric_keys/rsa.c create mode 100644 crypto/asymmetric_keys/software_pkey.c create mode 100644 crypto/asymmetric_keys/software_pkey.h delete mode 100644 crypto/asymmetric_keys/x509_rsakey.asn1