php、openssl和GOST

php、openssl和GOST,php,openssl,digital-signature,pkcs#7,gost3410,Php,Openssl,Digital Signature,Pkcs#7,Gost3410,我正在尝试使用PHP签署一个S/MIME,使用一对GOST加密证书和一个私钥 从控制台使用openssl本身时,一切正常: /usr/local/openssl/bin/openssl cms -sign -in file.txt -out signedfile.txt -signer p12.pem (signedfile.txt is created) /usr/local/openssl/bin/openssl cms -verify -in signedfile.txt -out si

我正在尝试使用PHP签署一个S/MIME,使用一对GOST加密证书和一个私钥

从控制台使用openssl本身时,一切正常:

/usr/local/openssl/bin/openssl cms -sign -in file.txt -out signedfile.txt -signer p12.pem
(signedfile.txt is created)

/usr/local/openssl/bin/openssl cms -verify -in signedfile.txt -out signedddata.txt -no_signer_cert_verify -issuer_checks -ignore_critical
Verification successful
当使用PHP代码时,我有点被卡住了:

$res = openssl_pkcs7_sign("file.txt", "phpsignedfile.txt", 'file://'.realpath('./p12.pem'), 'file://'.realpath('./p12.pem'), array("To" => "foo@bar.com", "From: FooBar <foo@bar.com>", "Subject" => "Foo Bar"));

    if (!$res) {
        while ($msg = openssl_error_string())
            echo $msg . "<br />\n";
        echo "Failed to sign.\n"; exit;
    }
(请注意,这是默认的配置输出)


实际上有一组bug报告,都提到应该对ext/openssl/openssl.c进行修补;添加

OPENSSL_config(NULL);
在一套

SSL_library_init();
OpenSSL_add_all_ciphers();
OpenSSL_add_all_digests();

电话。在那之后,openssl开始与任何来自配置指向的openssl_CONF变量的引擎一起工作。

实际上有一组错误报告,所有这些报告都提到应该修补ext/openssl/openssl.c;添加

OPENSSL_config(NULL);
在一套

SSL_library_init();
OpenSSL_add_all_ciphers();
OpenSSL_add_all_digests();
电话。在这之后,openssl开始使用任何来自配置指向的openssl_CONF变量的引擎

SSL_library_init();
OpenSSL_add_all_ciphers();
OpenSSL_add_all_digests();