mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-22 06:12:05 +01:00
OpenPgpPubSubUtil: Allow custom nodes for secret key backup
This commit is contained in:
parent
1ea73e38cf
commit
079e324fe0
1 changed files with 22 additions and 3 deletions
|
@ -344,11 +344,18 @@ public class OpenPgpPubSubUtil {
|
||||||
throws InterruptedException, PubSubException.NotALeafNodeException,
|
throws InterruptedException, PubSubException.NotALeafNodeException,
|
||||||
XMPPException.XMPPErrorException, SmackException.NotConnectedException, SmackException.NoResponseException,
|
XMPPException.XMPPErrorException, SmackException.NotConnectedException, SmackException.NoResponseException,
|
||||||
SmackException.FeatureNotSupportedException {
|
SmackException.FeatureNotSupportedException {
|
||||||
|
depositSecretKey(connection, element, PEP_NODE_SECRET_KEY);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void depositSecretKey(XMPPConnection connection, SecretkeyElement element, String nodeName)
|
||||||
|
throws SmackException.FeatureNotSupportedException, XMPPException.XMPPErrorException,
|
||||||
|
SmackException.NotConnectedException, InterruptedException, SmackException.NoResponseException,
|
||||||
|
PubSubException.NotALeafNodeException {
|
||||||
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");
|
||||||
}
|
}
|
||||||
PubSubManager pm = PepManager.getInstanceFor(connection).getPepPubSubManager();
|
PubSubManager pm = PepManager.getInstanceFor(connection).getPepPubSubManager();
|
||||||
LeafNode secretKeyNode = pm.getOrCreateLeafNode(PEP_NODE_SECRET_KEY);
|
LeafNode secretKeyNode = pm.getOrCreateLeafNode(nodeName);
|
||||||
OpenPgpPubSubUtil.changeAccessModelIfNecessary(secretKeyNode, AccessModel.whitelist);
|
OpenPgpPubSubUtil.changeAccessModelIfNecessary(secretKeyNode, AccessModel.whitelist);
|
||||||
|
|
||||||
secretKeyNode.publish(new PayloadItem<>(element));
|
secretKeyNode.publish(new PayloadItem<>(element));
|
||||||
|
@ -372,8 +379,14 @@ public class OpenPgpPubSubUtil {
|
||||||
public static SecretkeyElement fetchSecretKey(PepManager pepManager)
|
public static SecretkeyElement fetchSecretKey(PepManager pepManager)
|
||||||
throws InterruptedException, PubSubException.NotALeafNodeException, XMPPException.XMPPErrorException,
|
throws InterruptedException, PubSubException.NotALeafNodeException, XMPPException.XMPPErrorException,
|
||||||
SmackException.NotConnectedException, SmackException.NoResponseException {
|
SmackException.NotConnectedException, SmackException.NoResponseException {
|
||||||
|
return fetchSecretKey(pepManager, PEP_NODE_SECRET_KEY);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SecretkeyElement fetchSecretKey(PepManager pepManager, String nodeName)
|
||||||
|
throws InterruptedException, PubSubException.NotALeafNodeException, XMPPException.XMPPErrorException,
|
||||||
|
SmackException.NotConnectedException, SmackException.NoResponseException {
|
||||||
PubSubManager pm = pepManager.getPepPubSubManager();
|
PubSubManager pm = pepManager.getPepPubSubManager();
|
||||||
LeafNode secretKeyNode = pm.getOrCreateLeafNode(PEP_NODE_SECRET_KEY);
|
LeafNode secretKeyNode = pm.getOrCreateLeafNode(nodeName);
|
||||||
List<PayloadItem<SecretkeyElement>> list = secretKeyNode.getItems(1);
|
List<PayloadItem<SecretkeyElement>> list = secretKeyNode.getItems(1);
|
||||||
if (list.size() == 0) {
|
if (list.size() == 0) {
|
||||||
LOGGER.log(Level.INFO, "No secret key published!");
|
LOGGER.log(Level.INFO, "No secret key published!");
|
||||||
|
@ -397,8 +410,14 @@ public class OpenPgpPubSubUtil {
|
||||||
public static boolean deleteSecretKeyNode(PepManager pepManager)
|
public static boolean deleteSecretKeyNode(PepManager pepManager)
|
||||||
throws XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException,
|
throws XMPPException.XMPPErrorException, SmackException.NotConnectedException, InterruptedException,
|
||||||
SmackException.NoResponseException {
|
SmackException.NoResponseException {
|
||||||
|
return deleteSecretKeyNode(pepManager, PEP_NODE_SECRET_KEY);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean deleteSecretKeyNode(PepManager pepManager, String nodeName)
|
||||||
|
throws XMPPException.XMPPErrorException, SmackException.NotConnectedException,
|
||||||
|
InterruptedException, SmackException.NoResponseException {
|
||||||
PubSubManager pm = pepManager.getPepPubSubManager();
|
PubSubManager pm = pepManager.getPepPubSubManager();
|
||||||
return pm.deleteNode(PEP_NODE_SECRET_KEY);
|
return pm.deleteNode(nodeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue