Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenSSL和Bouncy Castle CMS实现 我将一些代码从java移植到C++,注意到CMS生成的一些不同。在OpenSSL中,如果我使用CMS\u签名(X509*signcert,EVP\u PKEY*PKEY,堆栈(X509)*证书,BIO*data,unsigned int flags)并为PKEY提供与签名者证书的公钥不同的公钥signcert我得到了验证错误,这是正确的_Java_Openssl_Bouncycastle - Fatal编程技术网

OpenSSL和Bouncy Castle CMS实现 我将一些代码从java移植到C++,注意到CMS生成的一些不同。在OpenSSL中,如果我使用CMS\u签名(X509*signcert,EVP\u PKEY*PKEY,堆栈(X509)*证书,BIO*data,unsigned int flags)并为PKEY提供与签名者证书的公钥不同的公钥signcert我得到了验证错误,这是正确的

OpenSSL和Bouncy Castle CMS实现 我将一些代码从java移植到C++,注意到CMS生成的一些不同。在OpenSSL中,如果我使用CMS\u签名(X509*signcert,EVP\u PKEY*PKEY,堆栈(X509)*证书,BIO*data,unsigned int flags)并为PKEY提供与签名者证书的公钥不同的公钥signcert我得到了验证错误,这是正确的,java,openssl,bouncycastle,Java,Openssl,Bouncycastle,如果我对cmssignedatagenerator类执行相同的操作,我将获得无任何错误的SignedData。下面是代码示例: CMSSignedDataGenerator gen = new CMSSignedDataGenerator(); DigestCalculatorProvider dp = new JcaDigestCalculatorProviderBuilder().setProvider(CryptoUtils.BC).build(); JcaSignerInfoGenera

如果我对
cmssignedatagenerator
类执行相同的操作,我将获得无任何错误的SignedData。下面是代码示例:

CMSSignedDataGenerator gen = new CMSSignedDataGenerator();
DigestCalculatorProvider dp = new JcaDigestCalculatorProviderBuilder().setProvider(CryptoUtils.BC).build();
JcaSignerInfoGeneratorBuilder builder = new JcaSignerInfoGeneratorBuilder(dp);
ContentSigner signer = new JcaContentSignerBuilder(cert.getSigAlgName()).setProvider(CryptoUtils.BC).build(privateKey); 
gen.addSignerInfoGenerator(builder.build(signer, cert));
CMSSignedData s = gen.generate(msg, true);

在这个代码示例中,我使用的证书的公钥与私钥对象中的公钥不同,并且没有任何异常或验证错误。是否可以?

稍后,当您尝试使用其他工具(如OpenSSL)验证生成的CMS时,会发生什么情况?验证失败?我可以尝试测试这种情况。我更感兴趣的是为什么BC允许用错误的键生成CMS。