无法通过Web Crypto API验证ECDSA SHA-256签名求助
ECDSA SHA-256签名验证异常:Web Crypto API验证失败,OpenSSL可正常通过
我尝试通过Web Crypto API验证ECDSA SHA-256签名,但始终无法通过验证;然而使用OpenSSL命令却能正常完成签名验证。
我的验证代码如下:
export async function verifySignature( requestData: string, receivedSignature: string, publicKey: string ): Promise<boolean> { try { const textEncoder = new TextEncoder(); const digest = await crypto.subtle.digest('SHA-256', textEncoder.encode(requestData)); // using digest // Import the public key if (importedKey == null) { importedKey = await crypto.subtle.importKey( 'spki', stringToArrayBuffer(atob(publicKey)), { name: 'ECDSA', namedCurve: 'P-256' }, true, ['verify'] ); } // Verify the signature const isValid = await crypto.subtle.verify( { name: 'ECDSA', hash: 'SHA-256' }, importedKey, stringToArrayBuffer(atob(receivedSignature)), digest ); return isValid; } catch (error) { console.error('Error verifying signature:', error); return false; } }
可正常验证的OpenSSL命令:openssl dgst -sha256 -verify public.pem -signature signature.der data.txt
内容的提问来源于stack exchange,提问作者Suman Maharjan
相关产品推荐
相关产品推荐

