2011-08-16 24 views
7

Ben bir openssl dinamik motor yazmak istiyorum, ancak bunun için herhangi bir belge bulamıyorum.openssl engine nasıl yazılır

Yazmak istediğim algoritma, bir parçalayıcı algoritması (rsa gibi) ve bir karma algoritmasıdır (md5 gibi).

Bunu değiştirip kullanabileceğim herhangi bir basit kaynak kodu var mı?

+0

Geç ama muhtemelen alakalı başkası için: [Gelişmekte yüklemek ve (Random Numbers|Hardware itibaren) varsayılan rasgele sayı üreteci motoru olarak ayarlayabilirsiniz nasıl

İşte
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(); 

: Sen onun kaynaklardan bulabilirsiniz OpenSSL için bir motor] (http://sinodun.com/2009/02/developing-an-engine-for-openssl/). – javex

+1

Tüm arayanlar için, OpenSSL Wiki 'da eklenmiş Kaynaklar ile daha iyi bir örnek bulmak mümkün: https://wiki.openssl.org/index.php/Creating_an_OpenSSL_Engine_to_use_indigenous_ECDH_ECDSA_and_HASH_Algorithms iyi şanslar. – Jonas

cevap

1

Bunu değiştirip kullanabileceğim herhangi bir basit kaynak kodu var mı?

Intel RDRAND motorunun anlaşılması oldukça kolaydır.

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

Ben size openssl kaynak kodu verecektir

apt-get source openssl 

yapmanızı öneririm. Ağacın içinde, projeniz için iyi bir başlangıç ​​olacağını tahmin ettiğim dizinleri kripto/rsa ve kripto/md5 bulabilirsiniz. Ayrıca README ve benzeri gibi bazı belgelerle birlikte gelir.

İyi eğlenceler.

+0

bunları dinamik motor modunda kullanabilir miyim? – hamSh

+0

Benim için öyle görünüyor. README.ENGINE bir göz atın. Diyor ki: Buna ek olarak, harici ENGINE uygulamalarına dinamik bağlanma, "dinamik" adlı özel bir MOTOR tarafından sağlanan . Ayrıntılar için aşağıdaki "DYNAMIC ENGINE" bölümüne bakın. – Nodebody

+0

Tamam, anlıyorum. ama dinamik motorla yüklenecek motor nasıl yazılır. test etmek için herhangi bir örnek motor derlemek ve yüklemek için mi? – hamSh