ƺhddlmZddlZddlmZddlmZddlmZm Z ddl m Z m Z ddl mZddlmZmZdd lmZd ZGd d ejZGd dejZGddejZGddejZGddejZGddejZedddddipgZeedddddipgz ZeeD]7\ZZe ee!refdZ"e#ed eze"e#ed eze"8Gd!d"ejZ$Gd#d$ejZ%ifd%Z&e'd&krd'Z(ej)d()dSdS)*)print_functionN unhexlify)list_test_cases)load_test_vectorsload_test_vectors_wycheproof)tobytesbchr)AES)SHAKE128SHA256)strxorcltjt||S)N)data)r newr read)taglengths /builddir/build/BUILD/imunify360-venv-2.5.2/opt/imunify360/venv/lib64/python3.11/site-packages/Crypto/SelfTest/Cipher/test_GCM.pyget_tag_randomr.s) zBGcmTests.test_message_chunks..break_up..s3###qD1\>)*###rr)r:rB)rrrs``rbreak_upz.GcmTests.test_message_chunks..break_upsJ#####E!SYY 5"5"### #r) r8rWrH r(Prr) rr rrr#r$updater[r&r'verifyr%rg) r( auth_datar"r) ciphertextref_macrtrrchunkr,ct2s rtest_message_chunkszGcmTests.test_message_chunkss##7== ";44 s|4=III i   $77 BB G # # # @ # #LWT\3>## W%%% h'''  6664<((T]++di(( '&, (***%rr &! y!!!' "1" ,,Yw-?-?8ATATUU G,,,,,rcvtt|j}tt|j}tt|j}tt|j}t j|jt j|j}||j| |j}| }t j|t j|}d|dd<d|dd<||d|dd<| |} d|dd<| } | || | || | |j |j tt|j}tt|j}tt|j}~t j|t j|} d|dd<d|dd<| |d|dd<| t| t| } | |j| dSr) memoryviewrrr$rr rr#rzr%rgr'r!rb) r(key_mvnonce_mv header_mvdata_mvrr+rrrrrrs rtest_memoryviewzGcmTests.test_memoryviewsrIdl3344i 6677y3344 Yty1122'$,, $ /// ty!!! __TY ' 'nn'&, (***%rr &! y!!!' "1" //'**% >>## W%%% h'''  666Idl3344i 6677y3344 '&, (***%rr &! y!!!' "1" ,,Z-@-@*XBVBVWW G,,,,,rctd}tj|jtj|j}||}|}td}tj|jtj|j}|||}|||||dtj|jtj|j}| ||}|||||dtj|jtj|j}| ||\}}|||||d|||tj|jtj|j}| |||}|||||ddSNs55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555r routput) r rrr#r$r%rgrr'r&r[rb)r(r*r)r+rrrestag_outs rtest_output_paramzGcmTests.test_output_param4s s|4=III ^^B  mmoo3s|4=IIInnRn// V$$$ d###s|4=IIInnRn// V$$$ d###s|4=III00F0CC W V$$$ d### g&&&s|4=III''C'?? V$$$ d#####rc"d}tj|jtj|j}||}t td}tj|jtj|j}||||||tj|jtj|j}| |||||dSr) r rrr#r$r%rrr'r&)r(r*r)r+rs rtest_output_param_memoryviewz%GcmTests.test_output_param_memoryviewQs s|4=III ^^B  IcNN++s|4=IIIr&))) V$$$s|4=IIIr&))) V$$$$$rc4d}d|z}tj|jtj|j}||}tj|jtj|j}|t|j|d|ztj|jtj|j}|t|j|d|zt|dz }tj|jtj|j}|t|j||tj|jtj|j}|t|j||dS)Nr5r 0rr8) r rrr#r$r%r3r4r&rr9)r(LEN_PTr*r)r+shorter_outputs rtest_output_param_negzGcmTests.test_output_param_neg`sH F]s|4=III ^^B  s|4=III )V^Rv NNNs|4=III )V^Rv NNN"6A:..s|4=III *fnbPPPs|4=III *fnbPPPPPrN)__name__ __module__ __qualname__rrr$rr-r0r6r<r@rFrKrQrSrUr^rdrjrrrrrrrorrrr2sonY++G~k2..H >&# & &D"""888111$$$<<<,,, ! ! !*** :::JJJ'''& ' ' '"""'7'7'7R------^------^$$$: % % %QQQQQrrceZdZeddZeddZeddZdZdZd Z d Z d Z d Z d Z dZdZdZdZdS) GcmFSMTestsrrrrrrcbtj|jtj|j}||j}|}tj|jtj|j}||| |dSr/) r rrr#r$r%rrgr&r{r(r)r+r]s r-test_valid_init_encrypt_decrypt_digest_verifyz9GcmFSMTests.test_valid_init_encrypt_decrypt_digest_verifyzss|#}... ^^DI & &mmoos|#}...r crcltj|jtj|j}||j|}tj|jtj|j}||j||dSr/) r rrr#r$rzrrgr{r(r)r]s r$test_valid_init_update_digest_verifyz0GcmFSMTests.test_valid_init_update_digest_verifyss|#}... di   mmoos|#}... di    crctj|jtj|j}||j||j}|}tj|jtj|j}||j| || |dSr/) r rrr#r$rzrr%rgr&r{rs rtest_valid_full_pathz GcmFSMTests.test_valid_full_pathss|#}... di   ^^DI & &mmoos|#}... di   r crctj|jtj|j}|dSr/)r rrr#r$rgr?s rtest_valid_init_digestz"GcmFSMTests.test_valid_init_digests/s|4=III rctj|jtj|j}|}tj|jtj|j}||dSr/)r rrr#r$rgr{rs rtest_valid_init_verifyz"GcmFSMTests.test_valid_init_verifys_s|4=IIImmoos|4=III crcdD]}dd|j|jdzfD]}|d}nt|}tj|jtj|j}|||t||}||j||j||j||jdS)NrMs3333r ) rrBr rrr#r$rzrN)r( method_namer| assoc_lenr)methods r&test_valid_multiple_encrypt_or_decryptz2GcmFSMTests.test_valid_multiple_encrypt_or_decrypts/ " "K"FDI"i$.0 " " $ $II #IIs|'+}666(MM),,, 55ty!!!ty!!!ty!!!ty!!!! " " "rctj|jtj|j}||j|}tdD]*}| ||+tj|jtj|j}||jtdD]}| |dS)Nr rZ) r rrr#r$rzrrgr:r'r{)r(r) first_macr;s r$test_valid_multiple_digest_or_verifyz0GcmFSMTests.test_valid_multiple_digest_or_verifyss|4=III di   MMOO q 9 9A   Y  8 8 8 8s|4=III di   q % %A MM) $ $ $ $ % %rctj|jtj|j}||j||j\}}tj|jtj|j}||j|||}| |j|dSr/) r rrr#r$rzrr[rbr')r(r)r+r]r*s r0test_valid_encrypt_and_digest_decrypt_and_verifyz&# & &D        """$ % % % ( ( ( - - - 1 1 1)))))rrc8eZdZdZgdZdeDZdZdS) TestVectorszClass exercising the GCM test vectors found in http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-revised-spec.pdf))rr 58e2fccefa7e3061367f1d57a4e7455a 00000000000000000000000000000000000000000000000000000000)rr 0388dace60b6a392f328c2b971b2fe78 ab6e47d42cec13bdf53a67b21257bddfrr)rڀd9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255ڀ42831ec2217774244b7221b784d0d49ce3aa212f2c02a4e035c17e2329aca12e21d514b25466931c7d8f6a5aac84aa051ba30b396a0aac973d58e091473f5985 4d5c2af327cd64a62cf35abd2ba6fab4 feffe9928665731c6d6a8f9467308308cafebabefacedbaddecaf888)(feedfacedeadbeeffeedfacedeadbeefabaddad2xd9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39x42831ec2217774244b7221b784d0d49ce3aa212f2c02a4e035c17e2329aca12e21d514b25466931c7d8f6a5aac84aa051ba30b396a0aac973d58e091 5bc94fbc3221a5db94fae95ae7121a47rr)rrx61353b4c2806934a777ff51fa22a4755699b2a714fcdc6f83766e5f97b6c742373806900e49f24b22b097544d4896b424989b5e1ebac0f07c23f4598 3612d2e79e3b0785561be14aaca2fccbrcafebabefacedbad)rrx8ce24998625615b603a033aca13fb894be9112a5c3a211a8ba262a3cca7e2ca701e4a9a4fba43c90ccdcb281d48c7c6fd62875d2aca417034c34aee5 619cc5aefffe0bfa462af43c1699d050rx9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b)rrr cd33b28ac773f74ba00ed1f3125724350000000000000000000000000000000000000000000000000r)rr 98e7247c07f0fe411c267e4384b0f600 2ff58d80033927ab8ef4d4587514f0fbrr)rrڀ3980ca0b3c00e841eb06fac4872a2757859e1ceaa6efd984628593b40ca1e19c7d773d00c144c525ac619d18c84a3f4718e2448b2fe324d9ccda2710acade256 9924a7c8587336bfb118024db8674a140feffe9928665731c6d6a8f9467308308feffe9928665731cr)rrx3980ca0b3c00e841eb06fac4872a2757859e1ceaa6efd984628593b40ca1e19c7d773d00c144c525ac619d18c84a3f4718e2448b2fe324d9ccda2710 2519498e80f1478f37ba55bd6d27618crr)rrx0f10f599ae14a154ed24b36e25324db8c566632ef2bbb34f8347280fc4507057fddc29df9a471f75c66541d4d4dad1c9e93a19a58e8b473fa0f062f7 65dcc57fcf623a24094fcca40d3533f8rr)rrxd27e88681ce3243c4830165a8fdcf9ff1de9a1d8e6b447ef6ef7b79828666e4581e79012af34ddd9e2f037589b292db3e67c036745fa22e7e9b7373b dcf566ff291c25bbb8568fc3d376a6d9rr)rrr 530f8afbc74536b9a963b4f1c4cb738b@0000000000000000000000000000000000000000000000000000000000000000r)rr cea7403d4d606b6e074ec5d3baf39d18 d0d1c8a799996bf0265b98b5d48ab919rr)rrڀ522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662898015ad b094dac5d93471bdec1a502270e3cc6c@feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308r)rrx522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662 76fc6ece0f4e1768cddf8853bb2d551brr)rrxc3762df1ca787d32ae47c13bf19844cbaf1ae14d0b976afac52ff7d79bba9de0feb582d33934a4f0954cc2363bc73f7862ac430e64abe499f47c9b1f 3a337dbf46a792c45e454913fe2ea8f2rr)rrx5a8def2f0c9e53f1f75d7853659e2a20eeb2b22aafde6419a058ab4f6f746bf40fc0c3b780f244452da3ebf1c5d82cdea2418997200ef82e44ae7e3f a44a8266ee1c8eb0c8b5d4cf5ae9f19arrc&g|]}d|DS)c,g|]}t|Sror)rpr;s rrsz!TestVectors..s...aYq\\...rro)rptvs rrszTestVectors.s'JJJ2..2...JJJrc |jD]\}}}}}}tj|tj|t |}||||\}} |||||| tj|tj|t |}|||||} ||| dS)N)rX) test_vectorsr rr#rBrzr[r'rb) r( assoc_datar*r+r]keyr!r)rmac2r,s rrunTestzTestVectors.runTests373D & & /JBS%WS#,s3xxHHHF MM* % % %11"55IC   R % % %   S$ ' ' 'WS#,s3xxHHHF MM* % % %++B44C   R % % % % & &rN)rrr__doc__test_vectors_hexrrrorrrr s\ffnnn`KJ9IJJJL&&&&&rrceZdZdZdZdZdS)TestVectorsGueronKrasnovzClass exercising the GCM test vectors found in 'The fragility of AES-GCM authentication algorithm', Gueron, Krasnov https://eprint.iacr.org/2013/157.pdfc4td}td}td}td}tj|tj||}|||dS)N 3da6c536d6295579c0959a7043efb5032b926197d34e091ef722db94ڠ00000000000000000000000000000000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f 69dd586555ce3fcc89663801a71d957b)rr rr#rzr'rg)r(rivaadrgr)s rtest_1zTestVectorsGueronKrasnov.test_1s:;;233;<< =>>clB//66s;; 11111rctd}td}td}td}td}td}tj|tj||}||\}} |||||| dS)N 843ffcf5d2b72694d19ed01d01249412dbcca32ebf9b804617c3aa9e@00000000000000000000000000000000101112131415161718191a1b1c1d1e1fڠ000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4fڠ6268c6fa2a80b2d137467f092f657ac04d89be2beaa623d61b5a868c8f03ff95d3dcee23ad2f1ab3a6c80eaf4b140eb05de3457f0fbc111a6b43d0763aa422a3013cf1dc37fe417d1fbfc449b75d4cc5 3b629ccfbc1119b7319e1dce2cd6fd6d)rr rr#rzr[r') r(rrrr*r+rgr)rdigest2s rtest_2zTestVectorsGueronKrasnov.test_2s:;;233;<<;<< ;<< =>>clB//66s;;0044 W S!!! )))))rN)rrrrrrrorrr r s<// 2 2 2*****rr ceZdZdZdS)NISTTestVectorsGCMcTd|_tj||dS)NT use_clmulunittestTestCase__init__r(as rr"zNISTTestVectorsGCM.__init__s(""4+++++rNrrrr"rorrrr#,,,,,rrceZdZdZdS)NISTTestVectorsGCM_no_clmulcTd|_tj||dS)NFrr#s rr"z$NISTTestVectorsGCM_no_clmul.__init__ s(""4+++++rNr%rorrr(r(r&rr()Cipherr zgcmDecrypt128.rspz GCM decryptcountc t|SNintr;s rr1 CFFrzgcmEncryptExtIV128.rspz GCM encryptc t|Sr-r.r0s rr1r1r2rc|j|_tj|jtj|jt|j|j }| |j d|j vr.| t|j|j|jdS||j|j}|||jdS)N)r!rXrFAIL)desc descriptionr rrr#rrBrrrzrothersr3r9rbr+r'r*)r(rr)r*s r single_testr9!s7RU%([[DNLLL bf RY     j&*C"$% 1 1 1 1 1**25"&99B   R ' ' ' ' 'rztest_%dc>eZdZdZdZdZdZdZdZdZ dZ d S) TestVectorsWycheproofc ntj|||_||_d|_dS)NNone)r r!r"_wycheproof_warnings _extra_params_id)r(wycheproof_warnings extra_paramss rr"zTestVectorsWycheproof.__init__4s4""4((($7!)rc@d}tdddd|i|_dS)Nc|ddzS)NtagSizero)groups r filter_tagz/TestVectorsWycheproof.setUp..filter_tag<s#q( (r)r* wycheproofzaes_gcm_test.jsonzWycheproof GCMtag_size) group_tag)rr)r(rHs rsetUpzTestVectorsWycheproof.setUp:sA ) ) )//G/B/?:Dj9QSSSrc|jSr-)r@r5s rshortDescriptionz&TestVectorsWycheproof.shortDescriptionDs xrc~|jr3|jr.ddl}|d|jd|jddSdSdS)NrzWycheproof warning: z ())warningr>warningswarnr@comment)r(rrRs rrSzTestVectorsWycheproof.warnGsd : R$3 R OOO MMM4888RZZZP Q Q Q Q Q R R R RrcFdt|jz|_ tj|jtj|jfd|ji|j }nC#t$r6}t|jdkrdt|vrYd}~dS|d}~wwxYw| |j ||j\}}|jrM|||j|||j||dSdS)NzWycheproof Encrypt GCM Test #rXrNonce cannot be empty)stridr@r rrr#rrJr?r9rBrzrr[msgvalidr'r+rrS)r(rr)er+rs r test_encryptz"TestVectorsWycheproof.test_encryptLs,2SZZ? WRVS\25.."+.,..FF   25zzQ#:c!ff#D#DG   bf++BF33C 8    R ' ' '   S"& ) ) ) IIbMMMMM  s4A B)B BBcLdt|jz|_ tj|jtj|jfd|ji|j }nC#t$r6}t|jdkrdt|vrYd}~dS|d}~wwxYw| |j  ||j|j}|jsJ|||j||dS#t$r |jrJYdSwxYw)NzWycheproof Decrypt GCM Test #rXrrV)rWrXr@r rrr#rrJr?r9rBrzrrbr+rrZr'rYrS)r(rr)r[r*s r test_decryptz"TestVectorsWycheproof.test_decrypt^sE2SZZ? WRVS\25.."+.,..FF   25zzQ#:c!ff#D#DG   bf **25"&99B8OO8   R ( ( ( IIbMMMMM    x  <    s/4A B)B BB1 D D#"D#cdt|jz|_t|jdkst|jdkrdSt j|jt j |jfd|j i|j }| |j t|jdt|jdz zdz}|t |j||jdS)Nz%Wycheproof Corrupt Decrypt GCM Test #rr8rX)rWrXr@rBrr+r rrr#rJr?rzrrr3r9rbr)r(rr) ct_corrupts rtest_corrupt_decryptz*TestVectorsWycheproof.test_corrupt_decryptss:SZZG ru::??c"%jj1nn Fru**bk*(** bfBE7c"%jj1n#=#GHH  *f&?RVTTTTTrc|jD]A}||||||BdSr-)rr\r^rc)r(rs rrzTestVectorsWycheproof.runTest}s\' * *B   b ! ! !   b ! ! !  % %b ) ) ) ) * *rN) rrrr"rLrNrSr\r^rcrrorrr;r;2s SSSRRR $*UUU*****rr;ceZdZdZdZdS)TestVariableLengthc Rtj|||_dSr-)r r!r"r?)r(rBs rr"zTestVariableLength.__init__s'""4((()rcd}tj}tdD]}d|d}t ||z}t j|t jfd|i|j}| |\}}| || || | ddS)Ns0000000000000000z{0:04d}zutf-8r!@7b7eb1ffbe67a2e53a912067c0ec8e62ebc7ce4d83490ea7426941349811bdf4) r rr:formatencoder r r#r?r[rzr'rf) r(rhrr!rr)r+rs rrzTestVariableLength.runTests JLLCjj  F$$V,,33G<rs>&%%%%%555555RRRRRRRR////////((((((((%%%%%%888QQQQQx QQQD R)R)R)R)R)(#R)R)R)jK&K&K&K&K&(#K&K&K&\'*'*'*'*'*x0'*'*'*T,,,,,*,,,,,,,,("3,,,&%)+% "2"23 55;9;  &&)0% "2"23 55;9; ; y*++GGGCz"c ( ( ( ( G  C=== G 'S+FFFFP*P*P*P*P*H-P*P*P*flllll*lll*4 z(((HMg&&&&&&r