1

証明書検証コールバック関数に入力されたエラーを出力しようとしています [pyopenssl を使用しています]:

def verify_cb(context, certificate, errornum, depth, ok):
       if (lib.X509_V_OK == errornum):
           print lib.X509_verify_cert_error_string(errornum)

上記のコードが出力されると思いましたok。しかし、それは返します<cdata 'char *' 0x7fff8b400f0f>。これを pdb でデバッグすると、次のようになります。

(Pdb) lp=lib.X509_verify_cert_error_string(errnum)
(Pdb) type(lp)
<type '_cffi_backend.CData'>
(Pdb) lp[0]
'o'
(Pdb) lp[1]
'k'
(Pdb) lp[2]
'\x00'

文字を取得するまでこれを繰り返す以外に、これの値をPython文字列として取得する方法を知っている人はいます\x00か? ありがとうございました。

4

1 に答える 1

2

わかりました。以下はそれを機能させる:

from OpenSSL._util import ffi
ffi.string(lib.X509_verify_cert_error_string(errornum))
于 2014-08-30T14:21:48.420 に答える