package rsa import ( "crypto" "crypto/rand" "crypto/rsa" "crypto/sha256" "encoding/base64" ) func Sign(data string, privateKey *rsa.PrivateKey) (string, error) { hashed := sha256.Sum256([]byte(data)) signature, err := rsa.SignPKCS1v15(rand.Reader, privateKey, crypto.SHA256, hashed[:]) if err != nil { return "", err } return base64.StdEncoding.EncodeToString(signature), nil } func Verify(data string, signature string, publicKey *rsa.PublicKey) (bool, error) { signatureBytes, err := base64.StdEncoding.DecodeString(signature) if err != nil { return false, err } hashed := sha256.Sum256([]byte(data)) err = rsa.VerifyPKCS1v15(publicKey, crypto.SHA256, hashed[:], signatureBytes) if err != nil { return false, nil } return true, nil }