mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-11-24 04:52:05 +01:00
Add missing javadoc
This commit is contained in:
parent
cf4129f932
commit
9d0d639255
7 changed files with 160 additions and 61 deletions
|
@ -62,6 +62,13 @@ public final class OXInstantMessagingManager extends Manager implements Signcryp
|
||||||
announceSupportForOxInstantMessaging();
|
announceSupportForOxInstantMessaging();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return an instance of the {@link OXInstantMessagingManager} that belongs to the given {@code connection}.
|
||||||
|
*
|
||||||
|
* @param connection XMPP connection
|
||||||
|
*
|
||||||
|
* @return manager instance
|
||||||
|
*/
|
||||||
public static OXInstantMessagingManager getInstanceFor(XMPPConnection connection) {
|
public static OXInstantMessagingManager getInstanceFor(XMPPConnection connection) {
|
||||||
OXInstantMessagingManager manager = INSTANCES.get(connection);
|
OXInstantMessagingManager manager = INSTANCES.get(connection);
|
||||||
|
|
||||||
|
@ -73,6 +80,9 @@ public final class OXInstantMessagingManager extends Manager implements Signcryp
|
||||||
return manager;
|
return manager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the OX:IM namespace as a feature to our disco features.
|
||||||
|
*/
|
||||||
public void announceSupportForOxInstantMessaging() {
|
public void announceSupportForOxInstantMessaging() {
|
||||||
ServiceDiscoveryManager.getInstanceFor(connection())
|
ServiceDiscoveryManager.getInstanceFor(connection())
|
||||||
.addFeature(NAMESPACE_0);
|
.addFeature(NAMESPACE_0);
|
||||||
|
@ -83,10 +93,10 @@ public final class OXInstantMessagingManager extends Manager implements Signcryp
|
||||||
*
|
*
|
||||||
* @param jid {@link BareJid} of the contact in question.
|
* @param jid {@link BareJid} of the contact in question.
|
||||||
* @return true if contact announces support, otherwise false.
|
* @return true if contact announces support, otherwise false.
|
||||||
* @throws XMPPException.XMPPErrorException
|
* @throws XMPPException.XMPPErrorException in case of an XMPP protocol error
|
||||||
* @throws SmackException.NotConnectedException
|
* @throws SmackException.NotConnectedException if we are not connected
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException if the connection gets interrupted
|
||||||
* @throws SmackException.NoResponseException
|
* @throws SmackException.NoResponseException if the server doesn't respond
|
||||||
*/
|
*/
|
||||||
public boolean contactSupportsOxInstantMessaging(BareJid jid)
|
public boolean contactSupportsOxInstantMessaging(BareJid jid)
|
||||||
throws XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException,
|
throws XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException,
|
||||||
|
@ -99,10 +109,10 @@ public final class OXInstantMessagingManager extends Manager implements Signcryp
|
||||||
*
|
*
|
||||||
* @param contact {@link OpenPgpContact} in question.
|
* @param contact {@link OpenPgpContact} in question.
|
||||||
* @return true if contact announces support, otherwise false.
|
* @return true if contact announces support, otherwise false.
|
||||||
* @throws XMPPException.XMPPErrorException
|
* @throws XMPPException.XMPPErrorException in case of an XMPP protocol error
|
||||||
* @throws SmackException.NotConnectedException
|
* @throws SmackException.NotConnectedException if we are not connected
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException if the connection is interrupted
|
||||||
* @throws SmackException.NoResponseException
|
* @throws SmackException.NoResponseException if the server doesn't respond
|
||||||
*/
|
*/
|
||||||
public boolean contactSupportsOxInstantMessaging(OpenPgpContact contact)
|
public boolean contactSupportsOxInstantMessaging(OpenPgpContact contact)
|
||||||
throws XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException,
|
throws XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException,
|
||||||
|
@ -110,10 +120,21 @@ public final class OXInstantMessagingManager extends Manager implements Signcryp
|
||||||
return contactSupportsOxInstantMessaging(contact.getJid());
|
return contactSupportsOxInstantMessaging(contact.getJid());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add an {@link OxMessageListener}. The listener gets notified about incoming {@link OpenPgpMessage}s which
|
||||||
|
* contained an OX-IM message.
|
||||||
|
* @param listener listener
|
||||||
|
* @return true if the listener gets added, otherwise false.
|
||||||
|
*/
|
||||||
public boolean addOxMessageListener(OxMessageListener listener) {
|
public boolean addOxMessageListener(OxMessageListener listener) {
|
||||||
return oxMessageListeners.add(listener);
|
return oxMessageListeners.add(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove an {@link OxMessageListener}. The listener will no longer be notified about OX-IM messages.
|
||||||
|
* @param listener listener
|
||||||
|
* @return true, if the listener gets removed, otherwise false
|
||||||
|
*/
|
||||||
public boolean removeOxMessageListener(OxMessageListener listener) {
|
public boolean removeOxMessageListener(OxMessageListener listener) {
|
||||||
return oxMessageListeners.remove(listener);
|
return oxMessageListeners.remove(listener);
|
||||||
}
|
}
|
||||||
|
@ -125,6 +146,19 @@ public final class OXInstantMessagingManager extends Manager implements Signcryp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send an OX message to a {@link OpenPgpContact}. The message will be encrypted to all active keys of the contact,
|
||||||
|
* as well as all of our active keys. The message is also signed with our key.
|
||||||
|
*
|
||||||
|
* @param contact contact capable of OpenPGP for XMPP: Instant Messaging.
|
||||||
|
* @param body message body.
|
||||||
|
* @throws InterruptedException if the connection is interrupted
|
||||||
|
* @throws MissingOpenPgpKeyPairException if we cannot access our signing key
|
||||||
|
* @throws IOException IO is dangerous
|
||||||
|
* @throws SmackException.NotConnectedException if we are not connected
|
||||||
|
* @throws SmackOpenPgpException in case of an OpenPGP error
|
||||||
|
* @throws SmackException.NotLoggedInException if we are not logged in
|
||||||
|
*/
|
||||||
public void sendOxMessage(OpenPgpContact contact, CharSequence body)
|
public void sendOxMessage(OpenPgpContact contact, CharSequence body)
|
||||||
throws InterruptedException, MissingOpenPgpKeyPairException, IOException,
|
throws InterruptedException, MissingOpenPgpKeyPairException, IOException,
|
||||||
SmackException.NotConnectedException, SmackOpenPgpException, SmackException.NotLoggedInException {
|
SmackException.NotConnectedException, SmackOpenPgpException, SmackException.NotLoggedInException {
|
||||||
|
|
|
@ -140,10 +140,10 @@ public class OpenPgpContact {
|
||||||
/**
|
/**
|
||||||
* Fetch the metadata node to get a {@link PublicKeysListElement} and update any missing or outdated keys.
|
* Fetch the metadata node to get a {@link PublicKeysListElement} and update any missing or outdated keys.
|
||||||
*
|
*
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException if the connection is interrupted
|
||||||
* @throws XMPPException.XMPPErrorException
|
* @throws XMPPException.XMPPErrorException in case of an XMPP protocol error
|
||||||
* @throws SmackException
|
* @throws SmackException in case of an error in Smack
|
||||||
* @throws SmackOpenPgpException
|
* @throws SmackOpenPgpException in case of an OpenPGP exception
|
||||||
*/
|
*/
|
||||||
public void updateKeys()
|
public void updateKeys()
|
||||||
throws InterruptedException, XMPPException.XMPPErrorException, SmackException, SmackOpenPgpException {
|
throws InterruptedException, XMPPException.XMPPErrorException, SmackException, SmackOpenPgpException {
|
||||||
|
@ -182,12 +182,12 @@ public class OpenPgpContact {
|
||||||
* Update the key identified by the {@code fingerprint}.
|
* Update the key identified by the {@code fingerprint}.
|
||||||
*
|
*
|
||||||
* @param fingerprint fingerprint of the key
|
* @param fingerprint fingerprint of the key
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException if the connection is interrupted
|
||||||
* @throws XMPPException.XMPPErrorException
|
* @throws XMPPException.XMPPErrorException in case of an XMPP protocol error
|
||||||
* @throws SmackException
|
* @throws SmackException in case of an exception in Smack
|
||||||
* @throws IOException
|
* @throws IOException IO is dangerous
|
||||||
* @throws MissingUserIdOnKeyException
|
* @throws MissingUserIdOnKeyException if the key is missing a user id with the contacts jid
|
||||||
* @throws SmackOpenPgpException
|
* @throws SmackOpenPgpException in case of an OpenPGP exception
|
||||||
*/
|
*/
|
||||||
public void updateKey(OpenPgpV4Fingerprint fingerprint)
|
public void updateKey(OpenPgpV4Fingerprint fingerprint)
|
||||||
throws InterruptedException, XMPPException.XMPPErrorException, SmackException, IOException,
|
throws InterruptedException, XMPPException.XMPPErrorException, SmackException, IOException,
|
||||||
|
@ -212,9 +212,9 @@ public class OpenPgpContact {
|
||||||
*
|
*
|
||||||
* @param data OpenPgp keys byte representation.
|
* @param data OpenPgp keys byte representation.
|
||||||
* @return the fingerprint of the imported key.
|
* @return the fingerprint of the imported key.
|
||||||
* @throws SmackOpenPgpException
|
* @throws SmackOpenPgpException in case of an OpenPGP error
|
||||||
* @throws MissingUserIdOnKeyException
|
* @throws MissingUserIdOnKeyException if the key is missing a user id with the contacts jid
|
||||||
* @throws IOException
|
* @throws IOException IO is dangerous
|
||||||
*/
|
*/
|
||||||
private OpenPgpV4Fingerprint importPublicKey(byte[] data)
|
private OpenPgpV4Fingerprint importPublicKey(byte[] data)
|
||||||
throws SmackOpenPgpException, MissingUserIdOnKeyException, IOException {
|
throws SmackOpenPgpException, MissingUserIdOnKeyException, IOException {
|
||||||
|
|
|
@ -268,7 +268,7 @@ public final class OpenPgpManager extends Manager {
|
||||||
*
|
*
|
||||||
* @see <a href="https://xmpp.org/extensions/xep-0373.html#synchro-pep">XEP-0373 §5</a>
|
* @see <a href="https://xmpp.org/extensions/xep-0373.html#synchro-pep">XEP-0373 §5</a>
|
||||||
*
|
*
|
||||||
* @param connection
|
* @param connection XMPP connection
|
||||||
* @return true, if the server supports secret key backups, otherwise false.
|
* @return true, if the server supports secret key backups, otherwise false.
|
||||||
* @throws XMPPException.XMPPErrorException in case of an XMPP protocol error.
|
* @throws XMPPException.XMPPErrorException in case of an XMPP protocol error.
|
||||||
* @throws SmackException.NotConnectedException if we are not connected.
|
* @throws SmackException.NotConnectedException if we are not connected.
|
||||||
|
@ -341,6 +341,9 @@ public final class OpenPgpManager extends Manager {
|
||||||
*
|
*
|
||||||
* @param codeCallback callback for prompting the user to provide the secret backup code.
|
* @param codeCallback callback for prompting the user to provide the secret backup code.
|
||||||
* @param selectionCallback callback allowing the user to select a secret key which will be restored.
|
* @param selectionCallback callback allowing the user to select a secret key which will be restored.
|
||||||
|
*
|
||||||
|
* @return fingerprint of the restored secret key
|
||||||
|
*
|
||||||
* @throws InterruptedException if the connection gets interrupted.
|
* @throws InterruptedException if the connection gets interrupted.
|
||||||
* @throws PubSubException.NotALeafNodeException if the private node is not a {@link LeafNode}.
|
* @throws PubSubException.NotALeafNodeException if the private node is not a {@link LeafNode}.
|
||||||
* @throws XMPPException.XMPPErrorException in case of an XMPP protocol error.
|
* @throws XMPPException.XMPPErrorException in case of an XMPP protocol error.
|
||||||
|
@ -348,6 +351,10 @@ public final class OpenPgpManager extends Manager {
|
||||||
* @throws SmackException.NoResponseException if the server doesn't respond.
|
* @throws SmackException.NoResponseException if the server doesn't respond.
|
||||||
* @throws SmackOpenPgpException if something goes wrong while restoring the secret key.
|
* @throws SmackOpenPgpException if something goes wrong while restoring the secret key.
|
||||||
* @throws InvalidBackupCodeException if the user-provided backup code is invalid.
|
* @throws InvalidBackupCodeException if the user-provided backup code is invalid.
|
||||||
|
* @throws SmackException.NotLoggedInException if we are not logged in
|
||||||
|
* @throws IOException IO is dangerous
|
||||||
|
* @throws MissingUserIdOnKeyException if the key that is to be imported is missing a user-id with our jid
|
||||||
|
* @throws NoBackupFoundException if no secret key backup has been found
|
||||||
*/
|
*/
|
||||||
public OpenPgpV4Fingerprint restoreSecretKeyServerBackup(AskForBackupCodeCallback codeCallback,
|
public OpenPgpV4Fingerprint restoreSecretKeyServerBackup(AskForBackupCodeCallback codeCallback,
|
||||||
SecretKeyRestoreSelectionCallback selectionCallback)
|
SecretKeyRestoreSelectionCallback selectionCallback)
|
||||||
|
|
|
@ -55,8 +55,10 @@ public interface OpenPgpProvider {
|
||||||
*
|
*
|
||||||
* @throws MissingOpenPgpKeyPairException if the OpenPGP key pair with the given {@link OpenPgpV4Fingerprint}
|
* @throws MissingOpenPgpKeyPairException if the OpenPGP key pair with the given {@link OpenPgpV4Fingerprint}
|
||||||
* is not available.
|
* is not available.
|
||||||
* @throws MissingOpenPgpKeyPairException if any of the OpenPGP public keys whose {@link OpenPgpV4Fingerprint}
|
* @throws MissingOpenPgpPublicKeyException if any of the OpenPGP public keys whose {@link OpenPgpV4Fingerprint}
|
||||||
* is listed in {@code encryptionKeys} is not available.
|
* is listed in {@code encryptionKeys} is not available.
|
||||||
|
* @throws SmackOpenPgpException in case of an OpenPGP error
|
||||||
|
* @throws IOException IO is dangerous
|
||||||
*/
|
*/
|
||||||
byte[] signAndEncrypt(SigncryptElement element,
|
byte[] signAndEncrypt(SigncryptElement element,
|
||||||
OpenPgpV4Fingerprint signingKey,
|
OpenPgpV4Fingerprint signingKey,
|
||||||
|
@ -76,6 +78,8 @@ public interface OpenPgpProvider {
|
||||||
*
|
*
|
||||||
* @throws MissingOpenPgpKeyPairException if we don't have the key pair for the
|
* @throws MissingOpenPgpKeyPairException if we don't have the key pair for the
|
||||||
* {@link OpenPgpV4Fingerprint} available.
|
* {@link OpenPgpV4Fingerprint} available.
|
||||||
|
* @throws IOException IO is dangerous
|
||||||
|
* @throws SmackOpenPgpException in case of an OpenPGP error
|
||||||
*/
|
*/
|
||||||
byte[] sign(SignElement element, OpenPgpV4Fingerprint singingKeyFingerprint)
|
byte[] sign(SignElement element, OpenPgpV4Fingerprint singingKeyFingerprint)
|
||||||
throws MissingOpenPgpKeyPairException, IOException, SmackOpenPgpException;
|
throws MissingOpenPgpKeyPairException, IOException, SmackOpenPgpException;
|
||||||
|
@ -97,6 +101,8 @@ public interface OpenPgpProvider {
|
||||||
* @throws MissingOpenPgpPublicKeyException if any of the OpenPGP public keys whose
|
* @throws MissingOpenPgpPublicKeyException if any of the OpenPGP public keys whose
|
||||||
* {@link OpenPgpV4Fingerprint} is listed in {@code encryptionKeys}
|
* {@link OpenPgpV4Fingerprint} is listed in {@code encryptionKeys}
|
||||||
* is not available.
|
* is not available.
|
||||||
|
* @throws IOException IO is dangerous
|
||||||
|
* @throws SmackOpenPgpException in case of an OpenPGP error
|
||||||
*/
|
*/
|
||||||
byte[] encrypt(CryptElement element, MultiMap<BareJid, OpenPgpV4Fingerprint> encryptionKeyFingerprints)
|
byte[] encrypt(CryptElement element, MultiMap<BareJid, OpenPgpV4Fingerprint> encryptionKeyFingerprints)
|
||||||
throws MissingOpenPgpPublicKeyException, IOException, SmackOpenPgpException;
|
throws MissingOpenPgpPublicKeyException, IOException, SmackOpenPgpException;
|
||||||
|
@ -111,14 +117,25 @@ public interface OpenPgpProvider {
|
||||||
* @see <a href="https://xmpp.org/extensions/xep-0373.html#exchange">XEP-0373 §3.1</a>
|
* @see <a href="https://xmpp.org/extensions/xep-0373.html#exchange">XEP-0373 §3.1</a>
|
||||||
*
|
*
|
||||||
* @param bytes byte array which contains the encrypted {@link OpenPgpContentElement}.
|
* @param bytes byte array which contains the encrypted {@link OpenPgpContentElement}.
|
||||||
|
* @param sender sender of the message
|
||||||
|
* @param missingPublicKeyCallback callback to handle missing public keys
|
||||||
* @return byte array which contains the decrypted {@link OpenPgpContentElement}, as well as metadata.
|
* @return byte array which contains the decrypted {@link OpenPgpContentElement}, as well as metadata.
|
||||||
*
|
*
|
||||||
* @throws MissingOpenPgpKeyPairException if we don't have an OpenPGP key pair available that to decrypt
|
* @throws MissingOpenPgpKeyPairException if we don't have an OpenPGP key pair available that to decrypt
|
||||||
* the message.
|
* the message.
|
||||||
|
* @throws SmackOpenPgpException in case of an OpenPGP error
|
||||||
*/
|
*/
|
||||||
DecryptedBytesAndMetadata decrypt(byte[] bytes, BareJid sender, SmackMissingOpenPgpPublicKeyCallback missingPublicKeyCallback)
|
DecryptedBytesAndMetadata decrypt(byte[] bytes, BareJid sender, SmackMissingOpenPgpPublicKeyCallback missingPublicKeyCallback)
|
||||||
throws MissingOpenPgpKeyPairException, SmackOpenPgpException;
|
throws MissingOpenPgpKeyPairException, SmackOpenPgpException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encrypt some data symmetrically using a password.
|
||||||
|
* @param bytes data
|
||||||
|
* @param password password
|
||||||
|
* @return encrypted data
|
||||||
|
* @throws SmackOpenPgpException in case of an OpenPGP error
|
||||||
|
* @throws IOException IO is dangerous
|
||||||
|
*/
|
||||||
byte[] symmetricallyEncryptWithPassword(byte[] bytes, String password) throws SmackOpenPgpException, IOException;
|
byte[] symmetricallyEncryptWithPassword(byte[] bytes, String password) throws SmackOpenPgpException, IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -137,6 +154,11 @@ public interface OpenPgpProvider {
|
||||||
*
|
*
|
||||||
* @param owner JID of the keys owner.
|
* @param owner JID of the keys owner.
|
||||||
* @return byte array representation + {@link OpenPgpV4Fingerprint} of the generated key pair.
|
* @return byte array representation + {@link OpenPgpV4Fingerprint} of the generated key pair.
|
||||||
|
* @throws SmackOpenPgpException in case of an OpenPGP error
|
||||||
|
* @throws InvalidAlgorithmParameterException if invalid algorithm parameters are used for crypto
|
||||||
|
* @throws NoSuchAlgorithmException if the JVM is lacking support for a used algorithm
|
||||||
|
* @throws NoSuchProviderException if the JVM is missing a security provider
|
||||||
|
* @throws IOException IO is dangerous
|
||||||
*/
|
*/
|
||||||
KeyBytesAndFingerprint generateOpenPgpKeyPair(BareJid owner)
|
KeyBytesAndFingerprint generateOpenPgpKeyPair(BareJid owner)
|
||||||
throws SmackOpenPgpException, InvalidAlgorithmParameterException, NoSuchAlgorithmException,
|
throws SmackOpenPgpException, InvalidAlgorithmParameterException, NoSuchAlgorithmException,
|
||||||
|
@ -144,21 +166,51 @@ public interface OpenPgpProvider {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Import a public key. The bytes are expected to be decoded from base64.
|
* Import a public key. The bytes are expected to be decoded from base64.
|
||||||
* @param owner
|
*
|
||||||
* @param bytes
|
* @param owner owner of the public key
|
||||||
* @return
|
* @param bytes byte representation of the publick key
|
||||||
* @throws MissingUserIdOnKeyException
|
*
|
||||||
* @throws IOException
|
* @return fingerprint of the imported public key
|
||||||
* @throws SmackOpenPgpException
|
*
|
||||||
|
* @throws MissingUserIdOnKeyException if the key is missing a user id with {@code owner}.
|
||||||
|
* @throws IOException IO is dangerous
|
||||||
|
* @throws SmackOpenPgpException if an OpenPGP error occurs
|
||||||
*/
|
*/
|
||||||
OpenPgpV4Fingerprint importPublicKey(BareJid owner, byte[] bytes)
|
OpenPgpV4Fingerprint importPublicKey(BareJid owner, byte[] bytes)
|
||||||
throws MissingUserIdOnKeyException, IOException, SmackOpenPgpException;
|
throws MissingUserIdOnKeyException, IOException, SmackOpenPgpException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Import a secret key. The bytes are expected to be decoded from base64.
|
||||||
|
*
|
||||||
|
* @param owner owner of the secret key
|
||||||
|
* @param bytes byte representation of the secret key
|
||||||
|
*
|
||||||
|
* @return fingerprint of the imported secret key
|
||||||
|
*
|
||||||
|
* @throws MissingUserIdOnKeyException if the key is missing a user-id of {@code owner}
|
||||||
|
* @throws SmackOpenPgpException in case of an OpenPGP error
|
||||||
|
* @throws IOException IO is dangerous
|
||||||
|
*/
|
||||||
OpenPgpV4Fingerprint importSecretKey(BareJid owner, byte[] bytes)
|
OpenPgpV4Fingerprint importSecretKey(BareJid owner, byte[] bytes)
|
||||||
throws MissingUserIdOnKeyException, SmackOpenPgpException, IOException;
|
throws MissingUserIdOnKeyException, SmackOpenPgpException, IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Import a secret key that belong to ourselves.
|
||||||
|
*
|
||||||
|
* @param bytes byte representation of the secret key.
|
||||||
|
*
|
||||||
|
* @return fingerprint of the imported secret key.
|
||||||
|
*
|
||||||
|
* @throws MissingUserIdOnKeyException if the secret key is missing a user-id with our jid
|
||||||
|
* @throws SmackOpenPgpException in case of an OpenPGP error
|
||||||
|
* @throws IOException IO is dangerous
|
||||||
|
*/
|
||||||
OpenPgpV4Fingerprint importSecretKey(byte[] bytes)
|
OpenPgpV4Fingerprint importSecretKey(byte[] bytes)
|
||||||
throws MissingUserIdOnKeyException, SmackOpenPgpException, IOException;
|
throws MissingUserIdOnKeyException, SmackOpenPgpException, IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the underlying {@link OpenPgpStore}.
|
||||||
|
* @return store
|
||||||
|
*/
|
||||||
OpenPgpStore getStore();
|
OpenPgpStore getStore();
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,7 @@ public interface OpenPgpStore {
|
||||||
* @param owner owner.
|
* @param owner owner.
|
||||||
* @return set of fingerprints of available OpenPGP key pairs master keys.
|
* @return set of fingerprints of available OpenPGP key pairs master keys.
|
||||||
*
|
*
|
||||||
* @throws SmackOpenPgpException
|
* @throws SmackOpenPgpException in case of an OpenPGP error
|
||||||
*/
|
*/
|
||||||
Set<OpenPgpV4Fingerprint> getAvailableKeyPairFingerprints(BareJid owner) throws SmackOpenPgpException;
|
Set<OpenPgpV4Fingerprint> getAvailableKeyPairFingerprints(BareJid owner) throws SmackOpenPgpException;
|
||||||
|
|
||||||
|
@ -62,8 +62,7 @@ public interface OpenPgpStore {
|
||||||
* Return a {@link Map} containing the {@link OpenPgpV4Fingerprint}s of all OpenPGP public keys of a
|
* Return a {@link Map} containing the {@link OpenPgpV4Fingerprint}s of all OpenPGP public keys of a
|
||||||
* contact, which we have locally available, as well as the date, those keys had been published on.
|
* contact, which we have locally available, as well as the date, those keys had been published on.
|
||||||
* <br>
|
* <br>
|
||||||
* Note: This returns a {@link Map} that might be different from the result of
|
* Note: This returns a {@link Map} that might be different from the result of (BareJid)}.
|
||||||
* {@link #getAvailableKeysFingerprints(BareJid)} (BareJid)}.
|
|
||||||
* Messages should be encrypted to the intersection of both key sets.
|
* Messages should be encrypted to the intersection of both key sets.
|
||||||
*
|
*
|
||||||
* @param contact contact.
|
* @param contact contact.
|
||||||
|
|
|
@ -26,7 +26,7 @@ public interface DisplayBackupCodeCallback {
|
||||||
* @see <a href="https://xmpp.org/extensions/xep-0373.html#sect-idm139662753819792">
|
* @see <a href="https://xmpp.org/extensions/xep-0373.html#sect-idm139662753819792">
|
||||||
* XEP-0373 §5.3 about the format of the backup code</a>
|
* XEP-0373 §5.3 about the format of the backup code</a>
|
||||||
*
|
*
|
||||||
* @param backupCode
|
* @param backupCode backup code
|
||||||
*/
|
*/
|
||||||
void displayBackupCode(String backupCode);
|
void displayBackupCode(String backupCode);
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,10 +90,10 @@ public class PubSubDelegate {
|
||||||
*
|
*
|
||||||
* @param node {@link LeafNode} whose PubSub access model we want to change
|
* @param node {@link LeafNode} whose PubSub access model we want to change
|
||||||
* @param accessModel new access model.
|
* @param accessModel new access model.
|
||||||
* @throws XMPPException.XMPPErrorException
|
* @throws XMPPException.XMPPErrorException in case of an XMPP protocol error.
|
||||||
* @throws SmackException.NotConnectedException
|
* @throws SmackException.NotConnectedException if we are not connected.
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException if the connection is interrupted.
|
||||||
* @throws SmackException.NoResponseException
|
* @throws SmackException.NoResponseException if the server doesn't respond.
|
||||||
*/
|
*/
|
||||||
public static void changeAccessModelIfNecessary(LeafNode node, AccessModel accessModel)
|
public static void changeAccessModelIfNecessary(LeafNode node, AccessModel accessModel)
|
||||||
throws XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException,
|
throws XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException,
|
||||||
|
@ -110,13 +110,17 @@ public class PubSubDelegate {
|
||||||
* Publish the users OpenPGP public key to the public key node if necessary.
|
* Publish the users OpenPGP public key to the public key node if necessary.
|
||||||
* Also announce the key to other users by updating the metadata node.
|
* Also announce the key to other users by updating the metadata node.
|
||||||
*
|
*
|
||||||
|
* @param connection XMPP connection
|
||||||
|
* @param pubkeyElement {@link PubkeyElement} containing the public key
|
||||||
|
* @param fingerprint fingerprint of the public key
|
||||||
* @see <a href="https://xmpp.org/extensions/xep-0373.html#annoucning-pubkey">XEP-0373 §4.1</a>
|
* @see <a href="https://xmpp.org/extensions/xep-0373.html#annoucning-pubkey">XEP-0373 §4.1</a>
|
||||||
*
|
*
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException if the connection gets interrupted.
|
||||||
* @throws PubSubException.NotALeafNodeException
|
* @throws PubSubException.NotALeafNodeException if either the metadata node or the public key node is not a
|
||||||
* @throws XMPPException.XMPPErrorException
|
* {@link LeafNode}.
|
||||||
* @throws SmackException.NotConnectedException
|
* @throws XMPPException.XMPPErrorException in case of an XMPP protocol error.
|
||||||
* @throws SmackException.NoResponseException
|
* @throws SmackException.NotConnectedException if we are not connected.
|
||||||
|
* @throws SmackException.NoResponseException if the server doesn't respond.
|
||||||
*/
|
*/
|
||||||
public static void publishPublicKey(XMPPConnection connection, PubkeyElement pubkeyElement, OpenPgpV4Fingerprint fingerprint)
|
public static void publishPublicKey(XMPPConnection connection, PubkeyElement pubkeyElement, OpenPgpV4Fingerprint fingerprint)
|
||||||
throws InterruptedException, PubSubException.NotALeafNodeException,
|
throws InterruptedException, PubSubException.NotALeafNodeException,
|
||||||
|
@ -160,10 +164,11 @@ public class PubSubDelegate {
|
||||||
* Consult the public key metadata node and fetch a list of all of our published OpenPGP public keys.
|
* Consult the public key metadata node and fetch a list of all of our published OpenPGP public keys.
|
||||||
* TODO: Add @see which points to the (for now missing) respective example in XEP-0373.
|
* TODO: Add @see which points to the (for now missing) respective example in XEP-0373.
|
||||||
*
|
*
|
||||||
|
* @param connection XMPP connection
|
||||||
* @return content of our metadata node.
|
* @return content of our metadata node.
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException if the connection gets interrupted.
|
||||||
* @throws SmackException
|
* @throws SmackException in case of an error in Smack.
|
||||||
* @throws XMPPException.XMPPErrorException
|
* @throws XMPPException.XMPPErrorException in case of an XMPP protocol exception.
|
||||||
*/
|
*/
|
||||||
public static PublicKeysListElement fetchPubkeysList(XMPPConnection connection)
|
public static PublicKeysListElement fetchPubkeysList(XMPPConnection connection)
|
||||||
throws InterruptedException, SmackException,
|
throws InterruptedException, SmackException,
|
||||||
|
@ -176,11 +181,12 @@ public class PubSubDelegate {
|
||||||
* Consult the public key metadata node of {@code contact} to fetch the list of their published OpenPGP public keys.
|
* Consult the public key metadata node of {@code contact} to fetch the list of their published OpenPGP public keys.
|
||||||
* TODO: Add @see which points to the (for now missing) respective example in XEP-0373.
|
* TODO: Add @see which points to the (for now missing) respective example in XEP-0373.
|
||||||
*
|
*
|
||||||
|
* @param connection XMPP connection
|
||||||
* @param contact {@link BareJid} of the user we want to fetch the list from.
|
* @param contact {@link BareJid} of the user we want to fetch the list from.
|
||||||
* @return content of {@code contact}'s metadata node.
|
* @return content of {@code contact}'s metadata node.
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException if the connection gets interrupted.
|
||||||
* @throws SmackException
|
* @throws SmackException in case of an exception in Smack.
|
||||||
* @throws XMPPException.XMPPErrorException
|
* @throws XMPPException.XMPPErrorException in case of an XMPP protocol exception.
|
||||||
*/
|
*/
|
||||||
public static PublicKeysListElement fetchPubkeysList(XMPPConnection connection, BareJid contact)
|
public static PublicKeysListElement fetchPubkeysList(XMPPConnection connection, BareJid contact)
|
||||||
throws InterruptedException, SmackException,
|
throws InterruptedException, SmackException,
|
||||||
|
@ -200,10 +206,11 @@ public class PubSubDelegate {
|
||||||
/**
|
/**
|
||||||
* Delete our metadata node.
|
* Delete our metadata node.
|
||||||
*
|
*
|
||||||
* @throws XMPPException.XMPPErrorException
|
* @param connection XMPP connection
|
||||||
* @throws SmackException.NotConnectedException
|
* @throws XMPPException.XMPPErrorException in case of an XMPP protocol error.
|
||||||
* @throws InterruptedException
|
* @throws SmackException.NotConnectedException if we are not connected.
|
||||||
* @throws SmackException.NoResponseException
|
* @throws InterruptedException if the connection is interrupted.
|
||||||
|
* @throws SmackException.NoResponseException if the server doesn't respond.
|
||||||
*/
|
*/
|
||||||
public static void deletePubkeysListNode(XMPPConnection connection)
|
public static void deletePubkeysListNode(XMPPConnection connection)
|
||||||
throws XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException,
|
throws XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException,
|
||||||
|
@ -223,12 +230,12 @@ public class PubSubDelegate {
|
||||||
/**
|
/**
|
||||||
* Delete the public key node of the key with fingerprint {@code fingerprint}.
|
* Delete the public key node of the key with fingerprint {@code fingerprint}.
|
||||||
*
|
*
|
||||||
* @param connection
|
* @param connection XMPP connection
|
||||||
* @param fingerprint
|
* @param fingerprint fingerprint of the key we want to delete
|
||||||
* @throws XMPPException.XMPPErrorException
|
* @throws XMPPException.XMPPErrorException in case of an XMPP protocol error.
|
||||||
* @throws SmackException.NotConnectedException
|
* @throws SmackException.NotConnectedException if we are not connected.
|
||||||
* @throws InterruptedException
|
* @throws InterruptedException if the connection gets interrupted.
|
||||||
* @throws SmackException.NoResponseException
|
* @throws SmackException.NoResponseException if the server doesn't respond.
|
||||||
*/
|
*/
|
||||||
public static void deletePublicKeyNode(XMPPConnection connection, OpenPgpV4Fingerprint fingerprint)
|
public static void deletePublicKeyNode(XMPPConnection connection, OpenPgpV4Fingerprint fingerprint)
|
||||||
throws XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException,
|
throws XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException,
|
||||||
|
@ -251,13 +258,14 @@ public class PubSubDelegate {
|
||||||
*
|
*
|
||||||
* @see <a href="https://xmpp.org/extensions/xep-0373.html#discover-pubkey">XEP-0373 §4.3</a>
|
* @see <a href="https://xmpp.org/extensions/xep-0373.html#discover-pubkey">XEP-0373 §4.3</a>
|
||||||
*
|
*
|
||||||
|
* @param connection XMPP connection
|
||||||
* @param contact {@link BareJid} of the contact we want to fetch a key from.
|
* @param contact {@link BareJid} of the contact we want to fetch a key from.
|
||||||
* @param v4_fingerprint upper case, hex encoded v4 fingerprint of the contacts key.
|
* @param v4_fingerprint upper case, hex encoded v4 fingerprint of the contacts key.
|
||||||
* @return {@link PubkeyElement} containing the requested public key.
|
* @return {@link PubkeyElement} containing the requested public key.
|
||||||
*
|
*
|
||||||
* @throws InterruptedException if we get interrupted.
|
* @throws InterruptedException if we get interrupted.
|
||||||
* @throws SmackException in case the node cannot be fetched.
|
* @throws SmackException in case the node cannot be fetched.
|
||||||
* @throws XMPPException.XMPPErrorException
|
* @throws XMPPException.XMPPErrorException in case of an XMPP protocol error.
|
||||||
*/
|
*/
|
||||||
public static PubkeyElement fetchPubkey(XMPPConnection connection, BareJid contact, OpenPgpV4Fingerprint v4_fingerprint)
|
public static PubkeyElement fetchPubkey(XMPPConnection connection, BareJid contact, OpenPgpV4Fingerprint v4_fingerprint)
|
||||||
throws InterruptedException, SmackException, XMPPException.XMPPErrorException {
|
throws InterruptedException, SmackException, XMPPException.XMPPErrorException {
|
||||||
|
@ -287,13 +295,12 @@ public class PubSubDelegate {
|
||||||
* @throws XMPPException.XMPPErrorException in case of an protocol related error
|
* @throws XMPPException.XMPPErrorException in case of an protocol related error
|
||||||
* @throws SmackException.NotConnectedException if we are not connected
|
* @throws SmackException.NotConnectedException if we are not connected
|
||||||
* @throws SmackException.NoResponseException /watch?v=0peBq89ZTrc
|
* @throws SmackException.NoResponseException /watch?v=0peBq89ZTrc
|
||||||
* @throws SmackException.NotLoggedInException if we are not logged in
|
|
||||||
* @throws SmackException.FeatureNotSupportedException if the Server doesn't support the whitelist access model
|
* @throws SmackException.FeatureNotSupportedException if the Server doesn't support the whitelist access model
|
||||||
*/
|
*/
|
||||||
public static void depositSecretKey(XMPPConnection connection, SecretkeyElement element)
|
public static void depositSecretKey(XMPPConnection connection, SecretkeyElement element)
|
||||||
throws InterruptedException, PubSubException.NotALeafNodeException,
|
throws InterruptedException, PubSubException.NotALeafNodeException,
|
||||||
XMPPException.XMPPErrorException, SmackException.NotConnectedException, SmackException.NoResponseException,
|
XMPPException.XMPPErrorException, SmackException.NotConnectedException, SmackException.NoResponseException,
|
||||||
SmackException.NotLoggedInException, SmackException.FeatureNotSupportedException {
|
SmackException.FeatureNotSupportedException {
|
||||||
if (!OpenPgpManager.serverSupportsSecretKeyBackups(connection)) {
|
if (!OpenPgpManager.serverSupportsSecretKeyBackups(connection)) {
|
||||||
throw new SmackException.FeatureNotSupportedException("http://jabber.org/protocol/pubsub#access-whitelist");
|
throw new SmackException.FeatureNotSupportedException("http://jabber.org/protocol/pubsub#access-whitelist");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue