package kyc import ( "encoding/base64" "encoding/json" "errors" "nixcn-cms/internal/cryptography" "github.com/spf13/viper" ) func EncodeB64Json(b64Json string) (*string, error) { rawJson, err := base64.StdEncoding.DecodeString(b64Json) if err != nil { return nil, errors.New("invalid base64 json") } var kyc KycInfo if err := json.Unmarshal(rawJson, &kyc); err != nil { return nil, errors.New("invalid json structure") } plainJson, err := json.Marshal(kyc) if err != nil { return nil, err } aesKey := viper.GetString("secrets.kyc_info_key") encrypted, err := cryptography.AESCBCEncrypt(plainJson, []byte(aesKey)) if err != nil { return nil, err } return &encrypted, nil } func DecodeAES(cipherStr string) (*KycInfo, error) { aesKey := viper.GetString("secrets.kyc_info_key") plainBytes, err := cryptography.AESCBCDecrypt(cipherStr, []byte(aesKey)) if err != nil { return nil, err } var kyc KycInfo if err := json.Unmarshal(plainBytes, &kyc); err != nil { return nil, errors.New("invalid decrypted json") } return &kyc, nil }