[英]Verify signature generated with RSA 2048-bit key, SHA256 algorithm and PKCSv1.5 padding
[英]Verify Key-Store Generated Signature at ethers
我在 android 密钥库中创建了一个密钥对。 现在我有了公钥(DER 格式)并生成了一个签名(DER 格式)。 现在我正试图在 ethers 上进行验证。
但我做不到。 (签名生成的公钥不匹配)
我试过像这样从 Der 签名中获取 r,s。
DER Sign (0x30 size 20/21 r size 20/21 v) // strip zeros if 21
和这样的 DER 编码公钥的未压缩公钥。
30 59 # Sequence length 0x59 - 91 bytes long
30 13 # Sequence length 0x13 - 21 bytes long
06 07 2a8648ce3d0201 # Object ID - 7 bytes long - 1.2.840.10045.2.1 (ECC)
06 08 2a8648ce3d030107 # Object ID - 8 bytes long - 1.2.840.10045.3.1.7 (ECDSA P256)
03 42 # Bit stream - 0x42 (66 bytes long)
0004 # Identifies public key
2927b10512bae3eddcfe467828128bad2903269919f7086069c8c4df6c732838 # Identifies public key x co-ordinate
c7787964eaac00e5921fb1498a60f4606766b3d9685001558d1a974e7341513e # Identifies public key y co-ordinate
现在在以太坊验证
我的标志:r||s||00 或 r||s||01
我的公钥 0x04 || x线|| Y线
但是在 ethers 从给定的签名和数据生成的公钥与解码的公钥不匹配。
那我哪里做错了?
android 密钥存储中使用的曲线是secp256r1
(也称为p256
),但 ethers 使用secp256k1
,这是一种使用不同曲线的变体。 将曲线从secp256k1
更改为secp256r1
将解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.