aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2014-10-25 17:46:32 -0700
committerPaul Kehrer <paul.l.kehrer@gmail.com>2014-10-25 17:46:32 -0700
commit4d05537fa5e6c3a3f38b9027deeaf8e799a3a415 (patch)
tree37df174a6eb72a3cb6078a35b65c6a0162b87791
parentd1f0c6621036bfb801066b2c34fe5bff6f234388 (diff)
parentbf148d2e11e3fbf95ce6213eb3722a4911a3f4ff (diff)
downloadcryptography-4d05537fa5e6c3a3f38b9027deeaf8e799a3a415.tar.gz
cryptography-4d05537fa5e6c3a3f38b9027deeaf8e799a3a415.tar.bz2
cryptography-4d05537fa5e6c3a3f38b9027deeaf8e799a3a415.zip
Merge pull request #1444 from alex/attributes-as-properties
Expose all attributes via properties so they can be statically introspected
-rw-r--r--cryptography/hazmat/backends/commoncrypto/hashes.py4
-rw-r--r--cryptography/hazmat/backends/commoncrypto/hmac.py4
-rw-r--r--cryptography/hazmat/backends/openssl/cmac.py2
-rw-r--r--cryptography/hazmat/backends/openssl/hashes.py4
-rw-r--r--cryptography/hazmat/backends/openssl/hmac.py4
-rw-r--r--cryptography/hazmat/primitives/ciphers/modes.py29
-rw-r--r--cryptography/hazmat/primitives/hashes.py4
-rw-r--r--cryptography/hazmat/primitives/hmac.py4
8 files changed, 39 insertions, 16 deletions
diff --git a/cryptography/hazmat/backends/commoncrypto/hashes.py b/cryptography/hazmat/backends/commoncrypto/hashes.py
index ebad7201..217f4e8c 100644
--- a/cryptography/hazmat/backends/commoncrypto/hashes.py
+++ b/cryptography/hazmat/backends/commoncrypto/hashes.py
@@ -21,7 +21,7 @@ from cryptography.hazmat.primitives import interfaces
@utils.register_interface(interfaces.HashContext)
class _HashContext(object):
def __init__(self, backend, algorithm, ctx=None):
- self.algorithm = algorithm
+ self._algorithm = algorithm
self._backend = backend
if ctx is None:
@@ -39,6 +39,8 @@ class _HashContext(object):
self._ctx = ctx
+ algorithm = utils.read_only_property("_algorithm")
+
def copy(self):
methods = self._backend._hash_mapping[self.algorithm.name]
new_ctx = self._backend._ffi.new(methods.ctx)
diff --git a/cryptography/hazmat/backends/commoncrypto/hmac.py b/cryptography/hazmat/backends/commoncrypto/hmac.py
index c6e3f276..c2b6c379 100644
--- a/cryptography/hazmat/backends/commoncrypto/hmac.py
+++ b/cryptography/hazmat/backends/commoncrypto/hmac.py
@@ -22,7 +22,7 @@ from cryptography.hazmat.primitives import interfaces
@utils.register_interface(interfaces.HashContext)
class _HMACContext(object):
def __init__(self, backend, key, algorithm, ctx=None):
- self.algorithm = algorithm
+ self._algorithm = algorithm
self._backend = backend
if ctx is None:
ctx = self._backend._ffi.new("CCHmacContext *")
@@ -40,6 +40,8 @@ class _HMACContext(object):
self._ctx = ctx
self._key = key
+ algorithm = utils.read_only_property("_algorithm")
+
def copy(self):
copied_ctx = self._backend._ffi.new("CCHmacContext *")
# CommonCrypto has no APIs for copying HMACs, so we have to copy the
diff --git a/cryptography/hazmat/backends/openssl/cmac.py b/cryptography/hazmat/backends/openssl/cmac.py
index da7b7484..6a844cdc 100644
--- a/cryptography/hazmat/backends/openssl/cmac.py
+++ b/cryptography/hazmat/backends/openssl/cmac.py
@@ -50,6 +50,8 @@ class _CMACContext(object):
self._ctx = ctx
+ algorithm = utils.read_only_property("_algorithm")
+
def update(self, data):
res = self._backend._lib.CMAC_Update(self._ctx, data, len(data))
assert res == 1
diff --git a/cryptography/hazmat/backends/openssl/hashes.py b/cryptography/hazmat/backends/openssl/hashes.py
index da91eef6..591c014a 100644
--- a/cryptography/hazmat/backends/openssl/hashes.py
+++ b/cryptography/hazmat/backends/openssl/hashes.py
@@ -22,7 +22,7 @@ from cryptography.hazmat.primitives import interfaces
@utils.register_interface(interfaces.HashContext)
class _HashContext(object):
def __init__(self, backend, algorithm, ctx=None):
- self.algorithm = algorithm
+ self._algorithm = algorithm
self._backend = backend
@@ -44,6 +44,8 @@ class _HashContext(object):
self._ctx = ctx
+ algorithm = utils.read_only_property("_algorithm")
+
def copy(self):
copied_ctx = self._backend._lib.EVP_MD_CTX_create()
copied_ctx = self._backend._ffi.gc(
diff --git a/cryptography/hazmat/backends/openssl/hmac.py b/cryptography/hazmat/backends/openssl/hmac.py
index ca62184b..d5300ea0 100644
--- a/cryptography/hazmat/backends/openssl/hmac.py
+++ b/cryptography/hazmat/backends/openssl/hmac.py
@@ -23,7 +23,7 @@ from cryptography.hazmat.primitives import interfaces
@utils.register_interface(interfaces.HashContext)
class _HMACContext(object):
def __init__(self, backend, key, algorithm, ctx=None):
- self.algorithm = algorithm
+ self._algorithm = algorithm
self._backend = backend
if ctx is None:
@@ -48,6 +48,8 @@ class _HMACContext(object):
self._ctx = ctx
self._key = key
+ algorithm = utils.read_only_property("_algorithm")
+
def copy(self):
copied_ctx = self._backend._ffi.new("HMAC_CTX *")
self._backend._lib.HMAC_CTX_init(copied_ctx)
diff --git a/cryptography/hazmat/primitives/ciphers/modes.py b/cryptography/hazmat/primitives/ciphers/modes.py
index 509b4de2..d995b876 100644
--- a/cryptography/hazmat/primitives/ciphers/modes.py
+++ b/cryptography/hazmat/primitives/ciphers/modes.py
@@ -17,10 +17,10 @@ from cryptography import utils
from cryptography.hazmat.primitives import interfaces
-def _check_iv_length(mode, algorithm):
- if len(mode.initialization_vector) * 8 != algorithm.block_size:
+def _check_iv_length(self, algorithm):
+ if len(self.initialization_vector) * 8 != algorithm.block_size:
raise ValueError("Invalid IV size ({0}) for {1}.".format(
- len(mode.initialization_vector), mode.name
+ len(self.initialization_vector), self.name
))
@@ -30,8 +30,9 @@ class CBC(object):
name = "CBC"
def __init__(self, initialization_vector):
- self.initialization_vector = initialization_vector
+ self._initialization_vector = initialization_vector
+ initialization_vector = utils.read_only_property("_initialization_vector")
validate_for_algorithm = _check_iv_length
@@ -49,8 +50,9 @@ class OFB(object):
name = "OFB"
def __init__(self, initialization_vector):
- self.initialization_vector = initialization_vector
+ self._initialization_vector = initialization_vector
+ initialization_vector = utils.read_only_property("_initialization_vector")
validate_for_algorithm = _check_iv_length
@@ -60,8 +62,9 @@ class CFB(object):
name = "CFB"
def __init__(self, initialization_vector):
- self.initialization_vector = initialization_vector
+ self._initialization_vector = initialization_vector
+ initialization_vector = utils.read_only_property("_initialization_vector")
validate_for_algorithm = _check_iv_length
@@ -71,8 +74,9 @@ class CFB8(object):
name = "CFB8"
def __init__(self, initialization_vector):
- self.initialization_vector = initialization_vector
+ self._initialization_vector = initialization_vector
+ initialization_vector = utils.read_only_property("_initialization_vector")
validate_for_algorithm = _check_iv_length
@@ -82,7 +86,9 @@ class CTR(object):
name = "CTR"
def __init__(self, nonce):
- self.nonce = nonce
+ self._nonce = nonce
+
+ nonce = utils.read_only_property("_nonce")
def validate_for_algorithm(self, algorithm):
if len(self.nonce) * 8 != algorithm.block_size:
@@ -109,8 +115,11 @@ class GCM(object):
min_tag_length)
)
- self.initialization_vector = initialization_vector
- self.tag = tag
+ self._initialization_vector = initialization_vector
+ self._tag = tag
+
+ tag = utils.read_only_property("_tag")
+ initialization_vector = utils.read_only_property("_initialization_vector")
def validate_for_algorithm(self, algorithm):
pass
diff --git a/cryptography/hazmat/primitives/hashes.py b/cryptography/hazmat/primitives/hashes.py
index 04f7620a..8c2284e3 100644
--- a/cryptography/hazmat/primitives/hashes.py
+++ b/cryptography/hazmat/primitives/hashes.py
@@ -32,7 +32,7 @@ class Hash(object):
if not isinstance(algorithm, interfaces.HashAlgorithm):
raise TypeError("Expected instance of interfaces.HashAlgorithm.")
- self.algorithm = algorithm
+ self._algorithm = algorithm
self._backend = backend
@@ -41,6 +41,8 @@ class Hash(object):
else:
self._ctx = ctx
+ algorithm = utils.read_only_property("_algorithm")
+
def update(self, data):
if self._ctx is None:
raise AlreadyFinalized("Context was already finalized.")
diff --git a/cryptography/hazmat/primitives/hmac.py b/cryptography/hazmat/primitives/hmac.py
index b85fb2aa..22a31391 100644
--- a/cryptography/hazmat/primitives/hmac.py
+++ b/cryptography/hazmat/primitives/hmac.py
@@ -33,7 +33,7 @@ class HMAC(object):
if not isinstance(algorithm, interfaces.HashAlgorithm):
raise TypeError("Expected instance of interfaces.HashAlgorithm.")
- self.algorithm = algorithm
+ self._algorithm = algorithm
self._backend = backend
self._key = key
@@ -42,6 +42,8 @@ class HMAC(object):
else:
self._ctx = ctx
+ algorithm = utils.read_only_property("_algorithm")
+
def update(self, data):
if self._ctx is None:
raise AlreadyFinalized("Context was already finalized.")