+
    i                        ^ 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# )    )annotationsN)quote	urlencode)constant_timehmac)SHA1SHA256SHA512)InvalidToken)Bufferc               0    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 )formats   "t/home/wkmabra/.openclaw/workspace/venv/lib/python3.14/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py__annotate__r      sL     D D
DD D 	D
 ,D 	D    c                |   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# )digitssecret	algorithmr   :z
otpauth:///?)_lengthbase64	b32encode_key
_algorithmnameupperappendextendr   r   )r   r   r   r   r   
parameterslabels   &&&&&  r   _generate_urir/      s     
4<< 	6##DII./	doo**0023J 8V,-&'  =/5./0<  

 	{!E7!Ij,A+BCCr   c                  V    ] 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               0    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_lengthboolr   Noner   )r   s   "r   r   HOTP.__annotate__.   sF     $ $$ $ !	$
 $ !$ 
$r   c                	8   \        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# )   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
isinstancer4   	TypeErrorr   r	   r
   r'   r$   r(   )selfr2   r3   r    r6   r7   s   &&&&&&r   __init__HOTP.__init__.   s     s8b=/47FGG&#&&GHHA:!HII)dFF%;<<GHH	#r   c                    V ^8  d   QhRRRR/# )r   counterr4   r   bytesr   )r   s   "r   r   r:   F   s     > > > >r   c                	    \        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?   r4   r@   _dynamic_truncater$   r   encode)rA   rE   truncated_valuer   s   &&  r   generateHOTP.generateF   s\    '3''HII009"dll"23  ||4;;==r   c               $    V ^8  d   QhRRRRRR/# )r   r   rF   rE   r4   r   r9   r   )r   s   "r   r   r:   N   s&     F F5 F3 F4 Fr   c                	t    \         P                  ! V P                  V4      V4      '       g   \        R 4      hR# )z#Supplied HOTP value does not match.N)r   bytes_eqrK   r   )rA   r   rE   s   &&&r   verifyHOTP.verifyN   s0    %%dmmG&<dCCDEE Dr   c                    V ^8  d   QhRRRR/# )r   rE   r4   r   r   )r   s   "r   r   r:   R   s     ? ? ? ?r   c                	   \         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)   big)r3   	byteorderzCounter must be between 0 and .)rV   il    )r   HMACr'   r(   updateto_bytesOverflowErrorr>   finalizer=   r4   
from_bytes)rA   rE   ctx
hmac_valueoffsetps   &&    r   rH   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               (    V ^8  d   QhRRRRRRRR/# )r   r   r   rE   r4   r   r   r   r   )r   s   "r   r   r:   `   s,     
 

*-
7A
	
r   c           
     	6    \        V R WR\        V4      3.4      # )r   rE   )r/   r4   )rA   r   rE   r   s   &&&&r   get_provisioning_uriHOTP.get_provisioning_uri`   s&     &,)S\1J0K
 	
r   )r(   r'   r$   )NT)
__name__
__module____qualname____firstlineno__rB   rK   rP   rH   re   __static_attributes__r   r   r   r   r   -   s!    $0>F?
 
r   r   )
__future__r   r%   typingurllib.parser   r   cryptography.hazmat.primitivesr   r   %cryptography.hazmat.primitives.hashesr   r	   r
   (cryptography.hazmat.primitives.twofactorr   cryptography.utilsr   Unionr5   r/   r   r   r   r   <module>rt      sG   
 #   ) > F F A %T6612D48
 8
r   