amazon-web-services - ECDSA 签名验证适用于 AWS KMS API,但不适用于使用 OpenSSL
问题描述
我正在尝试使用公钥和签名手动验证签名,但仍然失败。
当我尝试使用 AWS KMS API 时,它可以工作,
kms_boto3_client.verify(
KeyId=keyid,
Message=message,
MessageType='RAW',
Signature=signature,
SigningAlgorithm='ECDSA_SHA_256'
)
请注意,上面以字节格式提供签名,并且消息是 base64 编码的,这是 AWS 要求
Message: SGVsbG8K
签名:
b'0D\x02 zlb\xf4\xd5\x99\xa2\xcd)/\x0b\xf4-\xbf8\xef5\xdf\x80Q\x10\x86\x8bQ1|Y\xac\xd2JZ\xca\x02 C\xaa\xa8&\xa4|R\xf8%\x12uA\x19\xdc\xfdd\x9f(8-\xe6WG\xe7\xd5\xc2\xb5/\x88\xd7\x18\xea'
但是当我尝试使用 openssl 时,
openssl dgst -sha256 -verify public.pem -signature signature message
我收到以下错误,
Error Verifying Data
4415708844:error:0DFFF0A8:asn1 encoding routines:CRYPTO_internal:wrong tag:/System/Volumes/Data/SWE/macOS/BuildRoots/e90674e518/Library/Caches/com.apple.xbs/Sources/libressl/libressl-56.60.2/libressl-2.8/crypto/asn1/tasn_dec.c:1144:
4415708844:error:0DFFF03A:asn1 encoding routines:CRYPTO_internal:nested asn1 error:/System/Volumes/Data/SWE/macOS/BuildRoots/e90674e518/Library/Caches/com.apple.xbs/Sources/libressl/libressl-56.60.2/libressl-2.8/crypto/asn1/tasn_dec.c:317:Type=ECDSA_SIG
我不明白我做错了什么?
解决方案
推荐阅读
- xamarin.forms - Xamarin 表单 || 将相机源流式传输到 Web API
- ruby - phusion 乘客中的乘客最大请求队列大小在哪里
- jquery - 根据多个下拉选择从对象中获取相应的值
- kubernetes - Kubernetes image_pull_secrets 只使用来自同一命名空间的秘密,有没有其他方法不需要为所有命名空间创建秘密?
- excel - 计算文档中的行数,然后在另一个 excel 文件上打印该数字
- vba - eprime/vba 4个属性的最高值
- firebase - 如何从 Firebase 存储中读取 csv 数据?
- java - “AWT-EventQueue-0”java.lang.NullPointerException:无法调用“Toppings.addHam()”,因为“this.toppingOption”为空
- wordpress - 使用 Nginx 将 http 非 www 重定向到 https www
- python-3.x - Pandas read_excel 仅针对特定文件返回 xlrd 依赖错误