में पीईएम एन्कोडेड निजी आरएसए कुंजी लोड करें अक्सर बार, उपयोगकर्ता पीईएम एन्कोडेड आरएसए निजी कुंजी रखेगा। क्रिप्टो ++ की आवश्यकता है कि ये कुंजी लोड करने के लिए डीईआर प्रारूप में हों। मैं लोगों से कह दिया गया है मैन्युअल रूप से इस तरह openssl का उपयोग कर पहले से der करने के लिए अपने पीईएम फ़ाइलों को कनवर्ट करने:क्रिप्टो ++
openssl pkcs8 -in in_file.pem -out out_file.der -topk8 -nocrypt -outform der
कि ठीक काम करता है, लेकिन कुछ लोग ऐसा न ही वे करना चाहते हैं के लिए कैसे समझ में नहीं आता। तो मैं कार्यक्रम के भीतर स्वचालित रूप से पीईएम फ़ाइलों को डीईआर फाइलों में कनवर्ट करना चाहता हूं।
क्या यह पीईएम से "----- BEGIN प्रमाण पत्र -----" और "----- अंत प्रमाण पत्र -----" को पट्टी करने जैसा आसान है या कुछ अन्य परिवर्तन आवश्यक है कुंआ? मुझे बताया गया है कि उन मार्करों के बीच यह सिर्फ बी 64 एन्कोडेड डीईआर है। यहाँ कुछ कोड है कि इस मुद्दे को दर्शाता है:
// load the private key
CryptoPP::RSA::PrivateKey PK;
CryptoPP::ByteQueue bytes;
try
{
CryptoPP::FileSource File(rsa.c_str(), true, new CryptoPP::Base64Decoder());
File.TransferTo(bytes);
bytes.MessageEnd();
// This line Causes BERDecodeError when a PEM encoded file is used
PK.Load(bytes);
}
catch (CryptoPP::BERDecodeErr)
{
// Convert PEM to DER and try to load the key again
}
मैं प्रणाली openssl करने के लिए कॉल करने से बचने और क्रिप्टो में पूरी तरह से ++ ताकि उपयोगकर्ताओं को किसी भी प्रारूप और चीजों को प्रदान कर सकते हैं "बस काम" परिवर्तन करना चाहते हैं। किसी भी सलाह के लिए धन्यवाद।
क्या आप एक मेमोरी डिकोडर की तलाश में हैं, या ऑन-डिस्क एक अच्छा भी है? –
@OrgnlDave - Crypto ++ का उपयोग करने वाला कोई भी उदाहरण करेगा। – 01100110
@ 01100110 - क्रिप्टो ++ में अब एड-ऑन के रूप में यह समर्थन है। क्रिप्टो ++ विकी पर [पीईएम पैक] (http://www.cryptopp.com/wiki/PEM_Pack) देखें। – jww