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 Details

    • jid

      protected final org.jxmpp.jid.BareJid jid
    • store

      protected final OpenPgpStore store
    • unfetchableKeys

      protected final Map<org.pgpainless.key.OpenPgpV4Fingerprint,Throwable> unfetchableKeys
  • Constructor Details

    • OpenPgpContact

      public OpenPgpContact(org.jxmpp.jid.BareJid jid, OpenPgpStore store)
      Create a new OpenPgpContact.
      Parameters:
      jid - BareJid of the contact.
      store - OpenPgpStore.
  • Method Details

    • getJid

      public org.jxmpp.jid.BareJid getJid()
      Return the jid of the contact.
      Returns:
      jid TODO javadoc me please
    • 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 dangerous
      org.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 by getAnyPublicKeys() 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 dangerous
      org.bouncycastle.openpgp.PGPException - PGP is brittle
    • getPublicKeysOfTrustState

      protected org.bouncycastle.openpgp.PGPPublicKeyRingCollection getPublicKeysOfTrustState(org.bouncycastle.openpgp.PGPPublicKeyRingCollection keys, OpenPgpTrustStore.Trust trust) throws IOException
      Return a PGPPublicKeyRingCollection, which contains all keys from keys, which are marked with the OpenPgpTrustStore.Trust state of trust.
      Parameters:
      keys - PGPPublicKeyRingCollection
      trust - OpenPgpTrustStore.Trust
      Returns:
      all keys from keys with trust state trust.
      Throws:
      IOException - IO error
    • getTrustedAnnouncedKeys

      public org.bouncycastle.openpgp.PGPPublicKeyRingCollection getTrustedAnnouncedKeys() throws IOException, org.bouncycastle.openpgp.PGPException
      Return a PGPPublicKeyRingCollection which contains all public keys of the contact, which are announced, as well as marked as OpenPgpTrustStore.Trust.trusted.
      Returns:
      announced, trusted keys.
      Throws:
      IOException - IO error
      org.bouncycastle.openpgp.PGPException - PGP error
    • getTrustedFingerprints

      public Set<org.pgpainless.key.OpenPgpV4Fingerprint> getTrustedFingerprints() throws IOException, org.bouncycastle.openpgp.PGPException
      Return a Set of OpenPgpV4Fingerprints of all keys of the contact, which have the trust state OpenPgpTrustStore.Trust.trusted.
      Returns:
      trusted fingerprints
      Throws:
      IOException - IO error
      org.bouncycastle.openpgp.PGPException - PGP error
    • getUntrustedFingerprints

      public Set<org.pgpainless.key.OpenPgpV4Fingerprint> getUntrustedFingerprints() throws IOException, org.bouncycastle.openpgp.PGPException
      Return a Set of OpenPgpV4Fingerprints of all keys of the contact, which have the trust state OpenPgpTrustStore.Trust.untrusted.
      Returns:
      untrusted fingerprints
      Throws:
      IOException - IO error
      org.bouncycastle.openpgp.PGPException - PGP error
    • getUndecidedFingerprints

      public Set<org.pgpainless.key.OpenPgpV4Fingerprint> getUndecidedFingerprints() throws IOException, org.bouncycastle.openpgp.PGPException
      Return a Set of OpenPgpV4Fingerprints of all keys of the contact, which have the trust state OpenPgpTrustStore.Trust.undecided.
      Returns:
      undecided fingerprints
      Throws:
      IOException - IO error
      org.bouncycastle.openpgp.PGPException - PGP error
    • getFingerprintsOfKeysWithState

      public Set<org.pgpainless.key.OpenPgpV4Fingerprint> getFingerprintsOfKeysWithState(org.bouncycastle.openpgp.PGPPublicKeyRingCollection publicKeys, OpenPgpTrustStore.Trust trust) throws IOException
      Return a Set of OpenPgpV4Fingerprints of all keys in publicKeys, which are marked with the OpenPgpTrustStore.Trust of trust.
      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 the OpenPgpTrustStore.Trust state of the key identified by the fingerprint.
      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 the fingerprint is marked as OpenPgpTrustStore.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
      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
      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 a Map of any unfetchable keys fingerprints and the cause of them not being fetched.
      Returns:
      unfetchable keys
    • updateKeys

      public void updateKeys(org.jivesoftware.smack.XMPPConnection connection) throws InterruptedException, org.jivesoftware.smack.SmackException.NotConnectedException, org.jivesoftware.smack.SmackException.NoResponseException, org.jivesoftware.smack.XMPPException.XMPPErrorException, org.jivesoftware.smackx.pubsub.PubSubException.NotALeafNodeException, org.jivesoftware.smackx.pubsub.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 - our XMPPConnection.
      Throws:
      InterruptedException - In case the thread gets interrupted.
      org.jivesoftware.smack.SmackException.NotConnectedException - in case the connection is not connected.
      org.jivesoftware.smack.SmackException.NoResponseException - in case the server doesn't respond.
      org.jivesoftware.smack.XMPPException.XMPPErrorException - in case of an XMPP protocol error.
      org.jivesoftware.smackx.pubsub.PubSubException.NotALeafNodeException - in case the metadata node is not a LeafNode.
      org.jivesoftware.smackx.pubsub.PubSubException.NotAPubSubNodeException - in case the metadata node is not a PubSub node.
      IOException - IO is brittle.
    • updateKeys

      public void updateKeys(org.jivesoftware.smack.XMPPConnection connection, PublicKeysListElement metadata) throws InterruptedException, org.jivesoftware.smack.SmackException.NotConnectedException, org.jivesoftware.smack.SmackException.NoResponseException, IOException
      Update the contacts keys using a prefetched PublicKeysListElement.
      Parameters:
      connection - our XMPPConnection.
      metadata - pre-fetched OX metadata node of the contact.
      Throws:
      InterruptedException - in case the thread gets interrupted.
      org.jivesoftware.smack.SmackException.NotConnectedException - in case the connection is not connected.
      org.jivesoftware.smack.SmackException.NoResponseException - in case the server doesn't respond.
      IOException - IO is dangerous.