首页 > 解决方案 > 使用 EC 和 P-256K 创建的 Azure Keyvault 密钥,签名不适用于 64 字节字符串

问题描述

我使用 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 字节的字符串签名。

标签: cryptographybase64azure-keyvaultbitcoinsecp256k1

解决方案


推荐阅读