2012-02-24 19 views
7

जब मैं ओपनएसएसएल में सीएमएस का उपयोग करके एन्क्रिप्टेड एस/एमआईएम संदेश डिक्रिप्ट करने का प्रयास करता हूं, तो डिक्रिप्ट विधि मुझे 0 देता है जो कि सफल नहीं हुआ है।ओपनएसएसएल डिक्रिप्ट विफल रहता है लेकिन त्रुटि कोड 0

OpenSSL.org कहते हैं ..

CMS_decrypt() विफलता के लिए देता है या तो या सफलता के लिए 1 0। त्रुटि ERR_get_error से प्राप्त किया जा सकता (3)

जब मैं इस चलाने ...

out = BIO_new(BIO_s_mem()); 
if (!out) 
     assert(false); 

int error = CMS_decrypt(cms, rkey, rcert, out, NULL, 0); 
    if (!error) { 
    fprintf(stderr, "Error Decrypting Data\n"); 
    printf("error code: %d\n", ERR_get_error()); 
    ERR_print_errors_fp(stderr); 
    assert(false); 
} 

... त्रुटि चर 0 एक त्रुटि हो गई है जिसका अर्थ है जाता है और ERR_get_error() से त्रुटि कोड है 0 भी। ERR_print_errors_fp() कुछ भी प्रिंट नहीं करता जिसका मतलब है कि कोई त्रुटि नहीं थी।

ऊपर उल्लिखित कोड से उत्पादन:

Error Decrypting Data 
error code: 0 
Assertion failed: (false) 

किसी को भी एक सुझाव है कि क्या गलत यहाँ जा रहा है है? धन्यवाद

+1

क्या यह सफलतापूर्वक डिक्रिप्ट करता है? यदि ऐसा है तो यह जांचने योग्य हो सकता है कि एक त्रुटि इच्छित के रूप में 0 लौटाती है (वापसी मूल्यों को गलती से बदल दिया गया हो सकता है) या नियंत्रण कथन –

+0

@ MD-Tech में "ERR_get_error()" मान का उपयोग करें: नहीं। : -/बीआईओ खाली है। यहां तक ​​कि अगर मैं एक मेम बीआईओ के बजाय फ़ाइल बीआईओ बना देता हूं, तो यह नई फाइल बनाता है लेकिन इसमें कुछ भी नहीं लिखता है ... – Chris

उत्तर

0

विभिन्न दृष्टिकोण और निराशा की कोशिश करने के कई हफ्तों के बाद मैं ओपनएसएसएल के पीकेसीएस # 7 डिक्रिप्ट का उपयोग करके समाप्त हुआ। देय सीएमएस मूल रूप से पीकेसीएस # 7 पर आधारित है, यह पीकेसीएस 7 का उपयोग कर सीएमएस और डिक्रिप्शन का उपयोग करके एन्क्रिप्शन के साथ ठीक काम करता है।

मैंने जिस विधि का उपयोग किया है वह pkcs7_decrypt() है।

0

जिज्ञासा से, ERR_peek_last_error() वापस क्या करता है?

+0

मुझे लगता है कि यह 0 था क्योंकि मैंने सब कुछ करने की कोशिश की है लेकिन कोई भी नहीं है (openssl) त्रुटि । – Chris