mirror of
https://github.com/Flowseal/tg-ws-proxy.git
synced 2026-10-30 21:47:01 +03:00
[PR #894] [MERGED] Используем системный libcrypto как fallback, если cryptography недоступен #69
Reference in new issue
Block a user
📋 Pull Request Information
Original PR: https://github.com/Flowseal/tg-ws-proxy/pull/894
Author: @k1zn
Created: 5/26/2026
Status: ✅ Merged
Merged: 5/30/2026
Merged by: @Flowseal
Base:
main← Head:crypto-shim📝 Commits (1)
c6a4416Fall back to system libcrypto whencryptographyis unavailable📊 Changes
3 files changed (+132 additions, -2 deletions)
View changed files
➕
proxy/_aes.py(+130 -0)📝
proxy/bridge.py(+1 -1)📝
proxy/tg_ws_proxy.py(+1 -1)📄 Description
Добавляет
proxy/_aes.py— небольшой shim для AES-CTR, который сначала пытается импортировать пакетcryptography, а если его нет — оборачивает системный OpenSSLlibcryptoчерезctypes. Shim повторяет тот узкий кусок API, который реально используется в проекте:Cipher(algorithms.AES(key), modes.CTR(iv)).encryptor().update(...), поэтому поведение на десктопе/в Docker не меняется.Зачем
Современный
cryptography(>=3.5) требует Rust тулчейн для сборки из исходников, из-за чего проект тяжело поставить на embedded. В моем случае это Entware на роутерах (Keenetic / OpenWrt с USB),На таких системах уже есть OpenSSL'овский
libcrypto, и его переиспользование черезctypesполностью убирает требование к Rust, не трогая десктопный путь.Изменения
proxy/_aes.py—try: from cryptography ... except ImportError: ctypes-обёртка над libcrypto.proxy/tg_ws_proxy.pyиproxy/bridge.pyпереключены сcryptography.hazmat.primitives.ciphersнаproxy._aes.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
[PR #894] [MERGED] Используем системный libcrypto как fallback, если cryptography недоступенto [PR #894] Используем системный libcrypto как fallback, если cryptography недоступен[PR #894] Используем системный libcrypto как fallback, если cryptography недоступенto [PR #894] [MERGED] Используем системный libcrypto как fallback, если cryptography недоступен