From b03527f69669eb9c364b898b3e1900758ffd36cd Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Thu, 17 Oct 2013 16:23:10 -0500 Subject: [PATCH] change abstract base class registration to use a decorator in modes --- cryptography/primitives/block/modes.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/cryptography/primitives/block/modes.py b/cryptography/primitives/block/modes.py index 221e73934364..43631801110e 100644 --- a/cryptography/primitives/block/modes.py +++ b/cryptography/primitives/block/modes.py @@ -16,6 +16,14 @@ 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 @@ def __init__(self, initialization_vector): self.initialization_vector = initialization_vector +@register(interfaces.ModeWithInitializationVector) class CFB(object): name = "CFB" @@ -44,15 +54,10 @@ def __init__(self, initialization_vector): 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)