C++ 相当于“ippsRSAVerify_PKCS1v15”的openssl`
我正在使用英特尔IPP库将一些代码移植到OpenSSL(苹果硅端口) 我有一些代码检查XML文件签名,如下所示:C++ 相当于“ippsRSAVerify_PKCS1v15”的openssl`,c++,c,openssl,intel-ipp,C++,C,Openssl,Intel Ipp,我正在使用英特尔IPP库将一些代码移植到OpenSSL(苹果硅端口) 我有一些代码检查XML文件签名,如下所示: <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315&
<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>
j/cpRUOeyAoW+xF+RzK5rizbWyA=
4dCoh+dB9/YY3pL1wWi6+3H5Z52A0R230A4RQRAJFHSYS5JNDXLYMC3VSZ7F2SO0O1AIFPISB5WR6OMULZVTH7STQSG+NCRIJ20ASCJI3REJ497QFECLD+Ko656UfW5aLwxOtG1BW1XVWXJ4eFbD5lgP2161Tw0wV2BdUJlnc=
似乎符合此规范:
当前实现使用带有
ippHashAlg_SHA1
hashAlg参数的调用。我曾尝试使用OpenSSL,但没有成功。我想我没有给RSA\u Verify
正确的数据类型,但是我很难理解RSA签名的不同层次。在OpenSSL中是否有IPP的直接等价物 函数,还是我应该自己使用OpenSSL更原始的函数重新实现更多步骤?因此,经过更多的实验,我意识到,ippsrverify\u PCKS1v15
和RSA\u Verify
对于各自的pMsg
和m
参数预期会有不同的数据。Intel函数希望获得要签名/验证的整个消息,并在内部计算SHA1摘要(或其他摘要),而OpenSSL函数希望获得要签名/验证的消息摘要,而不是原始消息本身