
    #	h                        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  \R                   \\\4   r            S
S jr " S	 S5      rg)    )annotationsN)quote	urlencode)constant_timehmac)SHA1SHA256SHA512)InvalidToken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/env/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}})r/   r0   r1   _dynamic_truncater   formatencode)r2   countertruncated_valuer   s       r$   generateHOTP.generateE   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_eqr@   r   )r2   r   r>   s      r$   verifyHOTP.verifyM   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)r4   	byteorderzCounter must be between 0 and l    .         )rH   i)r   HMACr   r   updateto_bytesOverflowErrorr.   finalizer-   r0   
from_bytes)r2   r>   ctx
hmac_valueoffsetps         r$   r;   HOTP._dynamic_truncateQ   s    ii		4??3	NJJw''qE'BC \\^
C
Oa/069
+~~a5~1J>>  	N=k]!LMM	Ns   B B(c           
     6    [        U SXS[        U5      4/5      $ )Nr   r>   )r%   r0   )r2   r    r>   r   s       r$   get_provisioning_uriHOTP.get_provisioning_uri_   s&     &,)S\1J0K
 	
r&   )r   r   r   )NT)r3   bytesr4   r0   r   HOTPHashTypesr5   z
typing.Anyr6   boolreturnNone)r>   r0   r^   r[   )r   r[   r>   r0   r^   r_   )r>   r0   r^   r0   )r    strr>   r0   r   
str | Noner^   r`   )
__name__
__module____qualname____firstlineno__r7   r@   rD   r;   rY   __static_attributes__ r&   r$   r   r   ,   s~     ##'$$ $ !	$
 $ !$ 
$0>F?

*-
7A
	
r&   )r   r   r   r`   r    r`   r   ra   r!   zlist[tuple[str, int]]r^   r`   )
__future__r   r   typingurllib.parser   r   cryptography.hazmat.primitivesr   r   %cryptography.hazmat.primitives.hashesr   r	   r
   (cryptography.hazmat.primitives.twofactorr   Unionr\   r%   r   rg   r&   r$   <module>ro      s   
 #   ) > F F AT6612D
DD D 	D
 ,D 	D48
 8
r&   