为了账号安全,请及时绑定邮箱和手机立即绑定

使用 GO 进行 AWS SNS 签名验证

使用 GO 进行 AWS SNS 签名验证

Go
HUH函数 2021-07-07 09:22:25
我想在GO中实现AWS SNS签名验证。这里是AWS提供的签名验证教程。但是,有一些点我无法理解。7:生成 Amazon SNS 消息的派生哈希值。将规范格式的 Amazon SNS 消息提交到用于生成签名的相同哈希函数。如何导出哈希值?我应该使用哪个哈希函数?8:生成 Amazon SNS 消息的断言哈希值。断言的哈希值是使用公钥值(来自第 3 步)解密与 Amazon SNS 消息一起交付的签名的结果。如何获得断言的哈希值?这是我的代码,我有一个通知结构:type Notification struct {    Message          string    MessageId        string    Signature        string    SignatureVersion string    SigningCertURL   string    SubscribeURL     string    Subject          string    Timestamp        string    TopicArn         string    Type             string    UnsubscribeURL   string}我已经生成了规范字符串:    signString := fmt.Sprintf(`Message%vMessageId%v`, self.Message, self.MessageId)    if self.Subject != "" {        signString = signString + fmt.Sprintf(`Subject%v`, self.Subject)    }    signString = signString + fmt.Sprintf(`Timestamp%vTopicArn%vType%v`, self.Timestamp, self.TopicArn, self.Type)从 base64 解码签名signed, err := base64.StdEncoding.DecodeString(self.Signature)从 .pem 获取证书resp, _ := http.Get(self.SigningCertURL)defer resp.Body.Close()body, _ := ioutil.ReadAll(resp.Body)p, _ := pem.Decode(body)cert, err := x509.ParseCertificate(p.Bytes)现在,如何使用规范字符串验证签名?下面的代码对吗?cert.CheckSignature(x509.SHA1WithRSA, signed, []byte(signString))我总是crypto/rsa: verification error从上面的代码中得到。
查看完整描述

1 回答

  • 1 回答
  • 1 关注
  • 371 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信