Module refinery.units.crypto.hash.cryptographic
Implements various cryptographic hashing algorithms.
Expand source code Browse git
"""
Implements various cryptographic hashing algorithms.
"""
from __future__ import annotations
from typing import TYPE_CHECKING, Callable
import hashlib
from refinery.units import Executable
from refinery.units.crypto.hash import HashUnit
from refinery.lib.tools import normalize_to_display
if TYPE_CHECKING:
from refinery.lib.types import buf
from refinery.units.crypto.keyderive import _Hash
def _doc(name: str):
return F'Returns the {normalize_to_display(name.upper())} hash of the input data.'
class _HashExe(Executable):
_build_hash: Callable[[buf], _Hash]
def _algorithm(cls, data: buf):
return cls._build_hash(data).digest()
def __new__(cls, name: str, bases, namespace: dict, export: str = '', kernel: str = ''):
if kernel:
namespace.update(__doc__=_doc(kernel), _algorithm=cls._algorithm)
export = export or name
exe = Executable.__new__(cls, export, bases, namespace)
setattr(exe, '__qualname__', export)
return exe
class _CDome(_HashExe):
def __init__(cls, _, bases, nmspc: dict, export: str = '', kernel: str = '', **kw):
super().__init__(export, bases, nmspc, **kw)
if kernel and export:
hash = __import__(F'Cryptodome.Hash.{kernel}')
for t in ('Hash', kernel, 'new'):
hash = getattr(hash, t)
cls._build_hash = hash
class _PyLib(_HashExe):
def __init__(cls, _, bases, nmspc: dict, export: str = '', kernel: str = '', **kw):
super().__init__(export, bases, nmspc, **kw)
cls._build_hash = getattr(hashlib, kernel)
__all__ = [ # noqa
'ripemd128', # type: ignore
'ripemd160', # type: ignore
'md2', # type: ignore
'md4', # type: ignore
'keccak', # type: ignore
'md5', # type: ignore
'sha1', # type: ignore
'sha224', # type: ignore
'sha256', # type: ignore
'sha384', # type: ignore
'sha512', # type: ignore
'blake2b', # type: ignore
'blake2s', # type: ignore
'sha3_224', # type: ignore
'sha3_256', # type: ignore
'sha3_384', # type: ignore
'sha3_512', # type: ignore
'shake128', # type: ignore
'shake256', # type: ignore
]
_K = {
'ripemd128': 'RIPEMD128',
'ripemd160': 'RIPEMD160',
'md2': 'MD2',
'md4': 'MD4',
'shake128': 'shake_128',
'shake256': 'shake_256',
}
_G = globals()
for h in __all__[1:5]:
class H(HashUnit, metaclass=_CDome, export=h, kernel=_K.get(h, h)):
...
_G[h] = H
del H
for h in __all__[5:]:
class H(HashUnit, metaclass=_PyLib, export=h, kernel=_K.get(h, h)):
...
_G[h] = H
del H
class ripemd128(HashUnit):
"""
Returns the RIPEMD-128 hash of the input data.
"""
def _algorithm(self, data):
from refinery.lib.ripemd128 import ripemd128
return ripemd128(data)
Classes
class ripemd128 (reps=1, text=False)
-
Returns the RIPEMD-128 hash of the input data.
Expand source code Browse git
class ripemd128(HashUnit): """ Returns the RIPEMD-128 hash of the input data. """ def _algorithm(self, data): from refinery.lib.ripemd128 import ripemd128 return ripemd128(data)
Ancestors
Subclasses
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class ripemd160 (reps=1, text=False)
-
Returns the RIPEMD160 hash of the input data.
Ancestors
Subclasses
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class md2 (reps=1, text=False)
-
Returns the MD2 hash of the input data.
Ancestors
Subclasses
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class md4 (reps=1, text=False)
-
Returns the MD4 hash of the input data.
Ancestors
Subclasses
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class keccak (reps=1, text=False)
-
Returns the KECCAK hash of the input data.
Ancestors
Subclasses
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class md5 (reps=1, text=False)
-
Returns the MD5 hash of the input data.
Ancestors
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class sha1 (reps=1, text=False)
-
Returns the SHA1 hash of the input data.
Ancestors
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class sha224 (reps=1, text=False)
-
Returns the SHA224 hash of the input data.
Ancestors
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class sha256 (reps=1, text=False)
-
Returns the SHA256 hash of the input data.
Ancestors
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class sha384 (reps=1, text=False)
-
Returns the SHA384 hash of the input data.
Ancestors
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class sha512 (reps=1, text=False)
-
Returns the SHA512 hash of the input data.
Ancestors
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class blake2b (reps=1, text=False)
-
Returns the BLAKE2B hash of the input data.
Ancestors
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class blake2s (reps=1, text=False)
-
Returns the BLAKE2S hash of the input data.
Ancestors
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class sha3_224 (reps=1, text=False)
-
Returns the SHA3-224 hash of the input data.
Ancestors
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class sha3_256 (reps=1, text=False)
-
Returns the SHA3-256 hash of the input data.
Ancestors
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class sha3_384 (reps=1, text=False)
-
Returns the SHA3-384 hash of the input data.
Ancestors
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class sha3_512 (reps=1, text=False)
-
Returns the SHA3-512 hash of the input data.
Ancestors
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class shake128 (reps=1, text=False)
-
Returns the SHAKE-128 hash of the input data.
Ancestors
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members
class shake256 (reps=1, text=False)
-
Returns the SHAKE-256 hash of the input data.
Ancestors
Class variables
var required_dependencies
var optional_dependencies
var console
var reverse
Inherited members