function, given the hashed token, and signature it will validate the signature using a public key.
func verify(token, b64Sig []byte, pubKey *rsa.PublicKey) error {
hash := sha256.New()
if _, err := bytes.NewReader(token).WriteTo(hash); err != nil {
return fmt.Errorf("unable to hash signed token, %s", err.Error())
}
decodedSig, err := base64.StdEncoding.DecodeString(string(b64Sig))
if err != nil {
return fmt.Errorf("unable to decode base64 signature, %s", err.Error())
}
if err := rsa.VerifyPKCS1v15(pubKey, crypto.SHA256, hash.Sum(nil), decodedSig); err != nil {
return fmt.Errorf("unable to verify signature, %s", err.Error())
}
return nil
}