尝试使用PSA加密API库为ARM瑞萨RA6M1控制器构建程序。看起来像添加加密库到我的项目使太大的二进制时,它是调试构建。我只需要整个库功能的一小部分:
-
生成密钥RSA 2048 Bit RSA PKCS #1 v2.2
-
签名和检查签名功能RSASSA-PKCS1-v1_5
-
加密功能RSASSA-PKCS1-v1_5
我发现文件crypto_config.h,看起来像配置文件,允许选择什么是需要的。我是正确的吗?但是我的Segger Embedded项目不包括这个头文件。为什么?
如何使二进制更小与加密库配置?
crypto_config.h内容:
#ifndef PSA_CRYPTO_CONFIG_H
#define PSA_CRYPTO_CONFIG_H
#define PSA_WANT_ALG_DETERMINISTIC_ECDSA 1
#define PSA_WANT_ALG_ECDH 1
#define PSA_WANT_ALG_ECDSA 1
#define PSA_WANT_ALG_HKDF 1
#define PSA_WANT_ALG_HMAC 1
#define PSA_WANT_ALG_MD2 1
#define PSA_WANT_ALG_MD4 1
#define PSA_WANT_ALG_MD5 1
#define PSA_WANT_ALG_RIPEMD160 1
#define PSA_WANT_ALG_RSA_OAEP 1
#define PSA_WANT_ALG_RSA_PKCS1V15_CRYPT 1
#define PSA_WANT_ALG_RSA_PKCS1V15_SIGN 1
#define PSA_WANT_ALG_RSA_PSS 1
#define PSA_WANT_ALG_SHA_1 1
#define PSA_WANT_ALG_SHA_224 1
#define PSA_WANT_ALG_SHA_256 1
#define PSA_WANT_ALG_SHA_384 1
#define PSA_WANT_ALG_SHA_512 1
#define PSA_WANT_ALG_TLS12_PRF 1
#define PSA_WANT_ALG_TLS12_PSK_TO_MS 1
#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR 1
#define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY 1
#define PSA_WANT_KEY_TYPE_RSA_KEY_PAIR 1
#define PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY 1
#endif /* PSA_CRYPTO_CONFIG_H */
Mbed TLS 2.28/3。x有两种配置PSA加密的方法:传统或下一代。默认是遗留方法。
在遗留配置方法中,通过遗留API (mbedtls_xxx
)启用的所有机制也通过PSA API (psa_xxx
)启用。例如,使能MBEDTLS_RSA_C
、MBEDTLS_GENPRIME
和MBEDTLS_PKCS1_V15
,则通过psa_xxx
功能可以实现RSA密钥的导入/生成、PSA_ALG_RSA_PKCS1V15_SIGN
的签名/验证、PSA_ALG_RSA_PKCS1V15-CRYPT
的加密/解密。只有mbedtls/mbedtls_config.h
(Mbed TLS 2.x中的mbedtls/config.h
)是相关的,psa/crypto_config.h
被忽略。
下一代配置方法中,通过psa/crypto_config.h
配置PSA加密。如果一个机制在这里被启用并且没有驱动程序存在,相应的MBEDTLS_XXX
符号将自动被启用。若要启用下一代PSA加密配置方法,请在mbedtls/mbedtls_config.h
中设置MBEDTLS_PSA_CRYPTO_CONFIG
。