U +MbS@sddlZddlZddlZddlZddlZddlZddlmZddlmZzddl Z dZ Wne k rpdZ YnXddZ dd Z iiifd d ZdS) N) unhexlify)FileNotFoundErrorTFcCsbd}g}Gdddt}d}d}d} |d7}|} | sN|dk rJ||q^| } | dsd| sjd} q$| dr|dk r||d}|| q$| r|d7}d } |dk r|||d ||f|}td | } | s|j| g7_q$| d } | d  } | | d}|dkrLt | d dkr8d | } t || t | q$t || || q$|S)zLoad 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. rc@seZdZddZdS)z_load_tests..TestVectorcSs||_||_g|_dS)N)desccountothers)self descriptionrr =/tmp/pip-target-t616c12r/lib/python/Crypto/SelfTest/loader.py__init__=sz(_load_tests..TestVector.__init__N)__name__ __module__ __qualname__r r r r r TestVector<srNT#[Fz%s (#%d)z([A-Za-z0-9]+) = ?(.*)0)objectreadlineappendstrip startswithrematchrgrouplowergetlensetattrbinasciir) dir_compsfile_inr conversions line_numberresultsrZ test_vectorrZ new_grouplinerestokendata conversionr r r _load_tests0sP         r,c Csd}zvts ttjttj|d||f}tjtj }tj tjj |f||}t |}t ||||}W5QRXWn(tk rt jd|tddYnX|S)zLoad 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 %s test (%s)%Warning: skipping extended tests for r stacklevel)test_vectors_availablererrnoENOENTosstrerrorpathdirnamepycryptodome_test_vectors__file__joinopenr,warningswarn UserWarning)r" file_namerr$r&init_dirfull_file_namer#r r r load_test_vectorsus$      rAc Csg}zfts ttjttj|tjtj }tj tjj |f||}t |} t | } W5QRXWn,tk rtjd|tdd|YSXGdddt} i} |D]\} }|| | | <q| dD] }i}|D]\} }|||| <q|dD]}| }| D]\} }t|| |q|D]\} }t|| |q4|d|_|d |_d D]$}||krdt||t||qd||_|D]\} }t|| ||q|d d k|_|d d k|_||qq|S)Nr-rr.c@s eZdZdS)z0load_test_vectors_wycheproof..TestVectorN)r r rr r r r rsrZ testGroupstestsZtcIdcomment) keyZivZaadmsgcttaglabelZikmsaltinfoZokmsigresultinvalidZ acceptable)r0rr1r2r3r4r5r6r7r8r9r:jsonloadr;r<r=ritemsr idrCrfilenameZvalidwarningr)r"r>rZroot_tagZ group_tagZunit_tagrLr?r@r#Ztv_treerZ common_rootkvrZ common_grouptesttvattrr r r load_test_vectors_wycheproofsV        rY)r3rrNr1r!r;rZCrypto.Util.py3compatrr7r0 ImportErrorr,rArYr r r r s$   E!