C语言 PSA加密库生成大二进制



尝试使用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_CMBEDTLS_GENPRIMEMBEDTLS_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

最新更新