o
    h	                     @   st   d dl Z d dlZd dlZd dlmZ ddlmZmZmZm	Z	m
Z
mZ dee ddfddZed	kr8eej dS dS )
    N)List   )DEFAULT_HASH_LENGTHDEFAULT_MEMORY_COSTDEFAULT_PARALLELISMDEFAULT_TIME_COSTPasswordHasherprofilesargvreturnc           
      C   s  t jd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
rVttt|j
 }nt|j|j|j|jd}||}|jdf|jdf|jdf|jdfd}td|jf  t| D ]\}}td||d |d f  qtd tjdj||ddj|j|j|j|jd|jd }	td!|	|j d" d#d$ d S )%NzBenchmark Argon2.)descriptionz-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	--profilez3A profile from `argon2.profiles. Takes precendence.r   s   secret)	time_costmemory_costparallelismhash_len
iterationsKiBthreadsbyteszRunning Argon2id %d times with:z	%s: %d %sr   z
Measuring...z!ph.verify({hash!r}, {password!r}))hashpasswordzfrom argon2 import PasswordHasher, Type

ph = PasswordHasher(
    time_cost={time_cost!r},
    memory_cost={memory_cost!r},
    parallelism={parallelism!r},
    hash_len={hash_len!r},
)
gc.enable())setupnumber
i  z.1fzms per password verification)argparseArgumentParseradd_argumentintr   r   r   r   str
parse_argsprofiler   from_parametersgetattrr	   uppertmplr   r   r   r   r   printnsorteditemstimeitformat)
r
   parserargsr   phr   paramskvduration r9   J/var/www/html/env_mimamsha/lib/python3.10/site-packages/argon2/__main__.pymain   st   
	 r;   __main__)r   sysr0   typingr    r   r   r   r   r   r	   r"   r;   __name__r
   r9   r9   r9   r:   <module>   s    
M