
    =b	                         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Zedk    r eej                   dS dS )	    N)List   )DEFAULT_HASH_LENGTHDEFAULT_MEMORY_COSTDEFAULT_PARALLELISMDEFAULT_TIME_COSTPasswordHasherprofilesargvreturnc           	         t          j        d          }|                    dt          dd           |                    dt          dt          	           |                    d
t          dt
          	           |                    dt          dt          	           |                    dt          dt          	           |                    dt          dd 	           |	                    | dd                    }d}|j
        r?t          j        t          t          |j
                                                            }n't          |j        |j        |j        |j                  }|                    |          }|j        df|j        df|j        df|j        dfd}t3          d|j        fz             t7          |                                          D ]&\  }}t3          d||d         |d         fz             't3          d           t;          j        d                    ||          d                    |j        |j        |j        |j                  |j                   }	t3          d!|	|j        z  d"z  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durations
             /lib/python3.11/site-packages/argon2/__main__.pymainr<      s   $1DEEEF
3*L     3]4E     3_6I     3_6I     3_6I     B	     T!""X&&DH| 

+Hdl002233
 
 fV	
 
 
 778D lL1.	2['*	 F 

+tvi
7888v||~~&& - -1kQ!adO+,,,,	
}+22 	3 	
 	
	 vfV	  
 
 v'  H* 

Ix$& 4'
I
I
I
IJJJJJ    __main__)r    sysr2   typingr    r   r   r   r   r	   r
   r$   r<   __name__r    r=   r;   <module>rD      s     



                      JKtCy JKT JK JK JK JKZ zDNNNNN r=   