我想在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 關注
- 405 瀏覽
添加回答
舉報
0/150
提交
取消