使用RSA和AES构建openssl

zel*_*las 9 openssl rsa build aes sha

我正在使用libcrypto.a(OpenSSL)和一个项目.默认情况下,所有算法都在libcrypto.a下可用.对于该项目,我只需要RSA,AES和SHA.

我如何用这些算法构建libcrypto.a?

ind*_*div 18

如果通过运行configConfigure脚本来构建OpenSSL ,则提供no-<cipher>排除密码的参数.Configure没有选项运行以查看可用的构建选项.

配置脚本将这些参数转换为预处理器的选项.这是您在编译时可以禁用的几乎所有内容的列表.首先是配置脚本参数,然后是转换为的编译器参数.

Ciphers:

no-idea       -DOPENSSL_NO_IDEA
no-aes        -DOPENSSL_NO_AES
no-camellia   -DOPENSSL_NO_CAMELLIA
no-seed       -DOPENSSL_NO_SEED
no-bf         -DOPENSSL_NO_BF
no-cast       -DOPENSSL_NO_CAST
no-des        -DOPENSSL_NO_DES
no-rc2        -DOPENSSL_NO_RC2
no-rc4        -DOPENSSL_NO_RC4
no-rc5        -DOPENSSL_NO_RC5

no-md2        -DOPENSSL_NO_MD2
no-md4        -DOPENSSL_NO_MD4
no-md5        -DOPENSSL_NO_MD5
no-sha        -DOPENSSL_NO_SHA
no-ripemd     -DOPENSSL_NO_RIPEMD
no-mdc2       -DOPENSSL_NO_MDC2

no-rsa        -DOPENSSL_NO_RSA
no-dsa        -DOPENSSL_NO_DSA
no-dh         -DOPENSSL_NO_DH

no-ec         -DOPENSSL_NO_EC
no-ecdsa      -DOPENSSL_NO_ECDSA
no-ecdh       -DOPENSSL_NO_ECDH

Non-cipher functionality:

no-sock       -DOPENSSL_NO_SOCK         No socket code.
no-ssl2       -DOPENSSL_NO_SSL2         No SSLv2.
no-ssl3       -DOPENSSL_NO_SSL3         No SSLv3.
no-err        -DOPENSSL_NO_ERR          No error strings.
no-krb5       -DOPENSSL_NO_KRB5         No Kerberos v5.
no-engine     -DOPENSSL_NO_ENGINE       No dynamic engines.
no-hw         -DOPENSSL_NO_HW           No support for external hardware.

Not documented:

no-tlsext     -DOPENSSL_NO_TLSEXT
no-cms        -DOPENSSL_NO_CMS
no-jpake      -DOPENSSL_NO_JPAKE
no-capieng    -DOPENSSL_NO_CAPIENG
Run Code Online (Sandbox Code Playgroud)

请注意,有些东西有依赖关系.例如,你不能没有密码建立SSL库和摘要算法,因为SSL和TLS协议要求他们.因此make all,您不想这样make build_crypto做,而是只建立libcrypto.a.

通过实验,我发现(在OpenSSL 0.9.8r中)libcrypto有2个算法依赖:MD5用于随机数生成器的算法(在crypto/rand_lib.c中)和SHA-1用于打印证书哈希值(在crypto/asn1/t_x509中) .C).我会说这些依赖关系是开发人员的疏忽.

这就是我只用MD5和SHA构建libcrypto.a的方法:

./config no-idea no-aes no-camellia no-seed no-bf no-cast no-des no-rc2 no-rc4 no-rc5 \
no-md2 no-md4 no-ripemd no-mdc2 no-rsa no-dsa no-dh no-ec no-ecdsa no-ecdh no-sock \
no-ssl2 no-ssl3 no-err no-krb5 no-engine no-hw
make depend
make build_crypto
Run Code Online (Sandbox Code Playgroud)

问题是,我还成功地使用除AES,RSA,SHA和MD5之外的所有内容构建它.