diff --git a/remnawave/utils/happ_crypt.py b/remnawave/utils/happ_crypt.py index 972f670..1972704 100644 --- a/remnawave/utils/happ_crypt.py +++ b/remnawave/utils/happ_crypt.py @@ -1,4 +1,5 @@ import base64 +from typing import Literal from cryptography.hazmat.primitives import hashes, serialization from cryptography.hazmat.primitives.asymmetric import padding @@ -20,10 +21,32 @@ VE0tje7twWXL5Gb1sfcXRzsCAwEAAQ== -----END PUBLIC KEY----- """ +HAPP_PUBLIC_KEY_V4 = b""" +-----BEGIN PUBLIC KEY----- +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA3UZ0M3L4K+WjM3vkbQnz +ozHg/cRbEXvQ6i4A8RVN4OM3rK9kU01FdjyoIgywve8OEKsFnVwERZAQZ1Trv60B +hmaM76QQEE+EUlIOL9EpwKWGtTL5lYC1sT9XJMNP3/CI0gP5wwQI88cY/xedpOEB +W72EmOOShHUm/b/3m+HPmqwc4ugKj5zWV5SyiT829aFA5DxSjmIIFBAms7DafmSq +LFTYIQL5cShDY2u+/sqyAw9yZIOoqW2TFIgIHhLPWek/ocDU7zyOrlu1E0SmcQQb +LFqHq02fsnH6IcqTv3N5Adb/CkZDDQ6HvQVBmqbKZKf7ZdXkqsc/Zw27xhG7OfXC +tUmWsiL7zA+KoTd3avyOh93Q9ju4UQsHthL3Gs4vECYOCS9dsXXSHEY/1ngU/hjO +WFF8QEE/rYV6nA4PTyUvo5RsctSQL/9DJX7XNh3zngvif8LsCN2MPvx6X+zLouBX +zgBkQ9DFfZAGLWf9TR7KVjZC/3NsuUCDoAOcpmN8pENBbeB0puiKMMWSvll36+2M +YR1Xs0MgT8Y9TwhE2+TnnTJOhzmHi/BxiUlY/w2E0s4ax9GHAmX0wyF4zeV7kDkc +vHuEdc0d7vDmdw0oqCqWj0Xwq86HfORu6tm1A8uRATjb4SzjTKclKuoElVAVa5Jo +oh/uZMozC65SmDw+N5p6Su8CAwEAAQ== +-----END PUBLIC KEY----- +""" -def create_happ_crypto_link(content: str) -> str: + + +def create_happ_crypto_link(content: str, method: Literal["v3", "v4"] = "v4") -> str: try: - public_key = serialization.load_pem_public_key(HAPP_PUBLIC_KEY_V3) + happ_methods = { + "v3": HAPP_PUBLIC_KEY_V3, + "v4": HAPP_PUBLIC_KEY_V4, + } + public_key = serialization.load_pem_public_key(happ_methods[method.lower()]) encrypted = public_key.encrypt( content.encode("utf-8"), padding.PKCS1v15() # RSA_PKCS1_PADDING