2011-08-16 16 views
7

openssl動的エンジンを書いていますが、そのためのドキュメントが見つかりません。opensslエンジンの書き方

私が書きたいアルゴリズムは、chipperアルゴリズム(rsaなど)とハッシュアルゴリズム(md5など)です。

これを変更して使用することができる単純なエンジンソースコードはありますか?

+0

後期しかし、おそらく、関連する他の誰かのために:[開発しますOpenSSL用エンジン](http://sinodun.com/2009/02/developing-an-engine-for-openssl/)を参照してください。 – javex

+1

すべてのシーカにとって、OpenSSL Wiki のソースが添付されているより良い例が見つかりました:https://wiki.openssl.org/index.php/Creating_an_OpenSSL_Engine_to_use_indigenous_ECDH_ECDSA_and_HASH_Algorithms幸運。 – Jonas

答えて

1

これを変更して使用できる簡単なエンジンソースコードはありますか?

インテル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); 
0

私はあなたがあなたのopensslのソースコードを提供します

apt-get source openssl 

を行うことをお勧めします。ツリーの中には、たとえばcrypto/rsaとcrypto/md5というディレクトリがあります。これはあなたのプロジェクトにとっては良いスタートだと思います。 READMEなどの形式のドキュメントも付属しています。

楽しんでください。

+0

ダイナミックエンジンモードで使用できますか? – hamSh

+0

私にはそれはそれのように見えます。 README.ENGINEをご覧ください。それは言う: さらに、外部のENGINE実装への動的バインディングは、 "ダイナミック"と呼ばれる特殊なENGINEによって提供される になりました。詳細については、以下の「ダイナミックエンジン」 のセクションを参照してください。 – Nodebody

+0

よろしいですか。どのように動的エンジンで読み込むエンジンを書くか。テストするためにコンパイルしてロードするサンプルエンジンはどれですか? – hamSh

関連する問題