File: //lib/python3/dist-packages/twisted/cred/__pycache__/_digest.cpython-310.pyc
o
�b� � @ sL d Z ddlmZ ddlmZmZ eeed�Z ddd�Zdd � Zd
d� Z dS )
z^
Calculations for HTTP Digest authentication.
@see: U{http://www.faqs.org/rfcs/rfc2617.html}
� )�hexlify)�md5�sha1)s md5� md5-sesss shaNc C s� |r|s|s|rt d��|du r5t| � }|�|� |�d� |�|� |�d� |�|� t|�� �}n|}| dkr_t| � }|�|� |�d� |�|� |�d� |�|� t|�� �}|S )a:
Compute H(A1) from RFC 2617.
@param pszAlg: The name of the algorithm to use to calculate the digest.
Currently supported are md5, md5-sess, and sha.
@param pszUserName: The username
@param pszRealm: The realm
@param pszPassword: The password
@param pszNonce: The nonce
@param pszCNonce: The cnonce
@param preHA1: If available this is a str containing a previously
calculated H(A1) as a hex string. If this is given then the values for
pszUserName, pszRealm, and pszPassword must be L{None} and are ignored.
zPpreHA1 is incompatible with the pszUserName, pszRealm, and pszPassword argumentsN� :r )� TypeError�
algorithms�updater �digest) �pszAlg�pszUserName�pszRealm�pszPassword�pszNonce� pszCNonce�preHA1�m�HA1� r �6/usr/lib/python3/dist-packages/twisted/cred/_digest.py�calcHA1! s, �
r c C sP t | � }|�|� |�d� |�|� |dkr"|�d� |�|� t|�� �S )a�
Compute H(A2) from RFC 2617.
@param algo: The name of the algorithm to use to calculate the digest.
Currently supported are md5, md5-sess, and sha.
@param pszMethod: The request method.
@param pszDigestUri: The request URI.
@param pszQop: The Quality-of-Protection value.
@param pszHEntity: The hash of the entity body or L{None} if C{pszQop} is
not C{'auth-int'}.
@return: The hash of the A2 value for the calculation of the response
digest.
r s auth-int�r r r r
)�algo� pszMethod�pszDigestUri�pszQop�
pszHEntityr r r r �calcHA2S s
r c C s� t | � }|�| � |�d� |�|� |�d� |r;|r;|�|� |�d� |�|� |�d� |�|� |�d� |�|� t|�� �}|S )a�
Compute the digest for the given parameters.
@param HA1: The H(A1) value, as computed by L{calcHA1}.
@param HA2: The H(A2) value, as computed by L{calcHA2}.
@param pszNonce: The challenge nonce.
@param pszNonceCount: The (client) nonce count value for this response.
@param pszCNonce: The client nonce.
@param pszQop: The Quality-of-Protection value.
r r ) r �HA2r r �
pszNonceCountr r r �respHashr r r �calcResponsek s
r! )N)
�__doc__�binasciir �hashlibr r r r r r! r r r r �<module> s �
�2