簡體   English   中英

在 ethers 驗證密鑰存儲生成的簽名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM