Java 类org.bouncycastle.openpgp.operator.PublicKeyDataDecryptorFactory 实例源码

项目:CryptMeme    文件:JcePublicKeyDataDecryptorFactoryBuilder.java   
public PublicKeyDataDecryptorFactory build(final PrivateKey privKey)
{
     return new PublicKeyDataDecryptorFactory()
     {
         public byte[] recoverSessionData(int keyAlgorithm, byte[][] secKeyData)
             throws PGPException
         {
             if (keyAlgorithm == PublicKeyAlgorithmTags.ECDH)
             {
                 throw new PGPException("ECDH requires use of PGPPrivateKey for decryption");
             }
             return decryptSessionData(keyAlgorithm, privKey, secKeyData);
         }

         public PGPDataDecryptor createDataDecryptor(boolean withIntegrityPacket, int encAlgorithm, byte[] key)
             throws PGPException
         {
             return contentHelper.createDataDecryptor(withIntegrityPacket, encAlgorithm, key);
         }
     };
}
项目:CryptMeme    文件:JcePublicKeyDataDecryptorFactoryBuilder.java   
public PublicKeyDataDecryptorFactory build(final PGPPrivateKey privKey)
{
     return new PublicKeyDataDecryptorFactory()
     {
         public byte[] recoverSessionData(int keyAlgorithm, byte[][] secKeyData)
             throws PGPException
         {
             if (keyAlgorithm == PublicKeyAlgorithmTags.ECDH)
             {
                 return decryptSessionData(privKey.getPrivateKeyDataPacket(), privKey.getPublicKeyPacket(), secKeyData);
             }

             return decryptSessionData(keyAlgorithm, keyConverter.getPrivateKey(privKey), secKeyData);
         }

         public PGPDataDecryptor createDataDecryptor(boolean withIntegrityPacket, int encAlgorithm, byte[] key)
             throws PGPException
         {
             return contentHelper.createDataDecryptor(withIntegrityPacket, encAlgorithm, key);
         }
     };
}
项目:irma_future_id    文件:JcePublicKeyDataDecryptorFactoryBuilder.java   
public PublicKeyDataDecryptorFactory build(final PrivateKey privKey)
{
     return new PublicKeyDataDecryptorFactory()
     {
         public byte[] recoverSessionData(int keyAlgorithm, BigInteger[] secKeyData)
             throws PGPException
         {
             return decryptSessionData(keyAlgorithm, privKey, secKeyData);
         }

         public PGPDataDecryptor createDataDecryptor(boolean withIntegrityPacket, int encAlgorithm, byte[] key)
             throws PGPException
         {
             return contentHelper.createDataDecryptor(withIntegrityPacket, encAlgorithm, key);
         }
     };
}
项目:irma_future_id    文件:JcePublicKeyDataDecryptorFactoryBuilder.java   
public PublicKeyDataDecryptorFactory build(final PGPPrivateKey privKey)
{
     return new PublicKeyDataDecryptorFactory()
     {
         public byte[] recoverSessionData(int keyAlgorithm, BigInteger[] secKeyData)
             throws PGPException
         {
             return decryptSessionData(keyAlgorithm, keyConverter.getPrivateKey(privKey), secKeyData);
         }

         public PGPDataDecryptor createDataDecryptor(boolean withIntegrityPacket, int encAlgorithm, byte[] key)
             throws PGPException
         {
             return contentHelper.createDataDecryptor(withIntegrityPacket, encAlgorithm, key);
         }
     };
}
项目:bc-java    文件:JcePublicKeyDataDecryptorFactoryBuilder.java   
public PublicKeyDataDecryptorFactory build(final PrivateKey privKey)
{
     return new PublicKeyDataDecryptorFactory()
     {
         public byte[] recoverSessionData(int keyAlgorithm, BigInteger[] secKeyData)
             throws PGPException
         {
             return decryptSessionData(keyAlgorithm, privKey, secKeyData);
         }

         public PGPDataDecryptor createDataDecryptor(boolean withIntegrityPacket, int encAlgorithm, byte[] key)
             throws PGPException
         {
             return contentHelper.createDataDecryptor(withIntegrityPacket, encAlgorithm, key);
         }
     };
}
项目:bc-java    文件:JcePublicKeyDataDecryptorFactoryBuilder.java   
public PublicKeyDataDecryptorFactory build(final PGPPrivateKey privKey)
{
     return new PublicKeyDataDecryptorFactory()
     {
         public byte[] recoverSessionData(int keyAlgorithm, BigInteger[] secKeyData)
             throws PGPException
         {
             return decryptSessionData(keyAlgorithm, keyConverter.getPrivateKey(privKey), secKeyData);
         }

         public PGPDataDecryptor createDataDecryptor(boolean withIntegrityPacket, int encAlgorithm, byte[] key)
             throws PGPException
         {
             return contentHelper.createDataDecryptor(withIntegrityPacket, encAlgorithm, key);
         }
     };
}
项目:jpgpj    文件:Decryptor.java   
/**
 * Builds a symmetric-encryption decryptor for the specified passphrase.
 */
protected PublicKeyDataDecryptorFactory buildPublicKeyDecryptor(
Subkey subkey) throws PGPException {
    PGPPrivateKey privateKey = subkey.getPrivateKey();
    if (privateKey == null)
        throw new PGPException("no private key for " + subkey);
    return new BcPublicKeyDataDecryptorFactory(privateKey);
}
项目:gwt-crypto    文件:PGPPublicKeyEncryptedData.java   
/**
 * Return the symmetric key algorithm required to decrypt the data protected by this object.
 *
 * @param dataDecryptorFactory   decryptor factory to use to recover the session data.
 * @return  the integer encryption algorithm code.
 * @throws PGPException if the session data cannot be recovered.
 */
public int getSymmetricAlgorithm(
    PublicKeyDataDecryptorFactory dataDecryptorFactory)
    throws PGPException
{
    byte[] plain = dataDecryptorFactory.recoverSessionData(keyData.getAlgorithm(), keyData.getEncSessionKey());

    return plain[0];
}
项目:CryptMeme    文件:PGPPublicKeyEncryptedData.java   
/**
 * Return the symmetric key algorithm required to decrypt the data protected by this object.
 *
 * @param dataDecryptorFactory   decryptor factory to use to recover the session data.
 * @return  the integer encryption algorithm code.
 * @throws PGPException if the session data cannot be recovered.
 */
public int getSymmetricAlgorithm(
    PublicKeyDataDecryptorFactory dataDecryptorFactory)
    throws PGPException
{
    byte[] plain = dataDecryptorFactory.recoverSessionData(keyData.getAlgorithm(), keyData.getEncSessionKey());

    return plain[0];
}
项目:irma_future_id    文件:PGPPublicKeyEncryptedData.java   
/**
 * Return the symmetric key algorithm required to decrypt the data protected by this object.
 *
 * @param dataDecryptorFactory   decryptor factory to use to recover the session data.
 * @return  the integer encryption algorithm code.
 * @throws PGPException if the session data cannot be recovered.
 */
public int getSymmetricAlgorithm(
    PublicKeyDataDecryptorFactory dataDecryptorFactory)
    throws PGPException
{
    byte[] plain = dataDecryptorFactory.recoverSessionData(keyData.getAlgorithm(), keyData.getEncSessionKey());

    return plain[0];
}
项目:irma_future_id    文件:PGPPublicKeyEncryptedData.java   
/**
 * Return the symmetric key algorithm required to decrypt the data protected by this object.
 *
 * @param dataDecryptorFactory   decryptor factory to use to recover the session data.
 * @return  the integer encryption algorithm code.
 * @throws PGPException if the session data cannot be recovered.
 */
public int getSymmetricAlgorithm(
    PublicKeyDataDecryptorFactory dataDecryptorFactory)
    throws PGPException
{
    byte[] plain = dataDecryptorFactory.recoverSessionData(keyData.getAlgorithm(), keyData.getEncSessionKey());

    return plain[0];
}
项目:bc-java    文件:PGPPublicKeyEncryptedData.java   
/**
 * Return the symmetric key algorithm required to decrypt the data protected by this object.
 *
 * @param dataDecryptorFactory   decryptor factory to use to recover the session data.
 * @return  the integer encryption algorithm code.
 * @throws PGPException if the session data cannot be recovered.
 */
public int getSymmetricAlgorithm(
    PublicKeyDataDecryptorFactory dataDecryptorFactory)
    throws PGPException
{
    byte[] plain = dataDecryptorFactory.recoverSessionData(keyData.getAlgorithm(), keyData.getEncSessionKey());

    return plain[0];
}
项目:bc-java    文件:PGPPublicKeyEncryptedData.java   
/**
 * Return the symmetric key algorithm required to decrypt the data protected by this object.
 *
 * @param dataDecryptorFactory   decryptor factory to use to recover the session data.
 * @return  the integer encryption algorithm code.
 * @throws PGPException if the session data cannot be recovered.
 */
public int getSymmetricAlgorithm(
    PublicKeyDataDecryptorFactory dataDecryptorFactory)
    throws PGPException
{
    byte[] plain = dataDecryptorFactory.recoverSessionData(keyData.getAlgorithm(), keyData.getEncSessionKey());

    return plain[0];
}
项目:subshare    文件:GnuPgTest.java   
@Test
public void encryptAndDecrypt() throws Exception {
    // both keys have property encryptionKey==true
    final String[] keyIds = {
            "d7a92a24aa97ddbd", // master-key
            "a58da7d810b74edf" // sub-key
    };

    for (final String keyId : keyIds) {
        final PGPDataEncryptorBuilder encryptorBuilder = new BcPGPDataEncryptorBuilder(SymmetricKeyAlgorithmTags.TWOFISH);
        final PGPEncryptedDataGenerator encryptedDataGenerator = new PGPEncryptedDataGenerator(encryptorBuilder);
        final PGPKeyEncryptionMethodGenerator keyEncryptionMethodGenerator = new BcPublicKeyKeyEncryptionMethodGenerator(
                getPgpPublicKeyOrFail(bytesToLong(decodeHexStr(keyId))));

        encryptedDataGenerator.addMethod(keyEncryptionMethodGenerator);

        final byte[] plain = new byte[1 + random.nextInt(1024 * 1024)];
        random.nextBytes(plain);

        final File encryptedFile = File.createTempFile("encrypted_", ".tmp");
        try (final OutputStream encryptedOut = new FileOutputStream(encryptedFile);) {
            try (final OutputStream plainOut = encryptedDataGenerator.open(encryptedOut, new byte[1024 * 16]);) {
                plainOut.write(plain);
            }
        }

        final byte[] decrypted;
        try (InputStream in = new FileInputStream(encryptedFile)) {
            final PGPEncryptedDataList encryptedDataList = new PGPEncryptedDataList(new BCPGInputStream(in));
            final Iterator<?> encryptedDataObjects = encryptedDataList.getEncryptedDataObjects();
            assertThat(encryptedDataObjects.hasNext()).isTrue();
            final PGPPublicKeyEncryptedData encryptedData = (PGPPublicKeyEncryptedData) encryptedDataObjects.next();
            assertThat(encryptedDataObjects.hasNext()).isFalse();

            final PublicKeyDataDecryptorFactory dataDecryptorFactory = new BcPublicKeyDataDecryptorFactory(
                    getPgpPrivateKeyOrFail(encryptedData.getKeyID(), "test12345".toCharArray()));

            try (InputStream plainIn = encryptedData.getDataStream(dataDecryptorFactory);) {
                final ByteArrayOutputStream out = new ByteArrayOutputStream();
                transferStreamData(plainIn, out);
                decrypted = out.toByteArray();
            }
        }

        assertThat(decrypted).isEqualTo(plain);

        encryptedFile.delete(); // delete it, if this test did not fail
    }
}