Files

21 lines
845 B
Plaintext

def make_signed_system_token(system_user_token: str, private_key_pem: str) -> str:
# 1) stamp in UTC like yyyyMMddHHmm
ts = datetime.now(timezone.utc).strftime("%Y%m%d%H%M")
to_sign = f"{system_user_token}.{ts}".encode("utf-8")
# 2) load your RSA private key (PEM, PKCS#1 or PKCS#8)
key = serialization.load_pem_private_key(
private_key_pem.encode("utf-8"), password=None
)
# 3) RSA-SHA256, PKCS#1 v1.5 padding, then Base64 (standard, not URL-safe)
signature = key.sign(to_sign, padding.PKCS1v15(), hashes.SHA256())
sig_b64 = base64.b64encode(signature).decode("ascii")
# 4) final SignedSystemToken
return f"{system_user_token}.{ts}.{sig_b64}"
# print(load_rsa_private_key_pem(PEM_STR)) # test loading key
print(make_signed_system_token(SYSTEM_USER_TOKEN, PEM_STR))