私は1つのプロジェクトで問題に直面しています。BouncyCastleでデジタル署名を作成しようとしています。 。ここで実装の構築中にエラーが発生する(アルゴリズム:コレクション、プロバイダー:BC、クラス:org.bouncycastle.jce.provider.CertStoreCollectionSpi)
は、私が実行しているコードです:
Statement stmt_cert = conn.createStatement();
ResultSet rs_cert= stmt_cert.executeQuery("select c.ca, c.privk from certs c where num_tab="+stat_cert);
rs_cert.next();
castr = rs_cert.getString("ca") + "\n";
strPriv = rs_cert.getString("privk") + "\n" ;
rs_cert.close();
stmt_cert.close();
byte[] encKey = castr.getBytes();
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate caCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(encKey));
PEMReader pr = new PEMReader(new StringReader(strPriv));
Object obj = pr.readObject();
KeyPair kp = (KeyPair) obj;
PrivateKey privateKey = kp.getPrivate();
Certificate[] chain =new Certificate[]{caCert};
byte[] plainText = digest.getBytes("UTF8");
CertStore certs =null;
ArrayList certList = new ArrayList();
try{
for (int i = 0; i < chain.length;i++)
{
result += chain[i];
certList.add(chain[i]);
}
certs = CertStore.getInstance("Collection", new CollectionCertStoreParameters(certList), "BC");
}
catch(Exception exc){
result += "Problem with keystore access: " + exc.toString() ;
InsErr_log.Insert_error(1000,"Error when generate Signature of Statements",result);
return result;
}
// --- Use Bouncy Castle provider to create CSM/PKCS#7 signed message ---
try{
CMSSignedDataGenerator signGen = new CMSSignedDataGenerator();
signGen.addSigner(privateKey, (X509Certificate)caCert, CMSSignedDataGenerator.DIGEST_SHA1);
signGen.addCertificatesAndCRLs(certs);
CMSProcessable content = new CMSProcessableByteArray(plainText);
CMSSignedData signedData = signGen.generate(content,"BC");
byte[] signeddata = signedData.getEncoded();
result += "Created signed message: " + signeddata.length + " bytes" ;
result += new String(signeddata,"UTF8");
}
catch(Exception ex){
result = "Couldn't generate CMS signed message\n" + ex.toString() ;
}
問題は、このコード行から来ている:
certs = CertStore.getInstance("Collection", new CollectionCertStoreParameters(certList), "BC");
、ここではエラーです:
Problem with keystore access: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Collection, provider: BC, class: org.bouncycastle.jce.provider.CertStoreCollectionSpi)
私は」初心者ですので、私と一緒にご負担ください、どんな情報も高く評価されます!
コメントを外して次の行を使用して動作させました。 CertStore certs = s.getCertificatesAndCRLs( "Collection"、 "BC"); CertStore certs = CertStore.getInstance( "Collection"、ccsp、 "BC"); ではなく、 このメソッドは廃止されましたが、少なくとも機能することを示しています。 – Tsonev