Files
chisup/app/chis/crypto.py
T
2026-07-05 11:01:30 +08:00

25 lines
698 B
Python

import binascii
from gmssl import sm2
class ChisCryptoError(Exception):
"""Raised when CHIS crypto cannot encrypt a required field."""
def sm2_encrypt(public_key, raw_text):
if not public_key:
raise ChisCryptoError("CHIS public key is not configured")
key = public_key
if len(key) > 64 * 2:
key = key[-64 * 2 :]
try:
text_bytes = str(raw_text).encode("utf-8")
crypt_sm2 = sm2.CryptSM2(public_key=key, private_key="", mode=0)
encrypted = crypt_sm2.encrypt(text_bytes)
return "04" + binascii.hexlify(encrypted).decode("utf-8")
except Exception as exc:
raise ChisCryptoError("CHIS SM2 encryption failed") from exc