Class AbstractOpenPgpKeyStore

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.util.Map<BareJid,​java.util.Map<org.pgpainless.key.OpenPgpV4Fingerprint,​java.util.Date>> keyFetchDates  
      protected static java.util.logging.Logger LOGGER  
      protected java.util.Map<BareJid,​org.bouncycastle.openpgp.PGPPublicKeyRingCollection> publicKeyRingCollections  
      protected java.util.Map<BareJid,​org.bouncycastle.openpgp.PGPSecretKeyRingCollection> secretKeyRingCollections  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void deletePublicKeyRing​(BareJid owner, org.pgpainless.key.OpenPgpV4Fingerprint fingerprint)
      Remove a PGPPublicKeyRing which contains the key described by fingerprint from the PGPPublicKeyRingCollection of owner.
      void deleteSecretKeyRing​(BareJid owner, org.pgpainless.key.OpenPgpV4Fingerprint fingerprint)
      Remove a PGPSecretKeyRing which contains the key described by fingerprint from the PGPSecretKeyRingCollection of owner.
      org.pgpainless.key.collection.PGPKeyRing generateKeyRing​(BareJid owner)
      Generate a new PGPKeyRing for owner.
      java.util.Map<org.pgpainless.key.OpenPgpV4Fingerprint,​java.util.Date> getPublicKeyFetchDates​(BareJid contact)
      Return the last date on which keys of contact were fetched from PubSub.
      org.bouncycastle.openpgp.PGPPublicKeyRing getPublicKeyRing​(BareJid owner, org.pgpainless.key.OpenPgpV4Fingerprint fingerprint)
      Return the PGPPublicKeyRing of owner which contains the key described by fingerprint.
      org.bouncycastle.openpgp.PGPPublicKeyRingCollection getPublicKeysOf​(BareJid owner)
      Return the PGPPublicKeyRingCollection containing all public keys of owner that are locally available.
      org.bouncycastle.openpgp.PGPSecretKeyRing getSecretKeyRing​(BareJid owner, org.pgpainless.key.OpenPgpV4Fingerprint fingerprint)
      Return the PGPSecretKeyRing of owner which contains the key described by fingerprint.
      org.bouncycastle.openpgp.PGPSecretKeyRingCollection getSecretKeysOf​(BareJid owner)
      Return the PGPSecretKeyRingCollection containing all secret keys of owner which are locally available.
      void importPublicKey​(BareJid owner, org.bouncycastle.openpgp.PGPPublicKeyRing publicKeys)
      Import a PGPPublicKeyRing of owner.
      void importSecretKey​(BareJid owner, org.bouncycastle.openpgp.PGPSecretKeyRing secretKeys)
      Import a PGPSecretKeyRing of owner.
      protected abstract java.util.Map<org.pgpainless.key.OpenPgpV4Fingerprint,​java.util.Date> readKeyFetchDates​(BareJid owner)
      Read the key fetch dates for a users keys from local storage.
      protected abstract org.bouncycastle.openpgp.PGPPublicKeyRingCollection readPublicKeysOf​(BareJid owner)
      Read a PGPPublicKeyRingCollection from local storage.
      protected abstract org.bouncycastle.openpgp.PGPSecretKeyRingCollection readSecretKeysOf​(BareJid owner)
      Read a PGPSecretKeyRingCollection from local storage.
      void setPublicKeyFetchDates​(BareJid contact, java.util.Map<org.pgpainless.key.OpenPgpV4Fingerprint,​java.util.Date> dates)
      Set the last date on which keys of contact were fetched from PubSub.
      protected abstract void writeKeyFetchDates​(BareJid owner, java.util.Map<org.pgpainless.key.OpenPgpV4Fingerprint,​java.util.Date> dates)
      Write the key fetch dates for a users keys to local storage.
      protected abstract void writePublicKeysOf​(BareJid owner, org.bouncycastle.openpgp.PGPPublicKeyRingCollection publicKeys)
      Write the PGPPublicKeyRingCollection of a user to local storage.
      protected abstract void writeSecretKeysOf​(BareJid owner, org.bouncycastle.openpgp.PGPSecretKeyRingCollection secretKeys)
      Write the PGPSecretKeyRingCollection of a user to local storage.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • LOGGER

        protected static final java.util.logging.Logger LOGGER
      • keyFetchDates

        protected java.util.Map<BareJid,​java.util.Map<org.pgpainless.key.OpenPgpV4Fingerprint,​java.util.Date>> keyFetchDates
    • Method Detail

      • readPublicKeysOf

        protected abstract org.bouncycastle.openpgp.PGPPublicKeyRingCollection readPublicKeysOf​(BareJid owner)
                                                                                         throws java.io.IOException,
                                                                                                org.bouncycastle.openpgp.PGPException
        Read a PGPPublicKeyRingCollection from local storage. This method returns null, if no keys were found.
        Parameters:
        owner - owner of the keys
        Returns:
        public keys
        Throws:
        java.io.IOException - IO is dangerous
        org.bouncycastle.openpgp.PGPException - PGP is brittle
      • writePublicKeysOf

        protected abstract void writePublicKeysOf​(BareJid owner,
                                                  org.bouncycastle.openpgp.PGPPublicKeyRingCollection publicKeys)
                                           throws java.io.IOException
        Write the PGPPublicKeyRingCollection of a user to local storage.
        Parameters:
        owner - owner of the keys
        publicKeys - keys
        Throws:
        java.io.IOException - IO is dangerous
      • readSecretKeysOf

        protected abstract org.bouncycastle.openpgp.PGPSecretKeyRingCollection readSecretKeysOf​(BareJid owner)
                                                                                         throws java.io.IOException,
                                                                                                org.bouncycastle.openpgp.PGPException
        Read a PGPSecretKeyRingCollection from local storage. This method returns null, if no keys were found.
        Parameters:
        owner - owner of the keys
        Returns:
        secret keys
        Throws:
        java.io.IOException - IO is dangerous
        org.bouncycastle.openpgp.PGPException - PGP is brittle
      • writeSecretKeysOf

        protected abstract void writeSecretKeysOf​(BareJid owner,
                                                  org.bouncycastle.openpgp.PGPSecretKeyRingCollection secretKeys)
                                           throws java.io.IOException
        Write the PGPSecretKeyRingCollection of a user to local storage.
        Parameters:
        owner - owner of the keys
        secretKeys - secret keys
        Throws:
        java.io.IOException - IO is dangerous
      • readKeyFetchDates

        protected abstract java.util.Map<org.pgpainless.key.OpenPgpV4Fingerprint,​java.util.Date> readKeyFetchDates​(BareJid owner)
                                                                                                                  throws java.io.IOException
        Read the key fetch dates for a users keys from local storage.
        Parameters:
        owner - owner
        Returns:
        fetch dates for the owners keys
        Throws:
        java.io.IOException - IO is dangerous
      • writeKeyFetchDates

        protected abstract void writeKeyFetchDates​(BareJid owner,
                                                   java.util.Map<org.pgpainless.key.OpenPgpV4Fingerprint,​java.util.Date> dates)
                                            throws java.io.IOException
        Write the key fetch dates for a users keys to local storage.
        Parameters:
        owner - owner
        dates - fetch dates for the owners keys
        Throws:
        java.io.IOException - IO is dangerous
      • getPublicKeyFetchDates

        public java.util.Map<org.pgpainless.key.OpenPgpV4Fingerprint,​java.util.Date> getPublicKeyFetchDates​(BareJid contact)
                                                                                                           throws java.io.IOException
        Description copied from interface: OpenPgpKeyStore
        Return the last date on which keys of contact were fetched from PubSub. This method MUST NOT return null.
        Specified by:
        getPublicKeyFetchDates in interface OpenPgpKeyStore
        Parameters:
        contact - contact in which we are interested.
        Returns:
        dates of last key fetching.
        Throws:
        java.io.IOException - IO is dangerous
      • setPublicKeyFetchDates

        public void setPublicKeyFetchDates​(BareJid contact,
                                           java.util.Map<org.pgpainless.key.OpenPgpV4Fingerprint,​java.util.Date> dates)
                                    throws java.io.IOException
        Description copied from interface: OpenPgpKeyStore
        Set the last date on which keys of contact were fetched from PubSub.
        Specified by:
        setPublicKeyFetchDates in interface OpenPgpKeyStore
        Parameters:
        contact - contact in which we are interested.
        dates - dates of last key fetching.
        Throws:
        java.io.IOException - IO is dangerous
      • getPublicKeysOf

        public org.bouncycastle.openpgp.PGPPublicKeyRingCollection getPublicKeysOf​(BareJid owner)
                                                                            throws java.io.IOException,
                                                                                   org.bouncycastle.openpgp.PGPException
        Description copied from interface: OpenPgpKeyStore
        Return the PGPPublicKeyRingCollection containing all public keys of owner that are locally available. This method might return null.
        Specified by:
        getPublicKeysOf in interface OpenPgpKeyStore
        Parameters:
        owner - BareJid of the user we want to get keys from.
        Returns:
        PGPPublicKeyRingCollection of the user.
        Throws:
        java.io.IOException - IO is dangerous
        org.bouncycastle.openpgp.PGPException - PGP is brittle
      • getSecretKeysOf

        public org.bouncycastle.openpgp.PGPSecretKeyRingCollection getSecretKeysOf​(BareJid owner)
                                                                            throws java.io.IOException,
                                                                                   org.bouncycastle.openpgp.PGPException
        Description copied from interface: OpenPgpKeyStore
        Return the PGPSecretKeyRingCollection containing all secret keys of owner which are locally available. This method might return null.
        Specified by:
        getSecretKeysOf in interface OpenPgpKeyStore
        Parameters:
        owner - BareJid of the user we want to get keys from.
        Returns:
        PGPSecretKeyRingCollection of the user.
        Throws:
        java.io.IOException - IO is dangerous
        org.bouncycastle.openpgp.PGPException - PGP is brittle
      • importSecretKey

        public void importSecretKey​(BareJid owner,
                                    org.bouncycastle.openpgp.PGPSecretKeyRing secretKeys)
                             throws java.io.IOException,
                                    org.bouncycastle.openpgp.PGPException,
                                    MissingUserIdOnKeyException
        Description copied from interface: OpenPgpKeyStore
        Import a PGPSecretKeyRing of owner. In case the key ring is already available locally, the keys are skipped.
        Specified by:
        importSecretKey in interface OpenPgpKeyStore
        Parameters:
        owner - owner of the keys
        secretKeys - secret keys
        Throws:
        java.io.IOException - IO is dangerous
        org.bouncycastle.openpgp.PGPException - PGP is brittle
        MissingUserIdOnKeyException - in case the secret keys are lacking a user-id with the owners jid.
      • importPublicKey

        public void importPublicKey​(BareJid owner,
                                    org.bouncycastle.openpgp.PGPPublicKeyRing publicKeys)
                             throws java.io.IOException,
                                    org.bouncycastle.openpgp.PGPException,
                                    MissingUserIdOnKeyException
        Description copied from interface: OpenPgpKeyStore
        Import a PGPPublicKeyRing of owner. In case the key ring is already available locally, the keys are skipped.
        Specified by:
        importPublicKey in interface OpenPgpKeyStore
        Parameters:
        owner - owner of the keys
        publicKeys - public keys
        Throws:
        java.io.IOException - IO is dangerous
        org.bouncycastle.openpgp.PGPException - PGP is brittle
        MissingUserIdOnKeyException - in case the public keys are lacking a user-id with the owners jid.
      • getPublicKeyRing

        public org.bouncycastle.openpgp.PGPPublicKeyRing getPublicKeyRing​(BareJid owner,
                                                                          org.pgpainless.key.OpenPgpV4Fingerprint fingerprint)
                                                                   throws java.io.IOException,
                                                                          org.bouncycastle.openpgp.PGPException
        Description copied from interface: OpenPgpKeyStore
        Return the PGPPublicKeyRing of owner which contains the key described by fingerprint. This method might return null.
        Specified by:
        getPublicKeyRing in interface OpenPgpKeyStore
        Parameters:
        owner - BareJid of the keys owner
        fingerprint - OpenPgpV4Fingerprint of a key contained in the key ring
        Returns:
        PGPPublicKeyRing which contains the key described by fingerprint.
        Throws:
        java.io.IOException - IO is dangerous
        org.bouncycastle.openpgp.PGPException - PGP is brittle
      • getSecretKeyRing

        public org.bouncycastle.openpgp.PGPSecretKeyRing getSecretKeyRing​(BareJid owner,
                                                                          org.pgpainless.key.OpenPgpV4Fingerprint fingerprint)
                                                                   throws java.io.IOException,
                                                                          org.bouncycastle.openpgp.PGPException
        Description copied from interface: OpenPgpKeyStore
        Return the PGPSecretKeyRing of owner which contains the key described by fingerprint. This method might return null.
        Specified by:
        getSecretKeyRing in interface OpenPgpKeyStore
        Parameters:
        owner - BareJid of the keys owner
        fingerprint - OpenPgpV4Fingerprint of a key contained in the key ring
        Returns:
        PGPSecretKeyRing which contains the key described by fingerprint.
        Throws:
        java.io.IOException - IO is dangerous
        org.bouncycastle.openpgp.PGPException - PGP is brittle
      • deletePublicKeyRing

        public void deletePublicKeyRing​(BareJid owner,
                                        org.pgpainless.key.OpenPgpV4Fingerprint fingerprint)
                                 throws java.io.IOException,
                                        org.bouncycastle.openpgp.PGPException
        Description copied from interface: OpenPgpKeyStore
        Remove a PGPPublicKeyRing which contains the key described by fingerprint from the PGPPublicKeyRingCollection of owner.
        Specified by:
        deletePublicKeyRing in interface OpenPgpKeyStore
        Parameters:
        owner - owner of the key ring
        fingerprint - fingerprint of the key whose key ring will be removed.
        Throws:
        java.io.IOException - IO is dangerous
        org.bouncycastle.openpgp.PGPException - PGP is brittle
      • deleteSecretKeyRing

        public void deleteSecretKeyRing​(BareJid owner,
                                        org.pgpainless.key.OpenPgpV4Fingerprint fingerprint)
                                 throws java.io.IOException,
                                        org.bouncycastle.openpgp.PGPException
        Description copied from interface: OpenPgpKeyStore
        Remove a PGPSecretKeyRing which contains the key described by fingerprint from the PGPSecretKeyRingCollection of owner.
        Specified by:
        deleteSecretKeyRing in interface OpenPgpKeyStore
        Parameters:
        owner - owner of the key ring
        fingerprint - fingerprint of the key whose key ring will be removed.
        Throws:
        java.io.IOException - IO is dangerous
        org.bouncycastle.openpgp.PGPException - PGP is brittle
      • generateKeyRing

        public org.pgpainless.key.collection.PGPKeyRing generateKeyRing​(BareJid owner)
                                                                 throws org.bouncycastle.openpgp.PGPException,
                                                                        java.security.NoSuchAlgorithmException,
                                                                        java.security.NoSuchProviderException,
                                                                        java.security.InvalidAlgorithmParameterException
        Description copied from interface: OpenPgpKeyStore
        Generate a new PGPKeyRing for owner. The key will have a user-id containing the users BareJid (eg. "xmpp:juliet@capulet.lit"). This method MUST NOT return null.
        Specified by:
        generateKeyRing in interface OpenPgpKeyStore
        Parameters:
        owner - owner of the key ring.
        Returns:
        key ring
        Throws:
        org.bouncycastle.openpgp.PGPException - PGP is brittle
        java.security.NoSuchAlgorithmException - in case there is no Provider registered for the used OpenPGP algorithms.
        java.security.NoSuchProviderException - in case there is no suitable Provider registered.
        java.security.InvalidAlgorithmParameterException - in case an invalid algorithms configuration is used.