feat: Add support happ crypt version 4 (happ://crypt4)

This commit is contained in:
Artem 2025-12-04 03:03:09 +01:00
parent f1503b2fda
commit 577ac6f4ff
No known key found for this signature in database
GPG key ID: 833485276B7902CE

View file

@ -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