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
import hashlib
from typing import TYPE_CHECKING, Callable
from refinery.lib.tools import normalize_to_display
from refinery.units import Executable
from refinery.units.crypto.hash import HashUnit
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 gitclass ripemd128(HashUnit): """ Returns the RIPEMD-128 hash of the input data. """ def _algorithm(self, data): from refinery.lib.ripemd128 import ripemd128 return ripemd128(data)AncestorsSubclassesClass 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. AncestorsSubclassesClass 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. AncestorsSubclassesClass 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. AncestorsSubclassesClass 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. AncestorsSubclassesClass 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. AncestorsClass 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. AncestorsClass 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. AncestorsClass 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. AncestorsClass 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. AncestorsClass 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. AncestorsClass 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. AncestorsClass 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. AncestorsClass 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. AncestorsClass 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. AncestorsClass 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. AncestorsClass 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. AncestorsClass 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. AncestorsClass 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. AncestorsClass variables- var required_dependencies
- var optional_dependencies
- var console
- var reverse
 Inherited members