Присоединить контекст ENGINE к SSL_CTX
Мне интересно, есть ли возможность прикрепить ENGINE*
реализация к SSL_CTX*
и / или SSL*
структур. Чего я хочу добиться, так это иметь SSL_CTX*
это будет установлено с помощью криптографических операций по умолчанию, встроенных в OpenSSL и других SSL_CTX*
который будет использовать выделенный HSM в качестве уровня шифрования.
Это способ, которым я могу достичь этого? Из того, что я прочитал, можно зарегистрировать и установить по умолчанию некоторые криптографические операции (случайные, шифры, md и т. Д.), Но будут использоваться те, которые были установлены, а не встроенные.
например EVP_CipherInit_ex
имеет третий параметр ENGINE*
, Шифрование / дешифрование с EVP_CIPHER_CTX*
инициализированный таким образом обработает шифрование / дешифрование через реализацию ENGINE.
1 ответ
Из того, что я видел и читал, вы не можете. Если вам нужно использовать движок в вашем коде, у вас есть два варианта:
Установите ваш движок по умолчанию, и он будет использоваться OpenSSL для всех тех методов, которые предоставляет движок, для всех остальных - будут использоваться встроенные методы OpenSSL. Это вызов, который вам нужно будет использовать в этом случае:
ENGINE_set_default (двигатель, ENGINE_METHOD_ALL)
Установите свой движок для нескольких выбранных методов, например, приведенный ниже код настроит его только для метода RAND:
ENGINE_set_default (двигатель, ENGINE_METHOD_RAND)
Вы можете найти больше примеров здесь: https://www.openssl.org/docs/manmaster/crypto/engine.html и в README.ENGINE openssl.
Другими словами, engine является глобальным параметром, и если вы хотите отобразить его на объект SSL_CTX, вам нужно будет поддерживать эту карту вручную.
Кстати, я был бы рад оказаться неправым, потому что мне самому нужен такой вид функциональности и надеюсь, что он будет реализован в будущем.