पृष्ठभूमि

कमांड-लाइन के माध्यम से ओपनएसएसएल का उपयोग करते समय, मैं अपना openssl.cnf (नीचे नमूना कोड देखें) सेट करके डिफ़ॉल्ट इंजन को बदलने में सक्षम हूं। अब मैं ईवीपी एपीआई का उपयोग करते हुए डिफ़ॉल्ट इंजन को बदलना चाहता हूं, आदर्श रूप से कॉन्फ़िगरेशन फ़ाइल को बदलकर।

बड़ा संदर्भ यह है कि मैं एक गो रैपर का ईवीपी के आसपास उपयोग कर रहा हूं, जो न तो इंजन को विश्व स्तर पर सेट करने का समर्थन करता है और न ही हस्ताक्षर/सत्यापन के लिए इंजन सेट करना (केवल एक ही संचालन जिसकी मुझे परवाह है)। मैं विकल्पों की जांच कर रहा हूं (उदाहरण के लिए cgo का उपयोग करके इंजन को विश्व स्तर पर सेट करें या लाइब्रेरी को फोर्क करना) कोड परिवर्तन शामिल हैं, लेकिन अगर मैं उनसे बच सकता हूं तो यह आदर्श होगा।

मुद्दा

ऐसा लगता है कि EVP कॉन्फ़िग फ़ाइल को नहीं पढ़ रहा है और मैं ऑनलाइन दस्तावेज़ीकरण को नहीं ढूँढ सकता/समझ पा रहा हूँ कि यह संभव है या नहीं। क्या कॉन्फ़िगरेशन फ़ाइल स्वचालित रूप से लोड हो जाती है (और मैं इसे गलत कर रहा हूं?) या क्या मुझे OPENSSL_INIT_LOAD_CONFIG?

नमूना कोड

openssl_conf = openssl_def

[openssl_def]
engines = engine_section

[engine_section]
pkcs11 = pkcs11_section

[pkcs11_section]
engine_id = pkcs11
dynamic_path = /usr/local/Cellar/engine_pkcs11/0.1.8/lib/engines/engine_pkcs11.so
MODULE_PATH = /usr/local/Cellar/opensc/0.19.0/lib/pkcs11/opensc-pkcs11.so
PIN = "123456"
init = 0
$ openssl engine
(rdrand) Intel RDRAND engine
(dynamic) Dynamic engine loading support
(pkcs11) pkcs11 engine
0
dinnerPlaht 26 जुलाई 2019, 18:05

1 उत्तर

सबसे बढ़िया उत्तर

मान लें कि आप ओपनएसएसएल 1.1.0 या बाद के संस्करण का उपयोग कर रहे हैं, तो अपने प्रोग्राम की शुरुआत में निम्नलिखित डालने का प्रयास करें (इससे पहले कि आप कोई अन्य ओपनएसएसएल कॉल करें):

    OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, NULL);
0
Matt Caswell 26 जुलाई 2019, 22:00