package sm import ( "encoding/base64" "encoding/hex" "fmt" "github.com/tjfoc/gmsm/sm2" "github.com/tjfoc/gmsm/x509" ) func PrivateKeySM(privateKeyStr string) (*sm2.PrivateKey, error) { keyBytes, err := base64.StdEncoding.DecodeString(privateKeyStr) if err != nil { return nil, fmt.Errorf("privateKey base64 decode failed: %v", err) } privateKey, err := x509.ReadPrivateKeyFromHex(hex.EncodeToString(keyBytes)) if err != nil { return nil, fmt.Errorf("read private key from hex failed: %v", err) } return privateKey, nil } func PublicKeySM(publicKeyStr string) (*sm2.PublicKey, error) { keyBytes, err := base64.StdEncoding.DecodeString(publicKeyStr) if err != nil { return nil, fmt.Errorf("publicKeyStr base64 decode failed: %v", err) } publicKey, err := x509.ReadPublicKeyFromHex(hex.EncodeToString(keyBytes)) if err != nil { return nil, fmt.Errorf("read public key from hex failed: %v", err) } return publicKey, nil }