@Test(expected = MissingUserIdOnKeyException.class) public void t05_key_wrongBareJidOnPublicKeyImportTest() throws PGPException, NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException, IOException, MissingUserIdOnKeyException { PGPPublicKeyRing publicKeys = openPgpStoreInstance1.generateKeyRing(alice).getPublicKeys(); openPgpStoreInstance1.importPublicKey(bob, publicKeys); }
/** * Generate a fresh OpenPGP key pair and import it. * * @param ourJid our {@link BareJid}. * @return {@link OpenPgpV4Fingerprint} of the generated key. * @throws NoSuchAlgorithmException if the JVM doesn't support one of the used algorithms. * @throws InvalidAlgorithmParameterException if the used algorithm parameters are invalid. * @throws NoSuchProviderException if we are missing a cryptographic provider. * @throws PGPException PGP is brittle. * @throws IOException IO is dangerous. */ public OpenPgpV4Fingerprint generateAndImportKeyPair(BareJid ourJid) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException, NoSuchProviderException, PGPException, IOException { throwIfNoProviderSet(); OpenPgpStore store = provider.getStore(); PGPKeyRing keys = store.generateKeyRing(ourJid); try { store.importSecretKey(ourJid, keys.getSecretKeys()); store.importPublicKey(ourJid, keys.getPublicKeys()); } catch (MissingUserIdOnKeyException e) { // This should never throw, since we set our jid literally one line above this comment. throw new AssertionError(e); } OpenPgpV4Fingerprint fingerprint = new OpenPgpV4Fingerprint(keys.getSecretKeys()); store.setTrust(ourJid, fingerprint, OpenPgpTrustStore.Trust.trusted); return fingerprint; }
@Test public void t07_multipleKeysTest() throws PGPException, NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException, IOException, MissingUserIdOnKeyException { PGPKeyRing one = openPgpStoreInstance1.generateKeyRing(alice); PGPKeyRing two = openPgpStoreInstance1.generateKeyRing(alice); OpenPgpV4Fingerprint fingerprint1 = new OpenPgpV4Fingerprint(one.getSecretKeys()); OpenPgpV4Fingerprint fingerprint2 = new OpenPgpV4Fingerprint(two.getSecretKeys()); openPgpStoreInstance1.importSecretKey(alice, one.getSecretKeys()); openPgpStoreInstance1.importSecretKey(alice, two.getSecretKeys()); openPgpStoreInstance1.importPublicKey(alice, one.getPublicKeys()); openPgpStoreInstance1.importPublicKey(alice, two.getPublicKeys()); assertTrue(Arrays.equals(one.getSecretKeys().getEncoded(), openPgpStoreInstance1.getSecretKeyRing(alice, fingerprint1).getEncoded())); assertTrue(Arrays.equals(two.getSecretKeys().getEncoded(), openPgpStoreInstance1.getSecretKeyRing(alice, fingerprint2).getEncoded())); assertTrue(Arrays.equals(one.getSecretKeys().getEncoded(), openPgpStoreInstance1.getSecretKeysOf(alice).getSecretKeyRing(fingerprint1.getKeyId()).getEncoded())); assertTrue(Arrays.equals(one.getPublicKeys().getEncoded(), openPgpStoreInstance1.getPublicKeyRing(alice, fingerprint1).getEncoded())); // Cleanup openPgpStoreInstance1.deletePublicKeyRing(alice, fingerprint1); openPgpStoreInstance1.deletePublicKeyRing(alice, fingerprint2); openPgpStoreInstance1.deleteSecretKeyRing(alice, fingerprint1); openPgpStoreInstance1.deleteSecretKeyRing(alice, fingerprint2); }
PGPKeyRing bobKeys = bobStore.generateKeyRing(bob); OpenPgpV4Fingerprint aliceFingerprint = new OpenPgpV4Fingerprint(aliceKeys.getPublicKeys()); OpenPgpV4Fingerprint bobFingerprint = new OpenPgpV4Fingerprint(bobKeys.getPublicKeys()); aliceStore.setAnnouncedFingerprintsOf(alice, Collections.singletonMap(new OpenPgpV4Fingerprint(aliceKeys.getPublicKeys()), new Date())); bobStore.setAnnouncedFingerprintsOf(bob, Collections.singletonMap(new OpenPgpV4Fingerprint(bobKeys.getPublicKeys()), new Date())); aliceStore.importPublicKey(bob, bobKeys.getPublicKeys()); bobStore.importPublicKey(alice, aliceKeys.getPublicKeys()); aliceStore.setAnnouncedFingerprintsOf(bob, Collections.singletonMap(new OpenPgpV4Fingerprint(bobKeys.getPublicKeys()), new Date())); bobStore.setAnnouncedFingerprintsOf(alice, Collections.singletonMap(new OpenPgpV4Fingerprint(aliceKeys.getPublicKeys()), new Date()));
PGPPublicKeyRing publicKeys = keys.getPublicKeys(); assertNotNull(secretKeys); assertNotNull(publicKeys);
@Test public void t06_key_keyReloadTest() throws PGPException, NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException, IOException, MissingUserIdOnKeyException { PGPKeyRing keys = openPgpStoreInstance1.generateKeyRing(alice); PGPSecretKeyRing secretKeys = keys.getSecretKeys(); OpenPgpV4Fingerprint fingerprint = new OpenPgpV4Fingerprint(secretKeys); PGPPublicKeyRing publicKeys = keys.getPublicKeys(); openPgpStoreInstance1.importSecretKey(alice, secretKeys); openPgpStoreInstance1.importPublicKey(alice, publicKeys); assertNotNull(openPgpStoreInstance2.getSecretKeysOf(alice)); assertNotNull(openPgpStoreInstance2.getPublicKeysOf(alice)); // Clean up openPgpStoreInstance1.deletePublicKeyRing(alice, fingerprint); openPgpStoreInstance1.deleteSecretKeyRing(alice, fingerprint); openPgpStoreInstance2.deletePublicKeyRing(alice, fingerprint); openPgpStoreInstance2.deleteSecretKeyRing(alice, fingerprint); }
@Test public void t00_deleteTest() throws IOException, PGPException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchProviderException, MissingUserIdOnKeyException { assertNull(openPgpStoreInstance1.getSecretKeysOf(alice)); assertNull(openPgpStoreInstance1.getPublicKeysOf(alice)); PGPKeyRing keys = openPgpStoreInstance1.generateKeyRing(alice); openPgpStoreInstance1.importSecretKey(alice, keys.getSecretKeys()); openPgpStoreInstance1.importPublicKey(alice, keys.getPublicKeys()); assertNotNull(openPgpStoreInstance1.getSecretKeysOf(alice)); assertNotNull(openPgpStoreInstance1.getPublicKeysOf(alice)); openPgpStoreInstance1.deleteSecretKeyRing(alice, new OpenPgpV4Fingerprint(keys.getSecretKeys())); openPgpStoreInstance1.deletePublicKeyRing(alice, new OpenPgpV4Fingerprint(keys.getSecretKeys())); assertNull(openPgpStoreInstance1.getPublicKeysOf(alice)); assertNull(openPgpStoreInstance1.getSecretKeysOf(alice)); }