1
我使用pyOpenSSL接口訪問OpenSSL庫,但它缺少一些我需要的功能,我不能或不想修改它以支持這些方法(適用於各種原因)。訪問對象內部結構中的指針
所以我想實現的是檢索OpenSSL對象指針。之後,我可以通過ctypes調用缺失的函數。什麼是最好的方法來做到這一點?
我已經發現我可以使用id()來獲取指向pyOpenSSL對象的指針。我怎樣才能訪問ssl變量。
從pyOpenSSL/connections.h:
typedef struct {
PyObject_HEAD
SSL *ssl;
ssl_ContextObj *context;
PyObject *socket;
PyThreadState *tstate;
PyObject *app_data;
} ssl_ConnectionObj;
我想使用在pyOpenSSL中沒有的SSL_set_verify函數(上下文對象只有set_verify,而不是SSL連接),我不想修改pyOpenSSL(我想使用Ubuntu打包的那個8.04 LTS即使我貢獻補丁也不太可能被修改)。 – math 2009-08-07 13:42:58
您通常不能使用未公開的功能。如果你完全跳過使用pyOpenSSL,你可能可以做到這一點,並且一直使用ctypes。我對ctypes不是很熟悉,但是我懷疑你可以混合使用它,因爲你很難從pyOpenSSL獲得正確的句柄。 我認爲你最好的選擇是提交補丁,並從源代碼安裝pyOpenSSL。 – 2009-08-07 13:51:01