RSA-шифрование и криптографический движок BSD
Я пытаюсь зашифровать строку во встроенной системе, работающей на Linux, используя OpenSSL. В системе используется микропроцессор imx6ul. Он состоит из аппаратного криптографического движка.
root@imx6ulevk:/# openssl version
OpenSSL 1.0.2d 9 Jul 2015
root@imx6ulevk:/# openssl engine
(cryptodev) BSD cryptodev engine
(dynamic) Dynamic engine loading support
Когда я вызываю функцию RSA_public_encrypt() в моем коде, это выдает ошибку.
root@imx6ulevk:/vp/test# ./RsaEnDc
cryptodev_digest_update: illegal inputs
error:00000000:lib(0):func(0):reason(0)
И когда я удаляю загрузку драйвера cryptodev при запуске моей встроенной системы, а затем запускаю программу, она работает нормально. Но мне нужна поддержка cryptodev для других операций в моей системе.
Вот мой код
void encrypt(RSA* pRsaKey, char* message, int msgLen, char* cipher, int *cipherLen)
{
if((*cipherLen = RSA_public_encrypt(msgLen, (unsigned char*)message, (unsigned char*)cipher, pRsaKey, RSA_PKCS1_OAEP_PADDING)) == -1)
{
ERR_load_crypto_strings();
fprintf(stderr, "Error encrypting message: %s\n", ERR_error_string(ERR_get_error(), NULL));
}
}
Есть ли способ указать функцию RSA_public_encrypt(), чтобы не использовать механизм шифрования?