HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/__pycache__/hashutil.cpython-310.pyc
o

�N�g��@s�dZddlZddlZddlZddlZddlZddlZddlZddl	Zd dd�Z
d dd�Zdd	�Zd
d�Z
dd
�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)!z0
A collection of hashing and encoding functions
�N�md5cCsFtdtdtdd�}|�|�}|durtj�d|�d���||�S)a%
    Return a checksum digest for a string

    instr
        A string
    checksum : ``md5``
        The hashing algorithm to use to generate checksums. Valid options: md5,
        sha256, sha512.

    CLI Example:

    .. code-block:: bash

        salt '*' hashutil.digest 'get salted'
    zhashutil.md5_digestzhashutil.sha256_digestzhashutil.sha512_digest)r�sha256�sha512NzHash func 'z' is not supported.)�__salt__�get�salt�
exceptions�CommandExecutionError)�instr�checksumZ
hashing_funcsZ	hash_func�r�I/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/hashutil.py�digests�

�rcCshtd|�stj�d|�d���tjj�|d��}td|��|�}Wd�|S1s-wY|S)ai
    Return a checksum digest for a file

    infile
        A file path
    checksum : ``md5``
        The hashing algorithm to use to generate checksums. Wraps the
        :py:func:`hashutil.digest <salt.modules.hashutil.digest>` execution
        function.

    CLI Example:

    .. code-block:: bash

        salt '*' hashutil.digest_file /path/to/file
    zfile.file_existszFile path 'z' not found.�rbzhashutil.digestN)rrrr	�utils�files�fopen�read)Zinfiler�fZ	file_hashrrr
�digest_file/s
��rcC�tjj�|�S)aO
    Encode a string as base64 using the "modern" Python interface.

    Among other possible differences, the "modern" encoder does not include
    newline ('\n') characters in the encoded output.

    .. versionadded:: 2016.3.0

    CLI Example:

    .. code-block:: bash

        salt '*' hashutil.base64_b64encode 'get salted'
    )rr�	hashutils�base64_b64encode�r
rrr
rIsrcCr)z�
    Decode a base64-encoded string using the "modern" Python interface

    .. versionadded:: 2016.3.0

    CLI Example:

    .. code-block:: bash

        salt '*' hashutil.base64_b64decode 'Z2V0IHNhbHRlZA=='
    )rrr�base64_b64decoderrrr
r[�rcCr)a�
    Encode a byte-like object as base64 using the "modern" Python interface.

    Among other possible differences, the "modern" encoder includes
    a newline ('\n') character after every 76 characters and always
    at the end of the encoded byte-like object.

    .. versionadded:: 3000

    CLI Example:

    .. code-block:: bash

        salt '*' hashutil.base64_encodestring 'get salted'
    )rrr�base64_encodestringrrrr
rjsrcCs`t��}tjj�|d��}t�||�Wd�n1swY|�d�tjj	�
|���S)a
    Read a file from the file system and return as a base64 encoded string

    .. versionadded:: 2016.3.0

    Pillar example:

    .. code-block:: yaml

        path:
          to:
            data: |
              {{ salt.hashutil.base64_encodefile('/path/to/binary_file') | indent(6) }}

    The :py:func:`file.decode <salt.states.file.decode>` state function can be
    used to decode this data and write it to disk.

    CLI Example:

    .. code-block:: bash

        salt '*' hashutil.base64_encodefile /path/to/binary_file
    rNr)�io�BytesIOrrrr�base64�encode�seek�stringutilsZto_strr)�fname�	encoded_frrrr
�base64_encodefile}s�
r%cCr)z�
    Decode a base64-encoded byte-like object using the "modern" Python interface

    .. versionadded:: 3000

    CLI Example:

    .. code-block:: bash

        salt '*' hashutil.base64_decodestring instr='Z2V0IHNhbHRlZAo='

    )rrr�base64_decodestringrrrr
r&�s
r&cCsLt�|�}tjj�|d��}t�||�Wd�dS1swYdS)z�
    Decode a base64-encoded string and write the result to a file

    .. versionadded:: 2016.3.0

    CLI Example:

    .. code-block:: bash

        salt '*' hashutil.base64_decodefile instr='Z2V0IHNhbHRlZAo=' outfile='/path/to/binary_file'
    �wbNT)r�StringIOrrrrr�decode)r
Zoutfiler$rrrr
�base64_decodefile�s

��r*cCr)z�
    Generate an md5 hash of a given string

    .. versionadded:: 2014.7.0

    CLI Example:

    .. code-block:: bash

        salt '*' hashutil.md5_digest 'get salted'
    )rrr�
md5_digestrrrr
r+�rr+cCr)z�
    Generate an sha256 hash of a given string

    .. versionadded:: 2014.7.0

    CLI Example:

    .. code-block:: bash

        salt '*' hashutil.sha256_digest 'get salted'
    )rrr�
sha256_digestrrrr
r,�rr,cCr)z�
    Generate an sha512 hash of a given string

    .. versionadded:: 2014.7.0

    CLI Example:

    .. code-block:: bash

        salt '*' hashutil.sha512_digest 'get salted'
    )rrr�
sha512_digestrrrr
r-�rr-cCstjj�|||�S)aP
    Verify a challenging hmac signature against a string / shared-secret

    .. versionadded:: 2014.7.0

    Returns a boolean if the verification succeeded or failed.

    CLI Example:

    .. code-block:: bash

        salt '*' hashutil.hmac_signature 'get salted' 'shared secret' 'eBWf9bstXg+NiP5AOwppB5HMvZiYMPzEM9W5YMm/AmQ='
    )rrr�hmac_signature)�string�
shared_secret�challenge_hmacrrr
r.�sr.cCstjj�||�S)z�
    .. versionadded:: 3000

    Compute a HMAC SHA256 digest using a string and secret.

    CLI Example:

    .. code-block:: bash

        salt '*' hashutil.hmac_compute 'get salted' 'shared secret'
    )rrr�hmac_compute)r/r0rrr
r2sr2cCsj|}|}|�d�\}}t|t�rtjj�|�}t|t�r#tjj�|�}t�||t	t
|��}t�|��|�S)ao
    Verify a challenging hmac signature against a string / shared-secret for
    github webhooks.

    .. versionadded:: 2017.7.0

    Returns a boolean if the verification succeeded or failed.

    CLI Example:

    .. code-block:: bash

        salt '*' hashutil.github_signature '{"ref":....} ' 'shared secret' 'sha1=bc6550fc290acf5b42283fa8deaf55cea0f8c206'
    �=)
�split�
isinstance�strrrr"�to_bytes�hmac�new�getattr�hashlib�compare_digest�	hexdigest)r/r0r1�msg�keyZhashtypeZ	challengeZ	hmac_hashrrr
�github_signatures

r@)r)�__doc__rr;r8rZsalt.exceptionsrZsalt.utils.filesZsalt.utils.hashutilsZsalt.utils.stringutilsrrrrrr%r&r*r+r,r-r.r2r@rrrr
�<module>s.

!