new JcePublicKeyDataDecryptorFactoryBuilder().setProvider(BouncyCastleProvider.PROVIDER_NAME).build(sKey)); JcaPGPObjectFactory pgpFact = new JcaPGPObjectFactory(clear);
new JcePublicKeyDataDecryptorFactoryBuilder().setProvider("BC").build(sKey));
final PublicKeyDataDecryptorFactory dataDecryptor = new JcePublicKeyDataDecryptorFactoryBuilder().setProvider(provider).build(privateKey); try (InputStream clear = encData.getDataStream(dataDecryptor)) {
new JcePublicKeyDataDecryptorFactoryBuilder().setProvider(BouncyCastleProvider.PROVIDER_NAME).build(sKey)); JcaPGPObjectFactory pgpFact = new JcaPGPObjectFactory(clear);
private DecryptedDataAndPPublicKeyEncryptedData getDecryptedData(Exchange exchange, InputStream encryptedStream) throws Exception, PGPException { PGPObjectFactory pgpFactory = new PGPObjectFactory(encryptedStream, new BcKeyFingerprintCalculator()); Object firstObject = pgpFactory.nextObject(); // the first object might be a PGP marker packet PGPEncryptedDataList enc = getEcryptedDataList(pgpFactory, firstObject); if (enc == null) { throw getFormatException(); } PGPPublicKeyEncryptedData pbe = null; PGPPrivateKey key = null; // find encrypted data for which a private key exists in the secret key ring for (int i = 0; i < enc.size() && key == null; i++) { Object encryptedData = enc.get(i); if (!(encryptedData instanceof PGPPublicKeyEncryptedData)) { throw getFormatException(); } pbe = (PGPPublicKeyEncryptedData) encryptedData; key = secretKeyAccessor.getPrivateKey(exchange, pbe.getKeyID()); if (key != null) { // take the first key break; } } if (key == null) { throw new PGPException("PGP message is encrypted with a key which could not be found in the Secret Keyring."); } InputStream encData = pbe.getDataStream(new JcePublicKeyDataDecryptorFactoryBuilder().setProvider(getProvider()).build(key)); return new DecryptedDataAndPPublicKeyEncryptedData(encData, pbe); }
final PublicKeyDataDecryptorFactory dataDecryptor = new JcePublicKeyDataDecryptorFactoryBuilder().setProvider(provider).build(privateKey); try (InputStream clear = encData.getDataStream(dataDecryptor)) {