from ctypescrypto.oid import Oid\r
DIGEST_ALGORITHMS = ("MD5", "SHA1", "SHA224", "SHA256", "SHA384", "SHA512")\r
\r
+__all__ = ['DigestError','Digest','DigestType','new']\r
\r
class DigestError(LibCryptoError):\r
pass\r
self.digest_name = digest_name\r
self.digest = libcrypto.EVP_get_digestbyname(self.digest_name)\r
if self.digest is None:\r
- raise DigestError, "Unknown digest: %s" % self.digest_name\r
+ raise DigestError("Unknown digest: %s" % self.digest_name)\r
\r
def __del__(self):\r
pass\r
self._clean_ctx()\r
self.ctx = libcrypto.EVP_MD_CTX_create()\r
if self.ctx == 0:\r
- raise DigestError, "Unable to create digest context"\r
+ raise DigestError("Unable to create digest context")\r
result = libcrypto.EVP_DigestInit_ex(self.ctx, digest_type.digest, None)\r
if result == 0:\r
self._clean_ctx()\r
- raise DigestError, "Unable to initialize digest"\r
+ raise DigestError("Unable to initialize digest")\r
self.digest_type = digest_type\r
self.digest_size = self.digest_type.digest_size()\r
self.block_size = self.digest_type.block_size()\r
otherwise only first length bytes\r
"""\r
if self.digest_finalized:\r
- raise DigestError, "No updates allowed"\r
+ raise DigestError("No updates allowed")\r
if type(data) != type(""):\r
- raise TypeError, "A string is expected"\r
+ raise TypeError("A string is expected")\r
if length is None:\r
length=len(data)\r
elif length> len(data):\r
length = c_long(0)\r
result = libcrypto.EVP_DigestFinal_ex(self.ctx, self.digest_out, byref(length))\r
if result != 1 :\r
- raise DigestError, "Unable to finalize digest"\r
+ raise DigestError("Unable to finalize digest")\r
self.digest_finalized = True\r
return self.digest_out.raw[:self.digest_size]\r
def copy(self):\r