2011-08-16 11 views
7

लिखने के लिए कैसे मैं एक openssl गतिशील इंजन लिखना चाहता हूं, लेकिन मुझे इसके लिए कोई दस्तावेज़ नहीं मिल रहा है।openssl इंजन

मेरा एल्गोरिदम जिसे मैं लिखना चाहता हूं, एक चिप्पर एल्गोरिदम (जैसे आरएसए) और हैश एल्गोरिदम (एमडी 5 की तरह) है।

क्या कोई साधारण इंजन स्रोत कोड है जिसे मैं बदल सकता हूं और उस से उपयोग कर सकता हूं?

+0

देर लेकिन संभवतः किसी और के लिए प्रासंगिक: [का विकास आप के साथ अपने स्रोतों पा सकते हैं ओपनएसएसएल के लिए एक इंजन] (http://sinodun.com/2009/02/developing-an-engine-for-openssl/)। – javex

+1

सभी साधकों के लिए, ओपनएसएसएल विकी पर संलग्न स्रोतों के साथ अब एक बेहतर उदाहरण है: 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

मैं तुम्हें

apt-get source openssl 

कि तुम openssl स्रोत कोड दे देंगे कर सुझाव देते हैं। पेड़ के भीतर आप उदाहरण के लिए क्रिप्टो/आरएसए और क्रिप्टो/एमडी 5 निर्देशिकाएं पा सकते हैं जो मुझे लगता है कि आपकी परियोजना के लिए एक अच्छी शुरुआत होगी। यह कुछ दस्तावेज के साथ READMEs के रूप में आता है और इसी तरह।

मज़े करें।

+0

क्या मैं उन्हें गतिशील इंजन मोड में उपयोग कर सकता हूं? – hamSh

+0

मेरे लिए ऐसा लगता है। README.ENGINE पर एक नज़र डालें। यह कहता है: इसके अलावा, बाहरी इंजन कार्यान्वयन के लिए गतिशील बाध्यकारी अब "गतिशील" नामक एक विशेष इंजन द्वारा प्रदान किया गया है। विवरण के लिए नीचे "डायनामिक इंजन" अनुभाग देखें। – Nodebody

+0

ठीक है, मैं देखता हूं। लेकिन गतिशील इंजन के साथ लोड करने के लिए इंजन कैसे लिखना है। संकलन और परीक्षण करने के लिए लोड करने के लिए कोई नमूना इंजन है? – hamSh

संबंधित मुद्दे