kpg.initialize(1024);
KeyPair kp = kpg.generateKeyPair();
PGPSecretKey secretKey = new PGPSecretKey(PGPSignature.DEFAULT_CERTIFICATION, PublicKeyAlgorithmTags.RSA_GENERAL, kp.getPublic(), kp.getPrivate(), new Date(), "fred", null, null, new JcaPGPContentSignerBuilder(PublicKeyAlgorithmTags.RSA_GENERAL, HashAlgorithmTags.SHA1).setProvider("BC"), new BcPBESecretKeyEncryptorBuilder(SymmetricKeyAlgorithmTags.CAST5).build(passPhrase));
PGPPublicKey key = secretKey.getPublicKey();
it = key.getUserIDs();
uid = (String)it.next();
it = key.getSignaturesForID(uid);
sig = (PGPSignature)it.next();
sig.init(new BcPGPContentVerifierBuilderProvider(), key);
if (!sig.verifyCertification(uid, key))
{
fail("failed to verify certification");
}
pgpPrivKey = secretKey.extractPrivateKey(new BcPBESecretKeyDecryptorBuilder(new BcPGPDigestCalculatorProvider()).build(passPhrase));
key = PGPPublicKey.removeCertification(key, uid, sig);
if (key == null)
{
fail("failed certification removal");
}
byte[] keyEnc = key.getEncoded();
key = PGPPublicKey.addCertification(key, uid, sig);
keyEnc = key.getEncoded();
PGPSignatureGenerator sGen = new PGPSignatureGenerator(new BcPGPContentSignerBuilder(PublicKeyAlgorithmTags.RSA_GENERAL, HashAlgorithmTags.SHA1));
sGen.init(PGPSignature.KEY_REVOCATION, secretKey.extractPrivateKey(new BcPBESecretKeyDecryptorBuilder(new BcPGPDigestCalculatorProvider()).build(passPhrase)));
sig = sGen.generateCertification(key);
key = PGPPublicKey.addCertification(key, sig);
keyEnc = key.getEncoded();
PGPPublicKeyRing tmpRing = new PGPPublicKeyRing(keyEnc, new BcKeyFingerprintCalculator());
key = tmpRing.getPublicKey();
Iterator sgIt = key.getSignaturesOfType(PGPSignature.KEY_REVOCATION);
sig = (PGPSignature)sgIt.next();
sig.init(new BcPGPContentVerifierBuilderProvider(), key);
if (!sig.verifyCertification(key))
{
fail("failed to verify revocation certification");
}
//
// use of PGPKeyPair
//
PGPKeyPair pgpKp = new PGPKeyPair(PGPPublicKey.RSA_GENERAL , kp.getPublic(), kp.getPrivate(), new Date());
PGPPublicKey k1 = pgpKp.getPublicKey();
PGPPrivateKey k2 = pgpKp.getPrivateKey();
k1.getEncoded();
mixedTest(k2, k1);
//
// key pair generation - AES_256 encryption.
//
kp = kpg.generateKeyPair();
secretKey = new PGPSecretKey(PGPSignature.DEFAULT_CERTIFICATION, PublicKeyAlgorithmTags.RSA_GENERAL, kp.getPublic(), kp.getPrivate(), new Date(), "fred", null, null, new JcaPGPContentSignerBuilder(PublicKeyAlgorithmTags.RSA_GENERAL, HashAlgorithmTags.SHA1).setProvider("BC"), new BcPBESecretKeyEncryptorBuilder(SymmetricKeyAlgorithmTags.AES_256).build(passPhrase));
secretKey.extractPrivateKey(new BcPBESecretKeyDecryptorBuilder(new BcPGPDigestCalculatorProvider()).build(passPhrase));
secretKey.encode(new ByteArrayOutputStream());
//
// secret key password changing.
//
String newPass = "newPass";
secretKey = PGPSecretKey.copyWithNewPassword(secretKey, new BcPBESecretKeyDecryptorBuilder(new BcPGPDigestCalculatorProvider()).build(passPhrase), new BcPBESecretKeyEncryptorBuilder(secretKey.getKeyEncryptionAlgorithm()).build(newPass.toCharArray()));
secretKey.extractPrivateKey(new BcPBESecretKeyDecryptorBuilder(new BcPGPDigestCalculatorProvider()).build(newPass.toCharArray()));
secretKey.encode(new ByteArrayOutputStream());