相当于 `ippsRSAVerify_PKCS1v15` 的 openssl
openssl equivalent to `ippsRSAVerify_PKCS1v15`
我正在使用 Intel IPP lib 将一些代码移植到 OpenSSL(Apple Silicon 端口)。
我有一些代码检查 XML 文件签名,如下所示:
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>j/cpRUOeyAoW+xF+RzK5rizbWyA=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>4dCoh+dB9/YY3pL1wWi6+3h5z52a0R230a4RQraJJFHSys5jndXlYMC3vSz7f2SO0o1AiYFPiSB5wr6OMUlzvTH7StQsG+NcRIJ2OaScjI3rEj497qfeCld+Ko656UfW5aLwxOtG1BW1XVWXJ4eFbD5lgP2161Tw0wV2BdUJlnc=</SignatureValue>
</Signature>
似乎遵循此规范:https://www.w3.org/TR/xmldsig-core1/#sec-PKCS1
当前的实现使用了对 ippsRSAVerify_PKCS1v15
with the ippHashAlg_SHA1
hashAlg argument. I have tried to use OpenSSL’s RSA_Verify
的调用,但没有成功。我想我没有提供 RSA_Verify
正确的数据类型,但我很难理解 RSA 签名中的不同层。 OpenSSL 中是否有直接等效的 IPP 函数,或者我应该使用 OpenSSL 更原始的函数自己重新实现更多步骤?
所以经过更多的试验,我意识到 ippsRSAVerify_PCKS1v15
和 RSA_Verify
确实期望它们各自的 pMsg
和 m
参数有不同的数据。 Intel 函数希望将整个消息提供给 sign/verify,并在内部计算 SHA1 摘要(或其他摘要),而 OpenSSL 函数希望将消息的摘要提供给 sign/verify,而不是原始消息本身。
我正在使用 Intel IPP lib 将一些代码移植到 OpenSSL(Apple Silicon 端口)。
我有一些代码检查 XML 文件签名,如下所示:
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>j/cpRUOeyAoW+xF+RzK5rizbWyA=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>4dCoh+dB9/YY3pL1wWi6+3h5z52a0R230a4RQraJJFHSys5jndXlYMC3vSz7f2SO0o1AiYFPiSB5wr6OMUlzvTH7StQsG+NcRIJ2OaScjI3rEj497qfeCld+Ko656UfW5aLwxOtG1BW1XVWXJ4eFbD5lgP2161Tw0wV2BdUJlnc=</SignatureValue>
</Signature>
似乎遵循此规范:https://www.w3.org/TR/xmldsig-core1/#sec-PKCS1
当前的实现使用了对 ippsRSAVerify_PKCS1v15
with the ippHashAlg_SHA1
hashAlg argument. I have tried to use OpenSSL’s RSA_Verify
的调用,但没有成功。我想我没有提供 RSA_Verify
正确的数据类型,但我很难理解 RSA 签名中的不同层。 OpenSSL 中是否有直接等效的 IPP 函数,或者我应该使用 OpenSSL 更原始的函数自己重新实现更多步骤?
所以经过更多的试验,我意识到 ippsRSAVerify_PCKS1v15
和 RSA_Verify
确实期望它们各自的 pMsg
和 m
参数有不同的数据。 Intel 函数希望将整个消息提供给 sign/verify,并在内部计算 SHA1 摘要(或其他摘要),而 OpenSSL 函数希望将消息的摘要提供给 sign/verify,而不是原始消息本身。