typehints/stdlib/hashlib.pyi (23 lines of code) (raw):

""" hashing algorithms. Descriptions taken from: https://raw.githubusercontent.com/micropython/micropython/master/docs/library/hashlib.rst. ==================================== .. module:: hashlib :synopsis: hashing algorithms |see_cpython_module| :mod:`python:hashlib`. This module implements binary data hashing algorithms. The exact inventory of available algorithms depends on a board. Among the algorithms which may be implemented: * SHA256 - The current generation, modern hashing algorithm (of SHA2 series). It is suitable for cryptographically-secure purposes. Included in the MicroPython core and any board is recommended to provide this, unless it has particular code size constraints. * SHA1 - A previous generation algorithm. Not recommended for new usages, but SHA1 is a part of number of Internet standards and existing applications, so boards targeting network connectivity and interoperability will try to provide this. * MD5 - A legacy algorithm, not considered cryptographically secure. Only selected boards, targeting interoperability with legacy applications, will offer this. """ __author__ = "Howard C Lovatt" __copyright__ = "Howard C Lovatt, 2020 onwards." __license__ = "MIT https://opensource.org/licenses/MIT (as used by MicroPython)." __version__ = "7.3.0" # Version set by https://github.com/hlovatt/tag2ver from abc import ABC from typing import overload from uio import AnyReadableBuf # noinspection PyPep8Naming class sha256("_Hash"): """ The current generation, modern hashing algorithm (of SHA2 series). It is suitable for cryptographically-secure purposes. Included in the MicroPython core and any board is recommended to provide this, unless it has particular code size constraints. """ @overload def __init__(self): """ Create an SHA256 hasher object and optionally feed ``data`` into it. """ @overload def __init__(self, data: AnyReadableBuf): """ Create an SHA256 hasher object and optionally feed ``data`` into it. """ # noinspection PyPep8Naming class sha1("_Hash"): """ A previous generation algorithm. Not recommended for new usages, but SHA1 is a part of number of Internet standards and existing applications, so boards targeting network connectivity and interoperability will try to provide this. """ @overload def __init__(self): """ Create an SHA1 hasher object and optionally feed ``data`` into it. """ @overload def __init__(self, data: AnyReadableBuf): """ Create an SHA1 hasher object and optionally feed ``data`` into it. """ # noinspection PyPep8Naming class md5("_Hash"): """ A legacy algorithm, not considered cryptographically secure. Only selected boards, targeting interoperability with legacy applications, will offer this. """ def __init__(self, data: AnyReadableBuf = ..., /): """ Create an MD5 hasher object and optionally feed ``data`` into it. """ class _Hash(ABC): """ Abstract base class for hashing algorithms that defines methods available in all algorithms. """ def update(self, data: AnyReadableBuf, /) -> None: """ Feed more binary data into hash. """ def digest(self) -> bytes: """ Return hash for all data passed through hash, as a bytes object. After this method is called, more data cannot be fed into the hash any longer. """ def hexdigest(self) -> str: """ This method is NOT implemented. Use ``binascii.hexlify(hash.digest())`` to achieve a similar effect. """