
    +a                     n    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 d Z	e
dk(  r e	ej                         yy)    N   )DEFAULT_HASH_LENGTHDEFAULT_MEMORY_COSTDEFAULT_PARALLELISMDEFAULT_TIME_COSTPasswordHasherc           	      \   t        j                  d      }|j                  dt        dd       |j                  dt        dt        	       |j                  d
t        dt
        	       |j                  dt        dt        	       |j                  dt        dt        	       |j                  | dd        }d}t        |j                  |j                  |j                  |j                        }|j                  |      }|j                  df|j                  df|j                  df|j                  dfd}t        d|j                   fz         t#        |j%                               D ]  \  }}t        d||d   |d   fz          t        d       t'        j&                  dj)                  ||      dj)                  |j                  |j                  |j                  |j                        |j                         }	t        dj)                  |	|j                   z  d z               y )!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`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numberz#
{:.1f}ms per password verificationi  )argparseArgumentParseradd_argumentintr   r   r   r   
parse_argsr   tmplr   printnsorteditemstimeitformat)
argvparserargsr   phr   paramskvdurations
             1/usr/lib/python3/dist-packages/argon2/__main__.pymainr3      s   $$1DEF
3*L   3]4E   3_6I   3_6I   3_6I   T!"X&DH	&&FFFF	
B 778D ffl+	*VVW%	F 

+tvvi
78v||~& -1kQ!adO+,- 

}}+22 	3 	
	 vffVV	  
 vv'H* 
.55h6G$6NO    __main__)r   sysr(    r   r   r   r   r   r3   __name__r*    r4   r2   <module>r:      s9     
  AH zN r4   