
    (ph                        S SK Jr  S SKrS SKrS SKJrJr  S SKJrJ	r	  S SK
JrJrJr  S SKJr  S SKJr  \R$                  \\\4   r            SS	 jr " S
 S5      rg)    )annotationsN)quote	urlencode)constant_timehmac)SHA1SHA256SHA512)InvalidToken)BufferHOTPc                x   SU R                   4S[        R                  " U R                  5      4SU R                  R
                  R                  5       4/nUb  UR                  SU45        UR                  U5        U(       a  [        U5       S[        U5       3O
[        U5      nSU SU S[        U5       3$ )	Ndigitssecret	algorithmissuer:z
otpauth:///?)_lengthbase64	b32encode_key
_algorithmnameupperappendextendr   r   )hotp	type_nameaccount_namer   extra_parameters
parameterslabels          `/var/www/html/venv/lib/python3.13/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py_generate_urir&      s     
4<< 	6##DII./	doo**0023J 8V,-&'  =/5./0<  

 	{!E7!Ij,A+BCC    c                  t    \ rS rSr  S	           S
S jjrSS jrSS jrSS jr        SS jrSr	g)r   -   Nc                *   [        U5      S:  a  USL a  [        S5      e[        U[        5      (       d  [	        S5      eUS:  d  US:  a  [        S5      e[        U[
        [        [        45      (       d  [	        S5      eXl        X l	        X0l
        g )	N   Tz'Key length has to be at least 128 bits.z)Length parameter must be an integer type.      z)Length of HOTP has to be between 6 and 8.z)Algorithm must be SHA1, SHA256 or SHA512.)len
ValueError
isinstanceint	TypeErrorr   r	   r
   r   r   r   )selfkeylengthr   backendenforce_key_lengths         r%   __init__HOTP.__init__.   s     s8b=/47FGG&#&&GHHA:!HII)dFF%;<<GHH	#r'   c                    [        U[        5      (       d  [        S5      eU R                  U5      nUSU R                  -  -  nSR                  X0R                  5      R                  5       $ )Nz*Counter parameter must be an integer type.
   z{0:0{1}})r0   r1   r2   _dynamic_truncater   formatencode)r3   countertruncated_valuer   s       r%   generateHOTP.generateF   s\    '3''HII009"dll"23  ||4;;==r'   c                p    [         R                  " U R                  U5      U5      (       d  [        S5      eg )Nz#Supplied HOTP value does not match.)r   bytes_eqrA   r   )r3   r   r?   s      r%   verifyHOTP.verifyN   s0    %%dmmG&<dCCDEE Dr'   c                V   [         R                  " U R                  U R                  5      n UR	                  UR                  SSS95        UR                  5       nU[        U5      S-
     S-  nX4US	-    n[        R                  USS
9S-  $ ! [         a    [        SS S35      ef = f)Nr-   big)r5   	byteorderzCounter must be between 0 and l    .         )rI   i)r   HMACr   r   updateto_bytesOverflowErrorr/   finalizer.   r1   
from_bytes)r3   r?   ctx
hmac_valueoffsetps         r%   r<   HOTP._dynamic_truncateR   s    ii		4??3	LJJw''qE'BC \\^
C
Oa/069
+~~a5~1J>>  	L=i[JKK	Ls   B B(c           
     6    [        U SXS[        U5      4/5      $ )Nr   r?   )r&   r1   )r3   r!   r?   r   s       r%   get_provisioning_uriHOTP.get_provisioning_uri`   s&     &,)S\1J0K
 	
r'   )r   r   r   )NT)r4   r   r5   r1   r   HOTPHashTypesr6   z
typing.Anyr7   boolreturnNone)r?   r1   r^   bytes)r   r`   r?   r1   r^   r_   )r?   r1   r^   r1   )r!   strr?   r1   r   
str | Noner^   ra   )
__name__
__module____qualname____firstlineno__r8   rA   rE   r<   rZ   __static_attributes__ r'   r%   r   r   -   s~     ##'$$ $ !	$
 $ !$ 
$0>F?

*-
7A
	
r'   )r   r   r    ra   r!   ra   r   rb   r"   zlist[tuple[str, int]]r^   ra   )
__future__r   r   typingurllib.parser   r   cryptography.hazmat.primitivesr   r   %cryptography.hazmat.primitives.hashesr   r	   r
   (cryptography.hazmat.primitives.twofactorr   cryptography.utilsr   Unionr\   r&   r   rh   r'   r%   <module>rq      s   
 #   ) > F F A %T6612D
DD D 	D
 ,D 	D48
 8
r'   