diff options
author | Lance Stout <lancestout@gmail.com> | 2012-10-19 00:15:21 -0700 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2012-10-19 00:15:21 -0700 |
commit | 0d448b82214ed8bed3477db375799ae8399d0393 (patch) | |
tree | cad4b16d9c1622d858d70e6aae4dece230566734 /sleekxmpp/plugins/xep_0257/client_cert_management.py | |
parent | 77f2a339e1626501a1df388050f09342d7bbcd1d (diff) | |
parent | e6c95f0a2acfd56ad47f60d9576a0db5458ed118 (diff) | |
download | slixmpp-0d448b82214ed8bed3477db375799ae8399d0393.tar.gz slixmpp-0d448b82214ed8bed3477db375799ae8399d0393.tar.bz2 slixmpp-0d448b82214ed8bed3477db375799ae8399d0393.tar.xz slixmpp-0d448b82214ed8bed3477db375799ae8399d0393.zip |
Merge branch 'master' into develop
Diffstat (limited to 'sleekxmpp/plugins/xep_0257/client_cert_management.py')
-rw-r--r-- | sleekxmpp/plugins/xep_0257/client_cert_management.py | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/sleekxmpp/plugins/xep_0257/client_cert_management.py b/sleekxmpp/plugins/xep_0257/client_cert_management.py new file mode 100644 index 00000000..49317843 --- /dev/null +++ b/sleekxmpp/plugins/xep_0257/client_cert_management.py @@ -0,0 +1,65 @@ +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +import logging + +from sleekxmpp import Iq +from sleekxmpp.plugins import BasePlugin +from sleekxmpp.xmlstream import register_stanza_plugin +from sleekxmpp.plugins.xep_0257 import stanza, Certs +from sleekxmpp.plugins.xep_0257 import AppendCert, DisableCert, RevokeCert + + +log = logging.getLogger(__name__) + + +class XEP_0257(BasePlugin): + + name = 'xep_0257' + description = 'XEP-0258: Client Certificate Management for SASL EXTERNAL' + dependencies = set(['xep_0030']) + stanza = stanza + + def plugin_init(self): + register_stanza_plugin(Iq, Certs) + register_stanza_plugin(Iq, AppendCert) + register_stanza_plugin(Iq, DisableCert) + register_stanza_plugin(Iq, RevokeCert) + + def get_certs(self, ifrom=None, block=True, timeout=None, callback=None): + iq = self.xmpp.Iq() + iq['type'] = 'get' + iq['from'] = ifrom + iq.enable('sasl_certs') + return iq.send(block=block, timeout=timeout, callback=callback) + + def add_cert(self, name, cert, allow_management=True, ifrom=None, + block=True, timeout=None, callback=None): + iq = self.xmpp.Iq() + iq['type'] = 'set' + iq['from'] = ifrom + iq['sasl_cert_append']['name'] = name + iq['sasl_cert_append']['x509cert'] = cert + iq['sasl_cert_append']['cert_management'] = allow_management + return iq.send(block=block, timeout=timeout, callback=callback) + + def disable_cert(self, name, ifrom=None, block=True, + timeout=None, callback=None): + iq = self.xmpp.Iq() + iq['type'] = 'set' + iq['from'] = ifrom + iq['sasl_cert_disable']['name'] = name + return iq.send(block=block, timeout=timeout, callback=callback) + + def revoke_cert(self, name, ifrom=None, block=True, + timeout=None, callback=None): + iq = self.xmpp.Iq() + iq['type'] = 'set' + iq['from'] = ifrom + iq['sasl_cert_revoke']['name'] = name + return iq.send(block=block, timeout=timeout, callback=callback) |