Если вы создаете OpenSSL с помощью сценария config
или Configure
, вы указываете 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
Обратите внимание, что некоторые вещи имеют зависимости.Например, вы не можете создать библиотеку 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).Я бы сказал, что эти зависимости являются недосмотром разработчиков.
Вот как я собираю libcrypto.a только с MD5 и SHA:
./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
Я также успешно построил его со всем, кроме AES, RSA, SHA и MD5 в качестве вопроса.