Package org.jivesoftware.smackx.ox
Class OpenPgpContact
- java.lang.Object
-
- org.jivesoftware.smackx.ox.OpenPgpContact
-
- Direct Known Subclasses:
OpenPgpSelf
public class OpenPgpContact extends Object
The OpenPgpContact is sort of a specialized view on the OpenPgpStore, which gives you access to the information about the user. It also allows contact-specific actions like fetching the contacts keys from PubSub etc.
-
-
Field Summary
Fields Modifier and Type Field Description protected BareJid
jid
protected OpenPgpStore
store
protected Map<org.pgpainless.key.OpenPgpV4Fingerprint,Throwable>
unfetchableKeys
-
Constructor Summary
Constructors Constructor Description OpenPgpContact(BareJid jid, OpenPgpStore store)
Create a new OpenPgpContact.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
distrust(org.pgpainless.key.OpenPgpV4Fingerprint fingerprint)
Mark a key asOpenPgpTrustStore.Trust.untrusted
.org.bouncycastle.openpgp.PGPPublicKeyRingCollection
getAnnouncedPublicKeys()
Return any announced public keys.org.bouncycastle.openpgp.PGPPublicKeyRingCollection
getAnyPublicKeys()
Return any available public keys of the user.Set<org.pgpainless.key.OpenPgpV4Fingerprint>
getFingerprintsOfKeysWithState(org.bouncycastle.openpgp.PGPPublicKeyRingCollection publicKeys, OpenPgpTrustStore.Trust trust)
Return aSet
ofOpenPgpV4Fingerprint
s of all keys inpublicKeys
, which are marked with theOpenPgpTrustStore.Trust
oftrust
.BareJid
getJid()
Return the jid of the contact.protected org.bouncycastle.openpgp.PGPPublicKeyRingCollection
getPublicKeysOfTrustState(org.bouncycastle.openpgp.PGPPublicKeyRingCollection keys, OpenPgpTrustStore.Trust trust)
Return aPGPPublicKeyRingCollection
, which contains all keys fromkeys
, which are marked with theOpenPgpTrustStore.Trust
state oftrust
.OpenPgpTrustStore.Trust
getTrust(org.pgpainless.key.OpenPgpV4Fingerprint fingerprint)
Determine theOpenPgpTrustStore.Trust
state of the key identified by thefingerprint
.org.bouncycastle.openpgp.PGPPublicKeyRingCollection
getTrustedAnnouncedKeys()
Return aPGPPublicKeyRingCollection
which contains all public keys of the contact, which are announced, as well as marked asOpenPgpTrustStore.Trust.trusted
.Set<org.pgpainless.key.OpenPgpV4Fingerprint>
getTrustedFingerprints()
Return aSet
ofOpenPgpV4Fingerprint
s of all keys of the contact, which have the trust stateOpenPgpTrustStore.Trust.trusted
.Set<org.pgpainless.key.OpenPgpV4Fingerprint>
getUndecidedFingerprints()
Return aSet
ofOpenPgpV4Fingerprint
s of all keys of the contact, which have the trust stateOpenPgpTrustStore.Trust.undecided
.Map<org.pgpainless.key.OpenPgpV4Fingerprint,Throwable>
getUnfetchableKeys()
Return aMap
of any unfetchable keys fingerprints and the cause of them not being fetched.Set<org.pgpainless.key.OpenPgpV4Fingerprint>
getUntrustedFingerprints()
Return aSet
ofOpenPgpV4Fingerprint
s of all keys of the contact, which have the trust stateOpenPgpTrustStore.Trust.untrusted
.boolean
hasUndecidedKeys()
Determine, whether there are keys available, for which we did not yet decided whether to trust them or not.boolean
isTrusted(org.pgpainless.key.OpenPgpV4Fingerprint fingerprint)
Determine, whether the key identified by thefingerprint
is marked asOpenPgpTrustStore.Trust.trusted
or not.void
trust(org.pgpainless.key.OpenPgpV4Fingerprint fingerprint)
Mark a key asOpenPgpTrustStore.Trust.trusted
.void
updateKeys(XMPPConnection connection)
Update the contacts keys by consulting the users PubSub nodes.void
updateKeys(XMPPConnection connection, PublicKeysListElement metadata)
Update the contacts keys using a prefetchedPublicKeysListElement
.
-
-
-
Field Detail
-
store
protected final OpenPgpStore store
-
unfetchableKeys
protected final Map<org.pgpainless.key.OpenPgpV4Fingerprint,Throwable> unfetchableKeys
-
-
Constructor Detail
-
OpenPgpContact
public OpenPgpContact(BareJid jid, OpenPgpStore store)
Create a new OpenPgpContact.- Parameters:
jid
-BareJid
of the contact.store
-OpenPgpStore
.
-
-
Method Detail
-
getAnyPublicKeys
public org.bouncycastle.openpgp.PGPPublicKeyRingCollection getAnyPublicKeys() throws IOException, org.bouncycastle.openpgp.PGPException
Return any available public keys of the user. The result might also contain outdated or invalid keys.- Returns:
- any keys of the contact.
- Throws:
IOException
- IO is dangerousorg.bouncycastle.openpgp.PGPException
- PGP is brittle
-
getAnnouncedPublicKeys
public org.bouncycastle.openpgp.PGPPublicKeyRingCollection getAnnouncedPublicKeys() throws IOException, org.bouncycastle.openpgp.PGPException
Return any announced public keys. This is the set returned bygetAnyPublicKeys()
with non-announced keys and keys which lack a user-id with the contacts jid removed.- Returns:
- announced keys of the contact
- Throws:
IOException
- IO is dangerousorg.bouncycastle.openpgp.PGPException
- PGP is brittle
-
getPublicKeysOfTrustState
protected org.bouncycastle.openpgp.PGPPublicKeyRingCollection getPublicKeysOfTrustState(org.bouncycastle.openpgp.PGPPublicKeyRingCollection keys, OpenPgpTrustStore.Trust trust) throws IOException
Return aPGPPublicKeyRingCollection
, which contains all keys fromkeys
, which are marked with theOpenPgpTrustStore.Trust
state oftrust
.- Parameters:
keys
-PGPPublicKeyRingCollection
trust
-OpenPgpTrustStore.Trust
- Returns:
- all keys from
keys
with trust statetrust
. - Throws:
IOException
- IO error
-
getTrustedAnnouncedKeys
public org.bouncycastle.openpgp.PGPPublicKeyRingCollection getTrustedAnnouncedKeys() throws IOException, org.bouncycastle.openpgp.PGPException
Return aPGPPublicKeyRingCollection
which contains all public keys of the contact, which are announced, as well as marked asOpenPgpTrustStore.Trust.trusted
.- Returns:
- announced, trusted keys.
- Throws:
IOException
- IO errororg.bouncycastle.openpgp.PGPException
- PGP error
-
getTrustedFingerprints
public Set<org.pgpainless.key.OpenPgpV4Fingerprint> getTrustedFingerprints() throws IOException, org.bouncycastle.openpgp.PGPException
Return aSet
ofOpenPgpV4Fingerprint
s of all keys of the contact, which have the trust stateOpenPgpTrustStore.Trust.trusted
.- Returns:
- trusted fingerprints
- Throws:
IOException
- IO errororg.bouncycastle.openpgp.PGPException
- PGP error
-
getUntrustedFingerprints
public Set<org.pgpainless.key.OpenPgpV4Fingerprint> getUntrustedFingerprints() throws IOException, org.bouncycastle.openpgp.PGPException
Return aSet
ofOpenPgpV4Fingerprint
s of all keys of the contact, which have the trust stateOpenPgpTrustStore.Trust.untrusted
.- Returns:
- untrusted fingerprints
- Throws:
IOException
- IO errororg.bouncycastle.openpgp.PGPException
- PGP error
-
getUndecidedFingerprints
public Set<org.pgpainless.key.OpenPgpV4Fingerprint> getUndecidedFingerprints() throws IOException, org.bouncycastle.openpgp.PGPException
Return aSet
ofOpenPgpV4Fingerprint
s of all keys of the contact, which have the trust stateOpenPgpTrustStore.Trust.undecided
.- Returns:
- undecided fingerprints
- Throws:
IOException
- IO errororg.bouncycastle.openpgp.PGPException
- PGP error
-
getFingerprintsOfKeysWithState
public Set<org.pgpainless.key.OpenPgpV4Fingerprint> getFingerprintsOfKeysWithState(org.bouncycastle.openpgp.PGPPublicKeyRingCollection publicKeys, OpenPgpTrustStore.Trust trust) throws IOException
Return aSet
ofOpenPgpV4Fingerprint
s of all keys inpublicKeys
, which are marked with theOpenPgpTrustStore.Trust
oftrust
.- Parameters:
publicKeys
-PGPPublicKeyRingCollection
of keys which are iterated.trust
-OpenPgpTrustStore.Trust
state.- Returns:
Set
of fingerprints- Throws:
IOException
- IO error
-
getTrust
public OpenPgpTrustStore.Trust getTrust(org.pgpainless.key.OpenPgpV4Fingerprint fingerprint) throws IOException
Determine theOpenPgpTrustStore.Trust
state of the key identified by thefingerprint
.- Parameters:
fingerprint
-OpenPgpV4Fingerprint
of the key- Returns:
- trust record
- Throws:
IOException
- IO error
-
isTrusted
public boolean isTrusted(org.pgpainless.key.OpenPgpV4Fingerprint fingerprint) throws IOException
Determine, whether the key identified by thefingerprint
is marked asOpenPgpTrustStore.Trust.trusted
or not.- Parameters:
fingerprint
-OpenPgpV4Fingerprint
of the key- Returns:
- true, if the key is marked as trusted, false otherwise
- Throws:
IOException
- IO error
-
trust
public void trust(org.pgpainless.key.OpenPgpV4Fingerprint fingerprint) throws IOException
Mark a key asOpenPgpTrustStore.Trust.trusted
.- Parameters:
fingerprint
-OpenPgpV4Fingerprint
of the key to mark as trusted.- Throws:
IOException
- IO error
-
distrust
public void distrust(org.pgpainless.key.OpenPgpV4Fingerprint fingerprint) throws IOException
Mark a key asOpenPgpTrustStore.Trust.untrusted
.- Parameters:
fingerprint
-OpenPgpV4Fingerprint
of the key to mark as untrusted.- Throws:
IOException
- IO error
-
hasUndecidedKeys
public boolean hasUndecidedKeys() throws IOException, org.bouncycastle.openpgp.PGPException
Determine, whether there are keys available, for which we did not yet decided whether to trust them or not.- Returns:
- more than 0 keys with trust state
OpenPgpTrustStore.Trust.undecided
. - Throws:
IOException
- I/O error reading the keys or trust records.org.bouncycastle.openpgp.PGPException
- PGP error reading the keys.
-
getUnfetchableKeys
public Map<org.pgpainless.key.OpenPgpV4Fingerprint,Throwable> getUnfetchableKeys()
Return aMap
of any unfetchable keys fingerprints and the cause of them not being fetched.- Returns:
- unfetchable keys
-
updateKeys
public void updateKeys(XMPPConnection connection) throws InterruptedException, SmackException.NotConnectedException, SmackException.NoResponseException, XMPPException.XMPPErrorException, PubSubException.NotALeafNodeException, PubSubException.NotAPubSubNodeException, IOException
Update the contacts keys by consulting the users PubSub nodes. This method fetches the users metadata node and then tries to fetch any announced keys.- Parameters:
connection
- ourXMPPConnection
.- Throws:
InterruptedException
- In case the thread gets interrupted.SmackException.NotConnectedException
- in case the connection is not connected.SmackException.NoResponseException
- in case the server doesn't respond.XMPPException.XMPPErrorException
- in case of an XMPP protocol error.PubSubException.NotALeafNodeException
- in case the metadata node is not aLeafNode
.PubSubException.NotAPubSubNodeException
- in case the metadata node is not a PubSub node.IOException
- IO is brittle.
-
updateKeys
public void updateKeys(XMPPConnection connection, PublicKeysListElement metadata) throws InterruptedException, SmackException.NotConnectedException, SmackException.NoResponseException, IOException
Update the contacts keys using a prefetchedPublicKeysListElement
.- Parameters:
connection
- ourXMPPConnection
.metadata
- pre-fetched OX metadata node of the contact.- Throws:
InterruptedException
- in case the thread gets interrupted.SmackException.NotConnectedException
- in case the connection is not connected.SmackException.NoResponseException
- in case the server doesn't respond.IOException
- IO is dangerous.
-
-