| 94 | } |
| 95 | |
| 96 | func NewECDH() *SM2ECDH { |
| 97 | var err error |
| 98 | var s SM2ECDH |
| 99 | s.prvK, err = ecdh.P256().GenerateKey(rand.Reader) |
| 100 | if err != nil { |
| 101 | return nil |
| 102 | } |
| 103 | copy(s.PrivKey[:], s.prvK.Bytes()) |
| 104 | copy(s.PubKey[:], s.prvK.PublicKey().Bytes()[1:1+PublicKeySize]) |
| 105 | s.PrivKeyBase64 = base64.StdEncoding.EncodeToString(s.PrivKey[:]) |
| 106 | s.PubKeyBase64 = base64.StdEncoding.EncodeToString(s.PubKey[:]) |
| 107 | s.BriefName = fmt.Sprintf("%s...%s", s.PubKeyBase64[0:4], s.PubKeyBase64[39:43]) |
| 108 | return &s |
| 109 | } |
| 110 | |
| 111 | // Generate SM2 public and private key pairs for ECDH. |
| 112 | func GenerateSM2ECDHKeypair() (string, string) { |