我使用 EC 和 P-256K 参数在 azure key vault 中创建了一个密钥。我在我的应用程序中使用 Azure go-lang sdk。当我调用如下符号函数时:
func getSignature(basicClient keyvault.BaseClient, test string){
keyOpsResp, err :=basicClient.Sign(
context.Background(),
"https://"+os.Getenv("KVAULT_NAME")+".vault.azure.net",
"Test007",
"",
keyvault.KeySignParameters{
Algorithm: keyvault.ECDSA256,
// 32 Bytes - base 64url string
Value: &test,
})
// Result - READ-ONLY; a URL-encoded base64 string
fmt.Println(*keyOpsResp.Result)
fmt.Println("Error => ",err)
}
Value: &test
这里 test(base64 url encoded) 是我想要签名的字符串。如果字符串为 32 字节,则签名工作正常,因为我需要签署 64 字节字符串。(为我的学校项目模仿比特币之类的东西。)这是我得到的错误顺便说一句:
keyvault.BaseClient#Sign: Failure responding to request: StatusCode=400 -- Original Error: autorest/azure: Service returned an error. Status=400 Code="BadParameter" Message="Invalid length of 'value': 64 bytes. ECDSA256 requires 32 bytes, encoded with base64url."
我在这里遗漏了什么吗,有没有办法可以得到一个 64 字节的字符串签名。