o
    -i	                     @  sh   d dl mZ d dlZd dlZd dlZddlmZmZmZm	Z	m
Z
mZ dd	d
Zedkr2eej dS dS )    )annotationsN   )DEFAULT_HASH_LENGTHDEFAULT_MEMORY_COSTDEFAULT_PARALLELISMDEFAULT_TIME_COSTPasswordHasherprofilesargv	list[str]returnNonec           
      C  s  t jdt jd}|jdtddd |jdtdtd	 |jd
tdtd	 |jdtdtd	 |jdtdtd	 |jdt	dd d	 |
| dd  }d}|jrXttt|j }nt|j|j|j|jd}||}td|j d d|jdfd|jdfd|jdfd|jdffD ]\}}}t| d| d |  qtd! tjd"|d#|d$d%|jd&|jd'|jd(|jd)	|jd*}	td+|	|j d, d-d. d S )/NzBenchmark Argon2.)descriptionformatter_classz-nd   z Number of iterations to measure.)typedefaulthelpz-tz`time_cost`)r   r   r   z-mz`memory_cost`z-pz`parallelism`z-lz`hash_length`z	--profilez2A profile from `argon2.profiles. Takes precedence.r   s   secret)	time_costmemory_costparallelismhash_lenzRunning Argon2id z times with:r   bytesr   KiBr   threadsr   
iterationsz:  z
Measuring...z
ph.verify(z, )zFfrom argon2 import PasswordHasher

ph = PasswordHasher(
    time_cost=z,
    memory_cost=z,
    parallelism=z,
    hash_len=z,
)
gc.enable())setupnumber
i  z.1fzms per password verification)argparseArgumentParserArgumentDefaultsHelpFormatteradd_argumentintr   r   r   r   str
parse_argsprofiler   from_parametersgetattrr	   uppertmplhashprintnr   r   r   r   timeit)
r
   parserargspasswordphr0   namevalueunitsduration r<   ]/home/esfera/Desktop/Rishu/Inhouse_Email/venv/lib/python3.10/site-packages/argon2/__main__.pymain   sx   





 r>   __main__)r
   r   r   r   )
__future__r   r!   sysr3    r   r   r   r   r   r	   r>   __name__r
   r<   r<   r<   r=   <module>   s    

G