Generate SM2 public and private key pairs for ECDH.
()
| 110 | |
| 111 | // Generate SM2 public and private key pairs for ECDH. |
| 112 | func GenerateSM2ECDHKeypair() (string, string) { |
| 113 | var err error |
| 114 | var pubKey [64]byte |
| 115 | var privKey [32]byte |
| 116 | |
| 117 | pKey, err := ecdh.P256().GenerateKey(rand.Reader) |
| 118 | if err != nil { |
| 119 | return "", "" |
| 120 | } |
| 121 | copy(privKey[:32], pKey.Bytes()[:32]) // Private Key 32 bytes |
| 122 | copy(pubKey[:64], pKey.PublicKey().Bytes()[1:65]) // Public Key 64 bytes |
| 123 | |
| 124 | return base64.StdEncoding.EncodeToString(pubKey[:]), |
| 125 | base64.StdEncoding.EncodeToString(privKey[:]) |
| 126 | } |
| 127 | |
| 128 | func Base64DecodeSM2ECDHPrivateKey(privStr string) (*ecdh.PrivateKey, error) { |
| 129 | privKeyBytes, err := base64.StdEncoding.DecodeString(privStr) |