我正在使用 Azure 密钥保管库来创建和存储我的 Secp256k1 密钥。我还使用 sign API 来对我的输入字符串进行签名。我正在开发一个 Secp256K1 区块链网络。这些是我在 Golang 中获取签名所遵循的步骤。
- 将我的十六进制字符串转换为字节 []
- 这个 Byte[] 的 Sha256
- 此 Sha 的 RawURL 编码。
b64.RawURLEncoding.EncodeToString(sha)
- 将此发送到 Key Vault 以供签名。
- 使用 RawURLEncoding 解码响应。
b64.RawURLEncoding.DecodeString(*keyOpsResp.Result)
- 对第 5 步返回的 []Byte 数组进行十六进制处理。
- 将签名发送到区块链。
我面临的问题是签名有时无效。就像 2/5 次它有效,而其他时候签名验证失败。我在想我缺少一些特殊的字符或填充物。我该如何解决这个问题?
PS:Azure 使用非确定性签名,而链通常使用确定性签名。我做了一些阅读,发现对于验证来说,两者都可以成功验证并不重要。让我知道我是否错了。