क्या कोई साधारण इंजन स्रोत कोड है जिसे मैं बदल सकता हूं और उस से उपयोग कर सकता हूं?
इंटेल 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);
देर लेकिन संभवतः किसी और के लिए प्रासंगिक: [का विकास आप के साथ अपने स्रोतों पा सकते हैं ओपनएसएसएल के लिए एक इंजन] (http://sinodun.com/2009/02/developing-an-engine-for-openssl/)। – javex
सभी साधकों के लिए, ओपनएसएसएल विकी पर संलग्न स्रोतों के साथ अब एक बेहतर उदाहरण है: https://wiki.openssl.org/index.php/Creating_an_OpenSSL_Engine_to_use_indigenous_ECDH_ECDSA_and_HASH_Algorithms शुभकामनाएँ। – Jonas