Smack/smack-openpgp/src/main/java/org/jivesoftware/smackx/ox/OpenPgpSelf.java

53 lines
1.7 KiB
Java
Raw Normal View History

2018-07-04 16:02:03 +02:00
package org.jivesoftware.smackx.ox;
2018-07-03 18:07:54 +02:00
2018-07-08 19:36:44 +02:00
import java.io.IOException;
2018-07-03 18:07:54 +02:00
2018-07-08 19:36:44 +02:00
import org.jivesoftware.smackx.ox.store.definition.OpenPgpStore;
import org.bouncycastle.openpgp.PGPException;
import org.bouncycastle.openpgp.PGPSecretKeyRing;
import org.bouncycastle.openpgp.PGPSecretKeyRingCollection;
2018-07-03 18:07:54 +02:00
import org.jxmpp.jid.BareJid;
2018-07-08 19:36:44 +02:00
import org.pgpainless.pgpainless.key.OpenPgpV4Fingerprint;
2018-07-03 18:07:54 +02:00
public class OpenPgpSelf extends OpenPgpContact {
2018-07-08 19:36:44 +02:00
public OpenPgpSelf(BareJid jid, OpenPgpStore store) {
super(jid, store);
}
public boolean hasSecretKeyAvailable() throws IOException, PGPException {
return getSecretKeys() != null;
}
public PGPSecretKeyRingCollection getSecretKeys() throws IOException, PGPException {
return store.getSecretKeysOf(jid);
}
public PGPSecretKeyRing getSigningKeyRing() throws IOException, PGPException {
PGPSecretKeyRingCollection secretKeyRings = getSecretKeys();
if (secretKeyRings == null) {
return null;
}
PGPSecretKeyRing signingKeyRing = null;
for (PGPSecretKeyRing ring : secretKeyRings) {
if (signingKeyRing == null) {
signingKeyRing = ring;
continue;
}
if (ring.getPublicKey().getCreationTime().after(signingKeyRing.getPublicKey().getCreationTime())) {
signingKeyRing = ring;
}
}
return signingKeyRing;
2018-07-03 18:07:54 +02:00
}
2018-07-08 19:36:44 +02:00
public OpenPgpV4Fingerprint getSigningKeyFingerprint() throws IOException, PGPException {
PGPSecretKeyRing signingKeyRing = getSigningKeyRing();
return signingKeyRing != null ? new OpenPgpV4Fingerprint(signingKeyRing.getPublicKey()) : null;
2018-07-03 18:07:54 +02:00
}
}