lib: crypto: allow to build crypyo in SPL
authorPhilippe Reynes <philippe.reynes@softathome.com>
Mon, 28 Mar 2022 20:56:57 +0000 (22:56 +0200)
committerTom Rini <trini@konsulko.com>
Thu, 31 Mar 2022 18:12:01 +0000 (14:12 -0400)
This commit adds the options:
- SPL_ASYMMETRIC_KEY_TYPE
- SPL_ASYMMETRIC_PUBLIC_KEY_SUBTYPE
- SPL_RSA_PUBLIC_KEY_PARSER

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Philippe Reynes <philippe.reynes@softathome.com>
lib/Makefile
lib/crypto/Kconfig
lib/crypto/Makefile

index 13e5d8f7a60e14b830f7e6cad50d06844584fa34..13fe5fb7a430620c538e12b532a7cd0325b2c2ed 100644 (file)
@@ -17,7 +17,6 @@ obj-$(CONFIG_OF_LIVE) += of_live.o
 obj-$(CONFIG_CMD_DHRYSTONE) += dhry/
 obj-$(CONFIG_ARCH_AT91) += at91/
 obj-$(CONFIG_OPTEE_LIB) += optee/
-obj-y += crypto/
 
 obj-$(CONFIG_AES) += aes.o
 obj-$(CONFIG_AES) += aes/
@@ -63,6 +62,8 @@ obj-$(CONFIG_TPM_V1) += tpm-v1.o
 obj-$(CONFIG_TPM_V2) += tpm-v2.o
 endif
 
+obj-y += crypto/
+
 obj-$(CONFIG_$(SPL_TPL_)GENERATE_ACPI_TABLE) += acpi/
 obj-$(CONFIG_$(SPL_)MD5) += md5.o
 obj-$(CONFIG_ECDSA) += ecdsa/
index 6369bafac07b6674b6d472d64d519137122f1ae8..509bc283112bcf6d8c9976b54438da2c32443dcd 100644 (file)
@@ -8,6 +8,15 @@ menuconfig ASYMMETRIC_KEY_TYPE
 
 if ASYMMETRIC_KEY_TYPE
 
+config SPL_ASYMMETRIC_KEY_TYPE
+       bool "Asymmetric (public-key cryptographic) key Support within SPL"
+       depends on SPL
+       help
+         This option provides support for a key type that holds the data for
+         the asymmetric keys used for public key cryptographic operations such
+         as encryption, decryption, signature generation and signature
+         verification in the SPL.
+
 config ASYMMETRIC_PUBLIC_KEY_SUBTYPE
        bool "Asymmetric public-key crypto algorithm subtype"
        help
@@ -16,6 +25,15 @@ config ASYMMETRIC_PUBLIC_KEY_SUBTYPE
          appropriate hash algorithms (such as SHA-1) must be available.
          ENOPKG will be reported if the requisite algorithm is unavailable.
 
+config SPL_ASYMMETRIC_PUBLIC_KEY_SUBTYPE
+       bool "Asymmetric public-key crypto algorithm subtype within SPL"
+       depends on ASYMMETRIC_PUBLIC_KEY_SUBTYPE
+       help
+         This option provides support for asymmetric public key type handling in the SPL.
+         If signature generation and/or verification are to be used,
+         appropriate hash algorithms (such as SHA-1) must be available.
+         ENOPKG will be reported if the requisite algorithm is unavailable.
+
 config RSA_PUBLIC_KEY_PARSER
        bool "RSA public key parser"
        depends on ASYMMETRIC_PUBLIC_KEY_SUBTYPE
@@ -27,6 +45,17 @@ config RSA_PUBLIC_KEY_PARSER
          public key data and provides the ability to instantiate a public
          key.
 
+config SPL_RSA_PUBLIC_KEY_PARSER
+       bool "RSA public key parser within SPL"
+       depends on ASYMMETRIC_PUBLIC_KEY_SUBTYPE
+       select SPL_ASN1_DECODER
+       select ASN1_COMPILER
+       select SPL_OID_REGISTRY
+       help
+         This option provides support for parsing a blob containing RSA
+         public key data and provides the ability to instantiate a public
+         key in the SPL.
+
 config X509_CERTIFICATE_PARSER
        bool "X.509 certificate parser"
        depends on ASYMMETRIC_PUBLIC_KEY_SUBTYPE
index f3a414525d2aa3b3b170fd2be8d78ccd1d137ffa..6792b1d4f007881f78793b96f53aeba533b72b65 100644 (file)
@@ -3,27 +3,34 @@
 # Makefile for asymmetric cryptographic keys
 #
 
-obj-$(CONFIG_ASYMMETRIC_KEY_TYPE) += asymmetric_keys.o
+obj-$(CONFIG_$(SPL_)ASYMMETRIC_KEY_TYPE) += asymmetric_keys.o
 
 asymmetric_keys-y := asymmetric_type.o
 
-obj-$(CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE) += public_key.o
+obj-$(CONFIG_$(SPL_)ASYMMETRIC_PUBLIC_KEY_SUBTYPE) += public_key.o
 
 #
 # RSA public key parser
 #
-obj-$(CONFIG_RSA_PUBLIC_KEY_PARSER) += rsa_public_key.o
+obj-$(CONFIG_$(SPL_)RSA_PUBLIC_KEY_PARSER) += rsa_public_key.o
 rsa_public_key-y := \
        rsapubkey.asn1.o \
        rsa_helper.o
 
 $(obj)/rsapubkey.asn1.o: $(obj)/rsapubkey.asn1.c $(obj)/rsapubkey.asn1.h
+ifdef CONFIG_SPL_BUILD
+CFLAGS_rsapubkey.asn1.o += -I$(obj)
+endif
+
 $(obj)/rsa_helper.o: $(obj)/rsapubkey.asn1.h
+ifdef CONFIG_SPL_BUILD
+CFLAGS_rsa_helper.o += -I$(obj)
+endif
 
 #
 # X.509 Certificate handling
 #
-obj-$(CONFIG_X509_CERTIFICATE_PARSER) += x509_key_parser.o
+obj-$(CONFIG_$(SPL_)X509_CERTIFICATE_PARSER) += x509_key_parser.o
 x509_key_parser-y := \
        x509.asn1.o \
        x509_akid.asn1.o \
@@ -40,11 +47,11 @@ $(obj)/x509_akid.asn1.o: $(obj)/x509_akid.asn1.c $(obj)/x509_akid.asn1.h
 #
 # PKCS#7 message handling
 #
-obj-$(CONFIG_PKCS7_MESSAGE_PARSER) += pkcs7_message.o
+obj-$(CONFIG_$(SPL_)PKCS7_MESSAGE_PARSER) += pkcs7_message.o
 pkcs7_message-y := \
        pkcs7.asn1.o \
        pkcs7_parser.o
-obj-$(CONFIG_PKCS7_VERIFY) += pkcs7_verify.o
+obj-$(CONFIG_$(SPL_)PKCS7_VERIFY) += pkcs7_verify.o
 
 $(obj)/pkcs7_parser.o: $(obj)/pkcs7.asn1.h
 $(obj)/pkcs7.asn1.o: $(obj)/pkcs7.asn1.c $(obj)/pkcs7.asn1.h