1234567891011121314151617181920212223242526272829 |
- // Copyright 2021 Tencent Inc. All rights reserved.
- package utils
- import (
- "crypto"
- "crypto/rand"
- "crypto/rsa"
- "encoding/base64"
- "fmt"
- )
- // SignSHA256WithRSA 通过私钥对字符串以 SHA256WithRSA 算法生成签名信息
- func SignSHA256WithRSA(source string, privateKey *rsa.PrivateKey) (signature string, err error) {
- if privateKey == nil {
- return "", fmt.Errorf("private key should not be nil")
- }
- h := crypto.Hash.New(crypto.SHA256)
- _, err = h.Write([]byte(source))
- if err != nil {
- return "", nil
- }
- hashed := h.Sum(nil)
- signatureByte, err := rsa.SignPKCS1v15(rand.Reader, privateKey, crypto.SHA256, hashed)
- if err != nil {
- return "", err
- }
- return base64.StdEncoding.EncodeToString(signatureByte), nil
- }
|