微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

openssl 相当于`ippsRSAVerify_PKCS1v15`

如何解决openssl 相当于`ippsRSAVerify_PKCS1v15`

我正在将一些使用 Intel IPP 库的代码移植到 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

当前实现使用带有 ippHashAlg_SHA1 hashAlg 参数的 ippsRSAVerify_PKCS1v15 调用。我曾尝试使用 OpenSSL 的 RSA_Verify,但没有成功。我想我没有给 RSA_Verify 正确类型的数据,但我很难理解 RSA 签名中的不同层。 OpenSSL 中是否有 IPP 函数的直接等效项,还是我应该使用 OpenSSL 更原始的函数自己重新实现更多步骤?

解决方法

因此,经过更多的实验,我意识到确实,ippsRSAVerify_PCKS1v15RSA_Verify 期望它们各自的 pMsgm 参数有不同的数据。 Intel 函数希望获得要签名/验证的整个消息,并在内部计算 SHA1 摘要(或其他摘要),而 OpenSSL 函数希望获得要签名/验证的消息的摘要,而不是原始消息本身.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。