import base64, http_ece
from cryptography.hazmat.primitives.asymmetric import ec

def b64d(s): return base64.urlsafe_b64decode(s + "=" * (-len(s) % 4))

CIPHERTEXT = ("DGv6ra1nlYgDCS1FRnbzlwAAEABBBP4z9KsN6nGRTbVYI_c7VJSPQTBtkgcy27ml"
              "mlMoZIIgDll6e3vCYLocInmYWAmS6TlzAC8wEqKK6PBru3jl7A_yl95bQpu6cVPT"
              "pK4Mqgkf1CXztLVBSt2Ks3oZwbuwXPXLWyouBWLVWGNWQexSgSxsj_Qulcy4a-fN")
AUTH = "BTBZMqHH6r4Tts7J_aSIgg"
RECV_PRIV = "q1dXpw3UpT5VOmu_cf_v6ih07Aems3njxI-JWgLcM94"
EXPECT = b"When I grow up, I want to be a watermelon"

body = b64d(CIPHERTEXT)
print("ciphertext len:", len(body), "(RFC says Content-Length: 145)")

priv_int = int.from_bytes(b64d(RECV_PRIV), "big")
priv = ec.derive_private_key(priv_int, ec.SECP256R1())

pt = http_ece.decrypt(body, private_key=priv, auth_secret=b64d(AUTH), version="aes128gcm")
print("decrypted:", pt)
print("MATCH:", pt == EXPECT)
