0
我有一個PDF文件,我用這個代碼簽署這個文件:使用BouncyCastle的,以生成簽名的文件
certificate = (X509Certificate) loadKeyStore(certificateFile, password).getCertificate(alias);
privateKey = (PrivateKey) loadKeyStore(certificateFile, password).getKey(alias, alias.toCharArray());
Security.addProvider(new BouncyCastleProvider());
BufferedInputStream inFile = new BufferedInputStream(new FileInputStream(origem));
byte[] dates = new byte[inFile.available()];
entrada.read(dates);
entrada.close();
CMSSignedDataGenerator genetateSign = new CMSSignedDataGenerator();
geradorAss.addSigner(privateKey, certificate, CMSSignedDataGenerator.DIGEST_SHA1);
List certList = new ArrayList();
certList.add(certificate);
CertStore certs = CertStore.getInstance("Collection", new CollectionCertStoreParameters(certList));
geradorAss.addCertificatesAndCRLs(certs);
// Efetivamente assinar os dados de entrada
CMSProcessable content = new CMSProcessableByteArray(dates);
String providerName;
if (ks.getType().equalsIgnoreCase("JKS")) {
providerName = BouncyCastleProvider.PROVIDER_NAME;
} else {
providerName = ks.getProvider().getName();
}
CMSSignedData signedDate = genetateSign.generate(content, providerName);
signedDate = new CMSSignedData(content, signedDate.getEncoded());
File f = Converter.converter("signedFile.pdf", signedDate.getEncoded());
但是,文件F對讀者沒有打開。當我拿到文件f並運行此代碼:
CMSSignedData data = new CMSSignedData(new FileInputStream(f));
出現此錯誤:
org.bouncycastle.cms.CMSException: Malformed content.
有人能幫助我嗎?
總結:
我需要簽署後生成最終文件。例如,我有一個test.pdf文件,我想簽署並生成test_signed.pdf文件。而這個test_signed.pdf文件必須有簽名,並且應該仍然可以在你的閱讀器中閱讀。
我等着......