【发布时间】:2021-03-23 17:20:46
【问题描述】:
我有以下代码要签名,我遇到的问题是要签名的数据正在通过网络发送,我需要在另一个函数上处理它,但我不确定什么类型的编码或散列有吗?
CMSSignedDataGenerator signGenerator = new CMSSignedDataGenerator();
X509Certificate userCert = (X509Certificate) this.certificateChain[0];
ContentSigner mySigner = new CustomSigner(invoke,String.valueOf(userCert.getSerialNumber()),sad);
signGenerator.addSignerInfoGenerator(
new JcaSignerInfoGeneratorBuilder(new JcaDigestCalculatorProviderBuilder().build())
.build(mySigner, userCert));
signGenerator.addCertificates(new JcaCertStore(Arrays.asList(certificateChain)));
CMSProcessableInputStream msg = new CMSProcessableInputStream(content);
CMSSignedData signedData = signGenerator.generate(msg, false);
return signedData.getEncoded();
充气城堡向签名发送什么内容?它采用什么编码?我在另一边收到以下内容
MYGYMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIxMDMyMzE3MTA0NVowLQYJKoZIhvcNAQk0MSAwHjANBglghkgBZQMEAgEFAKENBgkqhkiG9w0BAQsFADAvBgkqhkiG9w0BCQQxIgQgpJ/2Sz3j0sp6iqVKmyednqFjZ87SYEYhScT0sSKtHPU=
【问题讨论】:
-
它是 base64。它解码为一些嵌入了 ASCII 数字的二进制数据。
-
但是你是否知道它是被签名数据的哈希值还是?
-
那个 blob 绝对不是 CMS SignedData“分离”签名,这是 Bouncy CMSSignedDataGenerator.generate(,false) 返回的。它看起来像是来自 SignerInfo 的重新构建(使用标记 0x31 而不是 0xa0)SignedAttrs,在签名内部使用,因此也是验证过程
标签: java pdfbox bouncycastle