+
    i  c                  s    ^ RI Ht ^ RIt^ RIt^ RIHtHt ^ RIHtH	t	 ^ RI
HtHtHt ^ RIHt ^ RIHt ]P$                  ]]]3,          tR R	 lt ! R
 R4      tR# )i    )annotationsN)quote	urlencode)constant_timehmac)SHA1SHA256SHA512)InvalidToken)Bufferc               s0    V ^8  d   QhRRRRRRRRRR	R
R/# )   hotpHOTP	type_namestraccount_nameissuer
str | Noneextra_parameterszlist[tuple[str, int]]return format   "T/usr/lib64/python3.14/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py__annotate__r      sL     D D
DD D 	D
 ,D 	D    c                s|   R V P                   3R\        P                  ! V P                  4      3RV P                  P
                  P                  4       3.pVe   VP                  RV34       VP                  V4       V'       d   \        V4       R\        V4       2M
\        V4      pRV RV R\        V4       2# )ZdigitsZsecret	algorithmr   Z:z
otpauth://Z/Z?)_lengthbase64Z	b32encode_key
_algorithmZnameZupperZappendZextendr   r   )r   r   r   r   r   Z
parametersZlabels   &&&&&  r   _generate_urir       s     
4<< 	6##DII./	doo**0023J 8V,-&'  =/5./0<  

 	{!E7!Ij,A+BCCr   c                  sV    ] tR t^-tRR R lltR R ltR R ltR R	 ltR
 R ltRt	R# )r   Nc               s0    V ^8  d   QhRRRRRRRRR	R
RR/# )r
   keyr	   lengthintr   HOTPHashTypesbackendz
typing.Anyenforce_key_lengthZboolr   Noner   r   r   r   r   HOTP.__annotate__.   sF     $ $$ $ !	$
 $ !$ 
$r   c                	s8   \        V4      ^8  d   VRJ d   \        R4      h\        V\        4      '       g   \	        R4      hV^8  g   V^8  d   \        R4      h\        V\
        \        \        34      '       g   \	        R4      hWn        W n	        W0n
        R# )i   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.N)len
ValueError
isinstancer#   	TypeErrorr   r   r   r   r   r   )selfr!   r"   r   r%   r&   s   &&&&&&r   __init__ZHOTP.__init__.   s     s8b=/47FGG&#&&GHHA:!HII)dFF%;<<GHH	#r   c               s     V ^8  d   QhRRRR/# )r
   counterr#   r   bytesr   r   r   r   r   r(   F   s     > > > >r   c                	s    \        V\        4      '       g   \        R 4      hV P                  V4      pV^
V P                  ,          ,          pRP                  W0P                  4      P                  4       # )z*Counter parameter must be an integer type.z{0:0{1}})r+   r#   r,   _dynamic_truncater   r   Zencode)r-   r/   Ztruncated_valuer   s   &&  r   generateZHOTP.generateF   s\    '3''HII009"dll"23  ||4;;==r   c               s$    V ^8  d   QhRRRRRR/# )r
   r   r0   r/   r#   r   r'   r   r   r   r   r   r(   N   s&     F F5 F3 F4 Fr   c                	st    \         P                  ! V P                  V4      V4      '       g   \        R 4      hR# )z#Supplied HOTP value does not match.N)r   Zbytes_eqr2   r   )r-   r   r/   s   &&&r   verifyZHOTP.verifyN   s0    %%dmmG&<dCCDEE Dr   c               s     V ^8  d   QhRRRR/# )r
   r/   r#   r   r   r   r   r   r   r(   R   s     ? ? ? ?r   c                	s   \         P                  ! V P                  V P                  4      p VP	                  VP                  ^RR7      4       TP                  4       pT\        T4      ^,
          ,          ^,          pY4T^,            p\        P                  TRR7      R,          #   \         d    \        RR R24      hi ; i)i   Zbig)r"   	byteorderzCounter must be between 0 and Z.)r4   il    )r   ZHMACr   r   ZupdateZto_bytesZOverflowErrorr*   Zfinalizer)   r#   Z
from_bytes)r-   r/   ZctxZ
hmac_valueZoffsetZps   &&    r   r1   Z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( (Cc               s(    V ^8  d   QhRRRRRRRR/# )r
   r   r   r/   r#   r   r   r   r   r   r   r   r   r(   `   s,     
 

*-
7A
	
r   c           
     	s6    \        V R WR\        V4      3.4      # )r   r/   )r    r#   )r-   r   r/   r   s   &&&&r   get_provisioning_uriZHOTP.get_provisioning_uri`   s&     &,)S\1J0K
 	
r   )r   r   r   )NT)
Z__name__Z
__module__Z__qualname__Z__firstlineno__r.   r2   r3   r1   r5   Z__static_attributes__r   r   r   r   r   -   s!    $0>F?
 
r   r   )Z
__future__r    r   ZtypingZurllib.parser   r   Zcryptography.hazmat.primitivesr   r   Z%cryptography.hazmat.primitives.hashesr   r   r   Z(cryptography.hazmat.primitives.twofactorr   Zcryptography.utilsr	   ZUnionr$   r    r   r   r   r   <module>r6      sG   
 #   ) > F F A %T6612D48
 8
r   