§
    8·tcW  ã                   ó’   — d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ 	 d dl	Z	dZ
n# e$ r dZ
Y nw xY wd„ Zd„ Zi i i fd„ZdS )	é    N)Ú	unhexlify)ÚFileNotFoundErrorTFc                 óÄ  — d}g } G d„ dt           ¦  «        }d}d}d}		 |dz  }|                     ¦   «         }
|
s|�|                     |¦  «         �n�|
                     ¦   «         }
|
                     d¦  «        s|
sd}	Œc|
                     d¦  «        r/|�|                     |¦  «         d}|                     |
¦  «         Œ§|	r/|dz  }d	}	|�|                     |¦  «          |d
||fz  |¦  «        }t          j        d|
¦  «        }|s|xj        |
gz  c_        n¿|                     d¦  «         	                    ¦   «         }|                     d¦  «         	                    ¦   «         }| 
                    |d¦  «        }|€?t          |¦  «        dz  dk    rd|z   }t          ||t          j        |¦  «        ¦  «         nt          || ||¦  «        ¦  «         �ŒÁ|S )z×Load and parse a test vector file

    Return a list of objects, one per group of adjacent
    KV lines or for a single line in the form "[.*]".

    For a group of lines, the object has one attribute per line.
    r   c                   ó   — e Zd Zd„ ZdS )ú_load_tests.<locals>.TestVectorc                 ó0   — || _         || _        g | _        d S )N)ÚdescÚcountÚothers)ÚselfÚdescriptionr
   s      ú</usr/lib/python3/dist-packages/Cryptodome/SelfTest/loader.pyÚ__init__z(_load_tests.<locals>.TestVector.__init__=   s   € Ø#ˆDŒIØˆDŒJØˆDŒKˆKˆKó    N)Ú__name__Ú
__module__Ú__qualname__r   © r   r   Ú
TestVectorr   <   s#   € € € € € ð	ð 	ð 	ð 	ð 	r   r   NTé   ú#ú[Fz%s (#%d)z([A-Za-z0-9]+) = ?(.*)é   Ú0)ÚobjectÚreadlineÚappendÚstripÚ
startswithÚreÚmatchr   ÚgroupÚlowerÚgetÚlenÚsetattrÚbinasciir   )Ú	dir_compsÚfile_inr   ÚconversionsÚline_numberÚresultsr   Útest_vectorr
   Ú	new_groupÚlineÚresÚtokenÚdataÚ
conversions                  r   Ú_load_testsr4   0   s8  € ð €KØ€Gðð ð ð ð •Vñ ô ð ð €KØ€EØ€Ið)>Ø�qÑˆØ×ÒÑ!Ô!ˆØð 	ØÐ&Ø—’˜{Ñ+Ô+Ð+ÙØ�zŠz‰|Œ|ˆð �?Š?˜3ÑÔð 	 tð 	ØˆIØà�?Š?˜3ÑÔð 	ØÐ&Ø—’˜{Ñ+Ô+Ð+ØˆKØ�NŠN˜4Ñ Ô Ð Øàð 	OØ�Q‰JˆEØˆIØÐ&Ø—’˜{Ñ+Ô+Ð+Ø$˜* Z°;ÀÐ2FÑ%FÈÑNÔNˆKåŒhÐ/°Ñ6Ô6ˆØð 	>ØÐÔ 4 &Ñ(ÐÔÐà—I’I˜a‘L”L×&Ò&Ñ(Ô(ˆEØ—9’9˜Q‘<”<×%Ò%Ñ'Ô'ˆDà$Ÿš¨°Ñ5Ô5ˆJØÐ!Ý�t‘9”9˜q‘= AÒ%Ð%Ø ™:�DÝ˜ U­HÔ,>¸tÑ,DÔ,DÑEÔEÐEÐEå˜ U¨J¨J°tÑ,<Ô,<Ñ=Ô=Ð=ñS)>ðX €Nr   c                 ó&  — d}	 t           s7t          t          j        t	          j        t          j        ¦  «        |¦  «        ‚|›d|›d�}t          j                             t          j	        ¦  «        }t          j         
                    t	          j        j
        |g| ¢R Ž |¦  «        }t          |¦  «        5 }t          | |||¦  «        }ddd¦  «         n# 1 swxY w Y   n/# t          $ r" t          j        d|z   t          d¬¦  «         Y nw xY w|S )zæLoad and parse a test vector file

    This function returns a list of objects, one per group of adjacent
    KV lines or for a single line in the form "[.*]".

    For a group of lines, the object has one attribute per line.
    Nz test (ú)ú%Warning: skipping extended tests for r   ©Ú
stacklevel)Útest_vectors_availabler   ÚerrnoÚENOENTÚosÚstrerrorÚpathÚdirnameÚpycryptodome_test_vectorsÚ__file__ÚjoinÚopenr4   ÚwarningsÚwarnÚUserWarning)r(   Ú	file_namer   r*   r,   Úinit_dirÚfull_file_namer)   s           r   Úload_test_vectorsrK   u   sk  € ð €Gð$Ý%ð 	/Ý#¥E¤LÝ$&¤Kµ´Ñ$=Ô$=Ø$-ñ/ô /ð /ð )4¨¨°Y°Y°YÐ?ˆå”7—?’?Õ#<Ô#EÑFÔFˆÝœŸš¥b¤g¤l°8Ð&H¸iÐ&HÐ&HÐ&HÈ)ÑTÔTˆÝ�.Ñ!Ô!ð 	P WÝ! )¨W°kÀ;ÑOÔOˆGð	Pð 	Pð 	Pñ 	Pô 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pøøøð 	Pð 	Pð 	Pð 	Pøøõ ð $ð $ð $ÝŒÐ=ÀÑKÝ!Ø!"ð	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð$øøøð
 €Ns6   „B3C" Â7CÃ
C" ÃCÃC" ÃCÃC" Ã")DÄDc                 óR  — g }	 t           s7t          t          j        t	          j        t          j        ¦  «        |¦  «        ‚t          j                             t          j	        ¦  «        }t          j         
                    t	          j        j
        |g| ¢R Ž |¦  «        }t          |¦  «        5 }	t          j        |	¦  «        }
d d d ¦  «         n# 1 swxY w Y   n1# t          $ r$ t          j        d|z   t           d¬¦  «         |cY S w xY w G d„ dt"          ¦  «        }i }|                     ¦   «         D ]\  }} ||
¦  «        ||<   Œ|
d         D �]S}i }|                     ¦   «         D ]\  }} ||¦  «        ||<   Œ|d         D �]} |¦   «         }|                     ¦   «         D ]\  }}t'          |||¦  «         Œ|                     ¦   «         D ]\  }}t'          |||¦  «         Œ|d         |_        |d	         |_        d
D ]*}||v r$t'          ||t-          ||         ¦  «        ¦  «         Œ+||_        |                     ¦   «         D ]\  }}t'          || ||¦  «        ¦  «         Œ |d         dk    |_        |d         dk    |_        |                     |¦  «         �Œ�ŒU|S )Nr7   r   r8   c                   ó   — e Zd ZdS )ú0load_test_vectors_wycheproof.<locals>.TestVectorN)r   r   r   r   r   r   r   rN   ª   s   € € € € € Øˆr   r   Ú
testGroupsÚtestsÚtcIdÚcomment)ÚkeyÚivÚaadÚmsgÚctÚtagÚlabelÚikmÚsaltÚinfoÚokmÚsigÚresultÚinvalidÚ
acceptable)r:   r   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   ÚjsonÚloadrE   rF   rG   r   Úitemsr&   ÚidrR   r   ÚfilenameÚvalidÚwarningr   )r(   rH   r   Úroot_tagÚ	group_tagÚunit_tagr_   rI   rJ   r)   Útv_treer   Úcommon_rootÚkÚvr"   Úcommon_groupÚtestÚtvÚattrs                       r   Úload_test_vectors_wycheproofrt   •   s>  € ð €FðÝ%ð 	/Ý#¥E¤LÝ$&¤Kµ´Ñ$=Ô$=Ø$-ñ/ô /ð /õ ”7—?’?Õ#<Ô#EÑFÔFˆÝœŸš¥b¤g¤l°8Ð&H¸iÐ&HÐ&HÐ&HÈ)ÑTÔTˆÝ�.Ñ!Ô!ð 	) WÝ”i Ñ(Ô(ˆGð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)øøõ ð ð ð ÝŒÐ=ÀÑKÝ!Ø!"ð	$ñ 	$ô 	$ð 	$ð ˆˆˆð	øøøðð ð ð ð •Vñ ô ð ð €KØ—’Ñ Ô ð $ð $‰ˆˆ1Ø˜˜7™œˆ�A‰ˆà˜Ô&ð ñ ˆàˆØ—O’OÑ%Ô%ð 	'ð 	'‰DˆAˆqØ˜a ™hœhˆL˜‰OˆOà˜'”Nð 	ñ 	ˆDØ�‘”ˆBà#×)Ò)Ñ+Ô+ð "ð "‘��1Ý˜˜A˜qÑ!Ô!Ð!Ð!Ø$×*Ò*Ñ,Ô,ð "ð "‘��1Ý˜˜A˜qÑ!Ô!Ð!Ð!à˜”LˆBŒEØ˜iœˆBŒJØlð =ð =�Ø˜4�<�<Ý˜B ¥i°°T´
Ñ&;Ô&;Ñ<Ô<Ð<øØ#ˆBŒKà ŸšÑ(Ô(ð (ð (‘��1Ý˜˜A˜q˜q ™wœwÑ'Ô'Ð'Ð'à˜H”~¨Ò2ˆBŒHØ˜hœ¨<Ò7ˆBŒJØ�MŠM˜"ÑÔÐÑñ)	ð, €Ms6   „B+C Â/CÃC ÃCÃC ÃCÃC Ã+D
Ä	D
)r=   r    rb   r;   r'   rE   r   ÚCryptodome.Util.py3compatr   rA   r:   ÚImportErrorr4   rK   rt   r   r   r   ú<module>rw      sì   ðð> 
€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7ð#Ø$Ð$Ð$Ð$Ø!ÐÐøØð #ð #ð #Ø"ÐÐÐð#øøøðBð Bð BðJð ð ðB +-¸ÀRð8ð 8ð 8ð 8ð 8ð 8s   ¦- ­7¶7