o
    \¨ÊhT  ã                   @   sn   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r5dd„ Zejdd� dS 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
   úJ/var/www/html/env/lib/python3.10/site-packages/Crypto/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 r+| | j|d�¡ ntdƒ‚|du r8tƒ |d< t jdd|i|¤Ž}| |¡}| ¡ s\|du rWt	j
 | ¡ ¡ td|ƒ‚|S )a6  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:

        Crypto.SelfTest.run(Crypto.SelfTest.Hash)

    N©Úconfigz5'module' and 'tests' arguments are mutually exclusiveÚstreamÚ	verbosityzSelf-test failedr
   )ÚunittestÚ	TestSuiteÚ	get_testsÚaddTestsÚ
ValueErrorr   ÚTextTestRunnerÚrunÚ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 }|S )
Nr   )ÚCipherr   )ÚHash)ÚProtocol)Ú	PublicKey)ÚRandom)ÚUtil)Ú	Signature)	ÚCrypto.SelfTestr$   r   r%   r&   r'   r(   r)   r*   )	r   r    r$   r%   r&   r'   r(   r)   r*   r
   r
   r   r   M   s   r   Ú__main__c                   C   s   t  tƒ ¡S r   )r   r   r   r
   r
   r
   r   Ú<lambda>Y   s    r-   r"   )ÚdefaultTest)Nr   NNN)Ú__doc__Ú__revision__r   r   Úior   r   r   r   r   r   r"   Úmainr
   r
   r
   r   Ú<module>   s   
"þ