Windows从打开SSL php验证签名



我使用PHP使用openssl_sign对字符串进行签名。到目前为止一切顺利。

问题是我想要验证来自Windows的签名。为此,我将证书、消息和它的签名传递给windows应用程序。我如何使用cryptverifydetachedmessagesignsignature强制使用PHP代码使用的证书?

我试过了,但是它在PHP创建的签名上返回"asn1坏标记值满足"…

谢谢…

很难说,因为您还没有发布您的代码或示例签名/明文/密钥。但是,代替它,我将这样做(使用phpseclib):

<?php
include('Crypt/RSA.php');
$rsa = new Crypt_RSA();
//$rsa->setPassword('password');
$rsa->loadKey('...'); // private key
$plaintext = '...';
$rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
$signature = $rsa->sign($plaintext);
$rsa->loadKey('...'); // public key
echo $rsa->verify($plaintext, $signature) ? 'verified' : 'unverified';
?>

如果签名模式为PSS,则直接执行$rsa->setSignatureMode()(不带任何参数)。

如果签名和明文都在同一个blob中,则需要根据使用的文件格式将其分开

运气不好。我最后求助于openssl_pkcs7_sign,它输出一个S/MIME兼容的消息,我可以在Windows中处理。

最新更新