4

OpenSSL を使用して、Linux で実行されている組み込みシステムで文字列を暗号化しようとしています。システムは 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));
    }
}

cryptodev エンジンを使用しないように RSA_public_encrypt() 関数を指定する方法はありますか?

4

0 に答える 0