我想在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
提交
取消