Я использую интерфейс 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;
Я хочу использовать функцию SSL_set_verify, которая недоступна в pyOpenSSL (есть только set_verify для объекта контекста, а не для SSL-соединения), и я не хочу изменять pyOpenSSL (я хочу использовать тот, который был упакован Ubuntu 8.04 LTS, который вряд ли будет изменен, даже если я внес вам исправление). – math
Обычно вы не можете использовать функцию, которая не отображается. Возможно, вы сможете это сделать, если вообще пропустите pyOpenSSL и просто используйте ctypes. Я не очень хорошо знаком с ctypes, но я сомневаюсь, что вы можете использовать его в миксе, так как вам будет трудно получить правильные ручки из pyOpenSSL. Я думаю, что лучше всего отправить патч и установить pyOpenSSL из источника. –