a
    !fh                     @   sj   d Z dZddlZddlZddlmZ G dd deZdddZi fd	d
Z	e
dkrfdd Zejdd dS )zgSelf tests

These tests should perform quickly and can ideally be used every time an
application runs.
z$Id$    N)StringIOc                   @   s   e Zd Zdd ZdS )SelfTestErrorc                 C   s   t | || || _|| _d S N)	Exception__init__messageresult)selfr   r    r
   ]/var/www/html/python-backend/venv/lib/python3.9/site-packages/Cryptodome/SelfTest/__init__.pyr   &   s    zSelfTestError.__init__N)__name__
__module____qualname__r   r
   r
   r
   r   r   %   s   r   c           	      K   s   |du ri }t  }| du r:|du r.t|d}|| n$|du rV|| j|d ntd|du rrt |d< n||d< t jf d|i|}||}| s|du rt	j
|d   td||S )a>  Execute self-tests.

    This raises SelfTestError if any test is unsuccessful.

    You may optionally pass in a sub-module of SelfTest if you only want to
    perform some of the tests.  For example, the following would test only the
    hash modules:

        Cryptodome.SelfTest.run(Cryptodome.SelfTest.Hash)

    Nconfigz5'module' and 'tests' arguments are mutually exclusivestream	verbosityzSelf-test failed)unittest	TestSuite	get_testsZaddTests
ValueErrorr   ZTextTestRunnerrunZwasSuccessfulsysstderrwritegetvaluer   )	moduler   r   testsr   kwargssuiterunnerr   r
   r
   r   r   +   s(    


r   c                 C   s  g }ddl m} ||j| d7 }ddl m} ||j| d7 }ddl m} ||j| d7 }ddl m} ||j| d7 }ddl m} ||j| d7 }ddl m} ||j| d7 }dd	l m} ||j| d7 }dd
l m	}	 ||	j| d7 }ddl m
}
 ||
j| d7 }|S )Nr   )Cipherr   )Hash)Protocol)	PublicKey)Random)Util)	Signature)IO)Math)ZCryptodome.SelfTestr!   r   r"   r#   r$   r%   r&   r'   r(   r)   )r   r   r!   r"   r#   r$   r%   r&   r'   r(   r)   r
   r
   r   r   P   s    r   __main__c                   C   s   t t S r   )r   r   r   r
   r
   r
   r   <lambda>^       r+   r   )ZdefaultTest)Nr   NNN)__doc__Z__revision__r   r   ZCryptodome.Util.py3compatr   r   r   r   r   r   r   mainr
   r
   r
   r   <module>   s   
%