2009-05-25 17 views
6

मैं SSL के लिए बहुत नया हूं, असल में मैं कहूंगा कि मुझे इसके बारे में कुछ नहीं पता है।SSL_CTX_new के बाद त्रुटि विवरण प्राप्त करने में समस्या NULL

मैं SSL_CTX ऑब्जेक्ट बनाने के लिए "SSL_CTX_new" विधि का उपयोग कर रहा हूं। विधि शून्य वापस आती है। दस्तावेज़ीकरण कहता है कि इसके लिए कारण प्राप्त करने के लिए मैं त्रुटि स्टैक की जांच कर सकता हूं।

तो मेरे पास "int SSL_get_error (SSL * s, int ret_code)" फ़ंक्शन है (जैसा कि मैं समझता हूं) मुझे त्रुटि संदेश प्राप्त करने के लिए उपयोग करना होगा। विधि के दस्तावेज़ीकरण समारोह के पहले पैरामीटर के बारे में कुछ भी नहीं कहता है। यह केवल इतना कहता है कि दूसरा ("ret") पैरामीटर विफल ऑपरेशन से रिटर्न कोड के बराबर होना चाहिए जो निम्न में से कोई भी हो सकता है:

SSL_connect(), SSL_accept(), SSL_do_handshake(), SSL_read() , SSL_peek(), या SSL_write()

तो अब मुझे दो समस्याएं हैं। पहला यह है कि मैंने इनमें से किसी भी फ़ंक्शन का उपयोग नहीं किया बल्कि SSL_CTX_new का उपयोग किया जो किसी भी प्रकार का रिटर्न कोड नहीं लौटाता है (यह एसएसएक्स_सीटीएक्स ऑब्जेक्ट को पॉइंटर देता है) इसलिए मुझे नहीं पता कि "ret" पैरामीटर। दूसरी समस्या यह है कि मुझे नहीं पता कि पहला पैरामीटर क्या मतलब है और मुझे वहां क्या रखा जाना चाहिए, क्योंकि डॉक्टर इसके बारे में कुछ भी नहीं कहता है।

+0

क्या आप कुछ कोड दिखा सकते हैं जहां आप SSL_CTX_new कहते हैं? –

उत्तर

6

आपको एसएसएल ऑब्जेक्ट बनाने के लिए एक वैध संदर्भ की आवश्यकता है।

चूंकि आप कोई संदर्भ नहीं बना सकते हैं तो आप SSL_get_error का उपयोग नहीं कर सकते हैं।

देखने के लिए क्या गलत हो गया है

#include "openssl/err.h" 
... 

SSL_CTX * ctx = SSL_CTX_new(....); 
if(!ctx) { 
    ERR_print_errors_fp(stderr); 
    //throw or return an error 
} 

मैं सिर्फ एसएसएल किए गए दस्तावेज़ों की एक पढ़ा था ERR_print_errors का उपयोग करें। यदि आपको प्रोग्राम कोडिक रूप से त्रुटि कोड/त्रुटि स्ट्रिंग प्राप्त करने की आवश्यकता है तो आपको ERR_get_error और ERR_error_string फ़ंक्शंस का उपयोग करना चाहिए।

आप SSL_library_init() के लिए एक कॉल गायब हो सकता है एक नज़र here और here

8

प्रति http://www.mail-archive.com/[email protected]/msg51543.html के रूप में है,। SSL_CTX_NEW (..) कॉल से पहले इसे जोड़ने से मेरे लिए नल मूल्य समस्या ठीक हो गई।

+1

धन्यवाद @ जे टेलर, आप दिन –

+0

बचाते हैं भले ही लापता इनिट कॉल मुद्दा था, यह उत्तर वास्तविक प्रश्न को संबोधित नहीं करता है, जो त्रुटि संदेश प्राप्त करने का तरीका है। लोगों को 'ERR_get_error' (3) और दोस्तों के उपयोग की ओर इशारा करना अच्छा होगा। –

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