OpenPgpManager: Expose methods to generate and import keys

This commit is contained in:
Paul Schaub 2020-10-24 19:15:11 +02:00 committed by Florian Schmaus
parent 28dd56a13a
commit 1a9ac238e8
1 changed files with 20 additions and 8 deletions

View File

@ -295,14 +295,9 @@ public final class OpenPgpManager extends Manager {
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);
}
PGPKeyRing keys = generateKeyRing(ourJid);
importKeyRing(ourJid, keys);
OpenPgpV4Fingerprint fingerprint = new OpenPgpV4Fingerprint(keys.getSecretKeys());
@ -311,6 +306,23 @@ public final class OpenPgpManager extends Manager {
return fingerprint;
}
public PGPKeyRing generateKeyRing(BareJid ourJid)
throws PGPException, NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException {
throwIfNoProviderSet();
PGPKeyRing keys = provider.getStore().generateKeyRing(ourJid);
return keys;
}
private void importKeyRing(BareJid ourJid, PGPKeyRing keyRing) throws IOException, PGPException {
try {
provider.getStore().importSecretKey(ourJid, keyRing.getSecretKeys());
provider.getStore().importPublicKey(ourJid, keyRing.getPublicKeys());
} catch (MissingUserIdOnKeyException e) {
// This should never throw, since we set our jid literally one line above this comment.
throw new AssertionError(e);
}
}
/**
* Return the upper-case hex encoded OpenPGP v4 fingerprint of our key pair.
*