openssl動的エンジンを書いていますが、そのためのドキュメントが見つかりません。opensslエンジンの書き方
私が書きたいアルゴリズムは、chipperアルゴリズム(rsaなど)とハッシュアルゴリズム(md5など)です。
これを変更して使用することができる単純なエンジンソースコードはありますか?
openssl動的エンジンを書いていますが、そのためのドキュメントが見つかりません。opensslエンジンの書き方
私が書きたいアルゴリズムは、chipperアルゴリズム(rsaなど)とハッシュアルゴリズム(md5など)です。
これを変更して使用することができる単純なエンジンソースコードはありますか?
これを変更して使用できる簡単なエンジンソースコードはありますか?
インテルRDRAND
エンジンはかなりわかりやすいです。あなたがその源を見つけることができます:ここでは
openssl-1.0.1f$ grep -R -i ENGINE_rdrand *
crypto/engine/eng_rdrand.c:static ENGINE *ENGINE_rdrand(void)
crypto/engine/eng_rdrand.c: ENGINE *toadd = ENGINE_rdrand();
は、あなたがロードして(Random Numbers|Hardwareからの)デフォルトの乱数生成エンジンとして設定することができます方法は次のとおりです。
unsigned long err = 0;
int rc = 0;
OPENSSL_cpuid_setup();
ENGINE_load_rdrand();
ENGINE* eng = ENGINE_by_id("rdrand");
err = ERR_get_error();
if(NULL == eng) {
fprintf(stderr, "ENGINE_load_rdrand failed, err = 0x%lx\n", err);
abort(); /* failed */
}
rc = ENGINE_init(eng);
err = ERR_get_error();
if(0 == rc) {
fprintf(stderr, "ENGINE_init failed, err = 0x%lx\n", err);
abort(); /* failed */
}
rc = ENGINE_set_default(eng, ENGINE_METHOD_RAND);
err = ERR_get_error();
if(0 == rc) {
fprintf(stderr, "ENGINE_set_default failed, err = 0x%lx\n", err);
abort(); /* failed */
}
/* OK to proceed */
...
ENGINE_finish(eng);
ENGINE_free(eng);
私はあなたがあなたのopensslのソースコードを提供します
apt-get source openssl
を行うことをお勧めします。ツリーの中には、たとえばcrypto/rsaとcrypto/md5というディレクトリがあります。これはあなたのプロジェクトにとっては良いスタートだと思います。 READMEなどの形式のドキュメントも付属しています。
楽しんでください。
後期しかし、おそらく、関連する他の誰かのために:[開発しますOpenSSL用エンジン](http://sinodun.com/2009/02/developing-an-engine-for-openssl/)を参照してください。 – javex
すべてのシーカにとって、OpenSSL Wiki のソースが添付されているより良い例が見つかりました:https://wiki.openssl.org/index.php/Creating_an_OpenSSL_Engine_to_use_indigenous_ECDH_ECDSA_and_HASH_Algorithms幸運。 – Jonas