summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormathieui <mathieui@mathieui.net>2021-02-14 11:38:44 +0100
committermathieui <mathieui@mathieui.net>2021-02-26 00:08:56 +0100
commit7772e26a8c766c2606b40f4260e406cd3ed56435 (patch)
treeb9a11d715dc116627e801f25936b6a478ae7be3b
parent0b6326e1cce9e85430fa8015f35a9c19d5d59aaf (diff)
downloadslixmpp-7772e26a8c766c2606b40f4260e406cd3ed56435.tar.gz
slixmpp-7772e26a8c766c2606b40f4260e406cd3ed56435.tar.bz2
slixmpp-7772e26a8c766c2606b40f4260e406cd3ed56435.tar.xz
slixmpp-7772e26a8c766c2606b40f4260e406cd3ed56435.zip
XEP-0027: API changes
- ``get_keyids`` and ``get_keyid`` are now coroutines. - ``set_keyid`` and ``del_keyid`` now return a Future.
-rw-r--r--docs/api/plugins/xep_0027.rst42
-rw-r--r--slixmpp/plugins/xep_0027/gpg.py41
2 files changed, 75 insertions, 8 deletions
diff --git a/docs/api/plugins/xep_0027.rst b/docs/api/plugins/xep_0027.rst
index 418baada..566c9427 100644
--- a/docs/api/plugins/xep_0027.rst
+++ b/docs/api/plugins/xep_0027.rst
@@ -9,6 +9,48 @@ XEP-0027: Current Jabber OpenPGP Usage
:exclude-members: session_bind, plugin_init, plugin_end
+Internal API methods
+--------------------
+
+The default API here is managing a JID→Keyid dict in-memory.
+
+.. glossary::
+
+ get_keyid
+ - **jid**: :class:`~.JID` to get.
+ - **node**: unused
+ - **ifrom**: unused
+ - **args**: unused
+ - **returns**: ``Optional[str]``, the keyid or None
+
+ Get the KeyiD for a JID, None if it is not found.
+
+ set_keyid
+ - **jid**: :class:`~.JID` to set the id for.
+ - **node**: unused
+ - **ifrom**: unused
+ - **args**: ``str``, keyid to set
+
+ Set the KeyiD for a JID.
+
+ del_keyid
+ - **jid**: :class:`~.JID` to delete from the mapping.
+ - **node**: unused
+ - **ifrom**: unused
+ - **args**: unused
+
+ Delete the KeyiD for a JID.
+
+ get_keyids
+ - **jid**: unused
+ - **node**: unused
+ - **ifrom**: unused
+ - **args**: unused
+ - **returns**: ``Dict[JID, str]`` the full internal mapping
+
+ Get all currently stored KeyIDs.
+
+
Stanza elements
---------------
diff --git a/slixmpp/plugins/xep_0027/gpg.py b/slixmpp/plugins/xep_0027/gpg.py
index af5df044..61da7ff0 100644
--- a/slixmpp/plugins/xep_0027/gpg.py
+++ b/slixmpp/plugins/xep_0027/gpg.py
@@ -5,9 +5,11 @@
# See the file LICENSE for copying permission.
from slixmpp.thirdparty import GPG
+from asyncio import Future
+
from slixmpp.stanza import Presence, Message
-from slixmpp.plugins.base import BasePlugin, register_plugin
-from slixmpp.xmlstream import ElementBase, register_stanza_plugin
+from slixmpp.plugins.base import BasePlugin
+from slixmpp.xmlstream import register_stanza_plugin
from slixmpp.xmlstream.handler import Callback
from slixmpp.xmlstream.matcher import StanzaPath
from slixmpp.plugins.xep_0027 import stanza, Signed, Encrypted
@@ -32,6 +34,9 @@ def _extract_data(data, kind):
class XEP_0027(BasePlugin):
+ """
+ XEP-0027: Current Jabber OpenPGP Usage
+ """
name = 'xep_0027'
description = 'XEP-0027: Current Jabber OpenPGP Usage'
@@ -122,16 +127,36 @@ class XEP_0027(BasePlugin):
v = self.gpg.verify(template % (data, sig))
return v
- def set_keyid(self, jid=None, keyid=None):
- self.api['set_keyid'](jid, args=keyid)
+ def set_keyid(self, jid=None, keyid=None) -> Future:
+ """Set a keyid for a specific JID.
+
+ .. versionchanged:: 1.8.0
+ This function now returns a Future.
+ """
+ return self.api['set_keyid'](jid, args=keyid)
+
+ def get_keyid(self, jid=None) -> Future:
+ """Get a keyid for a jid.
- def get_keyid(self, jid=None):
+ .. versionchanged:: 1.8.0
+ This function now returns a Future.
+ """
return self.api['get_keyid'](jid)
- def del_keyid(self, jid=None):
- self.api['del_keyid'](jid)
+ def del_keyid(self, jid=None) -> Future:
+ """Delete a keyid.
+
+ .. versionchanged:: 1.8.0
+ This function now returns a Future.
+ """
+ return self.api['del_keyid'](jid)
+
+ def get_keyids(self) -> Future:
+ """Get stored keyids.
- def get_keyids(self):
+ .. versionchanged:: 1.8.0
+ This function now returns a Future.
+ """
return self.api['get_keyids']()
def _handle_signed_presence(self, pres):