如何将OpenSSL._util.lib.X509_verify_cert_error_string的值获取为Python字符串

1 投票
1 回答
530 浏览
提问于 2025-04-18 23:14

我正在尝试打印出输入到证书验证回调函数中的错误信息(我使用的是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字符?谢谢。

1 个回答

2

好的,我找到了办法。下面的代码可以让它正常工作:

from OpenSSL._util import ffi
ffi.string(lib.X509_verify_cert_error_string(errornum))

撰写回答