51 lines
1.0 KiB
Go
51 lines
1.0 KiB
Go
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
|
|
}
|