aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2013-10-17 16:23:10 -0500
committerPaul Kehrer <paul.l.kehrer@gmail.com>2013-10-17 16:23:10 -0500
commitb03527f69669eb9c364b898b3e1900758ffd36cd (patch)
tree4e9f6bccd20c198d4f09d2280aa166a1bb7c1dcf
parentb8f6a3669d6895d39652d582c190eea20a7c826b (diff)
downloadcryptography-b03527f69669eb9c364b898b3e1900758ffd36cd.tar.gz
cryptography-b03527f69669eb9c364b898b3e1900758ffd36cd.tar.bz2
cryptography-b03527f69669eb9c364b898b3e1900758ffd36cd.zip
change abstract base class registration to use a decorator in modes
-rw-r--r--cryptography/primitives/block/modes.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/cryptography/primitives/block/modes.py b/cryptography/primitives/block/modes.py
index 221e7393..43631801 100644
--- a/cryptography/primitives/block/modes.py
+++ b/cryptography/primitives/block/modes.py
@@ -16,6 +16,14 @@ from __future__ import absolute_import, division, print_function
from cryptography.primitives import interfaces
+def register(iface):
+ def register_decorator(klass):
+ iface.register(klass)
+ return klass
+ return register_decorator
+
+
+@register(interfaces.ModeWithInitializationVector)
class CBC(object):
name = "CBC"
@@ -28,6 +36,7 @@ class ECB(object):
name = "ECB"
+@register(interfaces.ModeWithInitializationVector)
class OFB(object):
name = "OFB"
@@ -36,6 +45,7 @@ class OFB(object):
self.initialization_vector = initialization_vector
+@register(interfaces.ModeWithInitializationVector)
class CFB(object):
name = "CFB"
@@ -44,15 +54,10 @@ class CFB(object):
self.initialization_vector = initialization_vector
+@register(interfaces.ModeWithNonce)
class CTR(object):
name = "CTR"
def __init__(self, nonce):
super(CTR, self).__init__()
self.nonce = nonce
-
-
-interfaces.ModeWithInitializationVector.register(CBC)
-interfaces.ModeWithInitializationVector.register(OFB)
-interfaces.ModeWithInitializationVector.register(CFB)
-interfaces.ModeWithNonce.register(CTR)