Как добраться до внутренних компонентов SSL / TLS из Python?

Я реализую протокол XMPP в Python (2.7 и 3.2), и я обнаружил одну важную вещь, мешающую мне сделать реализацию полностью совместимой.

Текущая спецификация ( RFC 6120 ) требует реализации механизма SASL SCRAM-SHA-1-PLUS ( RFC 5802 ), который, в свою очередь, требует 'tls- уникальная привязка канала ( RFC 5929 ), которая определяется как:

Описание: первое отправленное сообщение TLS Finished (примечание: сообщение Finished struct, а не содержащее его сообщение уровня записи TLS) в большинстве недавнее рукопожатие TLS о привязке TLS-соединения к

Python, похоже, не предоставляет эту информацию напрямую, но я знаю, что ее можно получить через OpenSSL API, который используется внутри Python.

Есть ли какой-либо способ чтобы получить указатель SSL для оболочки сокета SSL, чтобы я мог использовать его через модуль ctypes или из моего собственного модуля расширения? Я не могу найти ничего подобного в файлах заголовков, установленных вместе с Python.

Есть ли какой-либо сторонний модуль TLS для Python, предоставляющий такой API, но сохраняющий общий Python SSL API?

Или это единственный способ сделать это , чтобы извлечь код SSL из Python и связать его исправленную копию с моим собственным пакетом?

Обновление: Я создал запрос функции Python для этой функции: http: //bugs.python. org / issue12551 Однако я все еще ищу «готовое к использованию» решение.

9
задан Jacek Konieczny 13 July 2011 в 11:35
поделиться