§
    Æ‡tj¸  ã                  ó°   — d dl mZ d dlZd dlZd dlmZmZ d dlmZm	Z	 d dl
mZmZmZ d dlmZ d dlmZ ej        eeef         Zdd„Z G d„ d	¦  «        ZdS )é    )ÚannotationsN)ÚquoteÚ	urlencode)Úconstant_timeÚhmac)ÚSHA1ÚSHA256ÚSHA512)ÚInvalidToken)ÚBufferÚhotpÚHOTPÚ	type_nameÚstrÚaccount_nameÚissuerú
str | NoneÚextra_parametersúlist[tuple[str, int]]Úreturnc                óx  — d| j         fdt          j        | j        ¦  «        fd| j        j                             ¦   «         fg}|�|                     d|f¦  «         |                     |¦  «         |r!t          |¦  «        › dt          |¦  «        › �nt          |¦  «        }d|› d|› dt          |¦  «        › �S )	NÚdigitsÚsecretÚ	algorithmr   ú:z
otpauth://ú/ú?)Ú_lengthÚbase64Ú	b32encodeÚ_keyÚ
_algorithmÚnameÚupperÚappendÚextendr   r   )r   r   r   r   r   Ú
parametersÚlabels          úk/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/twofactor/hotp.pyÚ_generate_urir*      sÝ   € ð 
�4”<Ð Ø	•6Ô# D¤IÑ.Ô.Ð/Ø	�d”oÔ*×0Ò0Ñ2Ô2Ð3ð€Jð ÐØ×Ò˜8 VÐ,Ñ-Ô-Ð-à×ÒÐ&Ñ'Ô'Ð'ð ð	!�5�‰=Œ=Ð0Ð0�5 Ñ.Ô.Ð0Ð0Ð0å�<Ñ Ô ð 
ð
 D˜	ÐCÐC EÐCÐC­I°jÑ,AÔ,AÐCÐCÐCó    c                  ó<   — e Zd Z	 	 ddd„Zdd„Zdd„Zdd„Zd d„ZdS )!r   NTÚkeyr   ÚlengthÚintr   ÚHOTPHashTypesÚbackendú
typing.AnyÚenforce_key_lengthÚboolr   ÚNonec                ó\  — t          |¦  «        dk     r|du rt          d¦  «        ‚t          |t          ¦  «        st	          d¦  «        ‚|dk     s|dk    rt          d¦  «        ‚t          |t
          t          t          f¦  «        st	          d¦  «        ‚|| _        || _	        || _
        d S )	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Ú
isinstancer/   Ú	TypeErrorr   r	   r
   r!   r   r"   )Úselfr-   r.   r   r1   r3   s         r)   Ú__init__zHOTP.__init__.   s±   € õ ˆs‰8Œ8�bŠ=ˆ=Ð/°4Ð7Ð7ÝÐFÑGÔGÐGå˜&¥#Ñ&Ô&ð 	IÝÐGÑHÔHÐHà�AŠ:ˆ:˜ !š˜ÝÐHÑIÔIÐIå˜)¥d­FµFÐ%;Ñ<Ô<ð 	IÝÐGÑHÔHÐHàˆŒ	ØˆŒØ#ˆŒˆˆr+   ÚcounterÚbytesc                óè   — t          |t          ¦  «        st          d¦  «        ‚|                      |¦  «        }|d| j        z  z  }d                     || j        ¦  «                             ¦   «         S )Nz*Counter parameter must be an integer type.é
   z{0:0{1}})r<   r/   r=   Ú_dynamic_truncater   ÚformatÚencode)r>   r@   Útruncated_valuer   s       r)   ÚgeneratezHOTP.generateF   sl   € Ý˜'¥3Ñ'Ô'ð 	JÝÐHÑIÔIÐIà×0Ò0°Ñ9Ô9ˆØ " d¤lÑ"2Ñ3ˆØ× Ò   t¤|Ñ4Ô4×;Ò;Ñ=Ô=Ð=r+   r   c                ót   — t          j        |                      |¦  «        |¦  «        st          d¦  «        ‚d S )Nz#Supplied HOTP value does not match.)r   Úbytes_eqrH   r   )r>   r   r@   s      r)   ÚverifyzHOTP.verifyN   s?   € ÝÔ% d§m¢m°GÑ&<Ô&<¸dÑCÔCð 	FÝÐDÑEÔEÐEð	Fð 	Fr+   c                ó�  — t          j        | j        | j        ¦  «        }	 |                     |                     dd¬¦  «        ¦  «         n!# t          $ r t          dd› d�¦  «        ‚w xY w|                     ¦   «         }|t          |¦  «        dz
           dz  }|||d	z   …         }t                               |d¬
¦  «        dz  S )Nr9   Úbig)r.   Ú	byteorderzCounter must be between 0 and l   ÿÿÿÿ ú.é   é   é   )rN   iÿÿÿ)r   ÚHMACr!   r"   ÚupdateÚto_bytesÚOverflowErrorr;   Úfinalizer:   r/   Ú
from_bytes)r>   r@   ÚctxÚ
hmac_valueÚoffsetÚps         r)   rD   zHOTP._dynamic_truncateR   sÕ   € ÝŒi˜œ	 4¤?Ñ3Ô3ˆð	LØ�JŠJ�w×'Ò'¨q¸EÐ'ÑBÔBÑCÔCÐCÐCøÝð 	Lð 	Lð 	LÝÐJ¸iÐJÐJÐJÑKÔKÐKð	Løøøð —\’\‘^”^ˆ
à�C 
™OœO¨aÑ/Ô0°6Ñ9ˆØ�v ¨¡
Ð*Ô+ˆÝ�~Š~˜a¨5ˆ~Ñ1Ô1°JÑ>Ð>s   ¡*A ÁA*r   r   r   r   c           
     óH   — t          | d||dt          |¦  «        fg¦  «        S )Nr   r@   )r*   r/   )r>   r   r@   r   s       r)   Úget_provisioning_urizHOTP.get_provisioning_uri`   s/   € õ Ø�&˜,¨°)½SÀ¹\¼\Ð1JÐ0Kñ
ô 
ð 	
r+   )NT)r-   r   r.   r/   r   r0   r1   r2   r3   r4   r   r5   )r@   r/   r   rA   )r   rA   r@   r/   r   r5   )r@   r/   r   r/   )r   r   r@   r/   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__r?   rH   rK   rD   r^   © r+   r)   r   r   -   s‰   € € € € € ð #Ø#'ð$ð $ð $ð $ð $ð0>ð >ð >ð >ðFð Fð Fð Fð?ð ?ð ?ð ?ð
ð 
ð 
ð 
ð 
ð 
r+   )r   r   r   r   r   r   r   r   r   r   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   ÚUnionr0   r*   r   rb   r+   r)   ú<module>rk      sú   ðð
 #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )à >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ AÐ AÐ AÐ AÐ AÐ AØ %Ð %Ð %Ð %Ð %Ð %à”˜T 6¨6Ð1Ô2€ðDð Dð Dð Dð48
ð 8
ð 8
ð 8
ð 8
ñ 8
ô 8
ð 8
ð 8
ð 8
r+   