
    &h                        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 ej                   eeef   Z	 	 	 	 	 	 	 	 	 	 	 	 d
dZ G d	 d      Zy)    )annotationsN)quote	urlencode)constant_timehmac)SHA1SHA256SHA512)InvalidTokenHOTPc                j   d| j                   fdt        j                  | j                        fd| j                  j
                  j                         fg}||j                  d|f       |j                  |       |rt        |       dt        |       n
t        |      }d| d| dt        |       S )	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/pru.catia.catastroantioquia-mas.com/valormas/lib/python3.12/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                  `    e Zd Z	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZd	dZd
dZddZ	 	 	 	 	 	 	 	 ddZy)r   Nc                   t        |      dk  r|du rt        d      t        |t              st	        d      |dk  s|dkD  rt        d      t        |t
        t        t        f      st	        d      || _        || _	        || _
        y )	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__zHOTP.__init__-   s     s8b=/47FGG&#&GHHA:!HII)dFF%;<GHH	#r&   c                    t        |t              st        d      | j                  |      }|d| j                  z  z  }dj                  || j                        j                         S )Nz*Counter parameter must be an integer type.
   z{0:0{1}})r.   r/   r0   _dynamic_truncater   formatencode)r1   countertruncated_valuer   s       r$   generatezHOTP.generateE   s[    '3'HII009"dll"23  t||4;;==r&   c                d    t        j                  | j                  |      |      st        d      y )Nz#Supplied HOTP value does not match.)r   bytes_eqr>   r   )r1   r   r<   s      r$   verifyzHOTP.verifyM   s-    %%dmmG&<dCDEE Dr&   c                `   t        j                  | j                  | j                        }	 |j	                  |j                  dd             |j                         }|t        |      dz
     dz  }|||d	z    }t        j                  |d
      dz  S # t        $ r t        dd d      w xY w)Nr+   big)r3   	byteorderzCounter must be between 0 and l    .         )rD   i)r   HMACr   r   updateto_bytesOverflowErrorr-   finalizer,   r/   
from_bytes)r1   r<   ctx
hmac_valueoffsetps         r$   r9   zHOTP._dynamic_truncateQ   s    ii		4??3	NJJw''qE'BC \\^
C
Oa/069v
+~~a5~1J>>  	N=k]!LMM	Ns   "B B-c           
     8    t        | d||dt        |      fg      S )Nr   r<   )r%   r/   )r1   r    r<   r   s       r$   get_provisioning_urizHOTP.get_provisioning_uri_   s(     &,)S\1J0K
 	
r&   )NT)r2   bytesr3   r/   r   HOTPHashTypesr4   z
typing.Anyr5   boolreturnNone)r<   r/   rX   rU   )r   rU   r<   r/   rX   rY   )r<   r/   rX   r/   )r    strr<   r/   r   
str | NonerX   rZ   )__name__
__module____qualname__r6   r>   rA   r9   rT    r&   r$   r   r   ,   s~     ##'$$ $ !	$
 $ !$ 
$0>F?

*-
7A
	
r&   )r   r   r   rZ   r    rZ   r   r[   r!   zlist[tuple[str, int]]rX   rZ   )
__future__r   r   typingurllib.parser   r   cryptography.hazmat.primitivesr   r   %cryptography.hazmat.primitives.hashesr   r	   r
   (cryptography.hazmat.primitives.twofactorr   UnionrV   r%   r   r_   r&   r$   <module>rg      s   
 #   ) > F F AT6612D
DD D 	D
 ,D 	D48
 8
r&   