ghddlZddlZddlZddlZddlmZddlmZddlm Z m Z m Z ddl m Z mZddlmZddlmZddlmZ ddlZd Zn #e$rd ZYnwxYwGd d eZdzP-224r?rBrErHs rcreate_ref_keys_p224rSdrPrcd}td}tt|dd}t|dd}t |ddksJt|d |d z}t||d zd}t jd | t jd || fS) N z ecc_p256.txtrr< rr;r>zP-256r?rBrErHs rcreate_ref_keys_p256rXqG.))4466I!')AaC."9"9::MIadO,,M  a ! !Q & & & & q{!;<zP-384r?rBrErHs rcreate_ref_keys_p384r^~rYrcd}td}tt|dd}t|dd}t |ddksJt|d |d z}t||d zd}t jd | t jd || fS) NBz ecc_p521.txtrr\rr;r>zP-521r?rBrErHs rcreate_ref_keys_p521rcrYrctd}t|dd}tjd|}||fS)Nzecc_ed25519.txtr<raEd25519r@seedr0rFr8r rG public_keyrJrgkeys rcreate_ref_keys_ed25519rlsZ+,,7799I 9QqS> " "D -id 3 3 3C !! ""rctd}t|dd}tjd|}||fS)Nz ecc_ed448.txtrV Ed448rfrhrjs rcreate_ref_keys_ed448rpsY/**5577I 9QrT? # #D -gD 1 1 1C !! ""rcXtjdjS)NsSEED)r newupdater%rrrget_fixed_prngrts <>>  ) ) ..rct}||t}||d|jS)Nr>)rdecoder value)dataseqbss rextract_bitstring_from_spkir{sCmm 4 ^^ #a&xrceZdZdZdZdS) TestImportcR|ttjddS)Nr assertRaises ValueErrorr import_keyselfs r test_emptyzTestImport.test_emptys" *cnc:::::rcVd}|ttj|dS)Na1-----BEGIN PRIVATE KEY----- MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJChZANiAAQarFRaqflo I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXk= -----END PRIVATE KEY-----r)rmismatchs r test_mismatchzTestImport.test_mismatchs+ *cnh?????rN)rrrrrrrrr}r}s7;;;@@@@@rr}cleZdZfdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZxZS)TestImport_P192c~tt|j|i|t\|_|_dSN)superr__init__rO ref_private ref_publicrargskwargs __class__s rrzTestImport_P192.__init__>-ot$$-t>v>>>,@,B,B)$///rc@td}tj|}||j|tj|d}||j|tj|}||j|dS)Necc_p192_public.derr0r _import_subjectPublicKeyInfo assertEqualr _import_derrrkey_filerks rtest_import_public_derz&TestImport_P192.test_import_public_der233.x88 #...oh-- #...nX&& #.....rctd}t|}tj|d}||j|dS)NrP192 curve_namer0r{r rrrrrrwrks rtest_import_sec1_uncompressedz-TestImport_P192.test_import_sec1_uncompressedO233+H55nX&999 #.....rctd}t|}tj|d}||j|dS)Necc_p192_public_compressed.derrrrrs rtest_import_sec1_compressedz+TestImport_P192.test_import_sec1_compressedO=>>+H55nX&999 #.....rcBtd}tj|d}||j|tj|d}||j|tj|}||j|dS)Necc_p192_private.derr0r _import_rfc5915_derrrrrrs rtest_import_rfc5915_derz'TestImport_P192.test_import_rfc5915_der344%h55 )3///oh-- )3///nX&& )3/////rctd}tj|d}||j|tj|}||j|dS)Necc_p192_private_p8_clear.derr0r rrrrrs rtest_import_private_pkcs8_clearz/TestImport_P192.test_import_private_pkcs8_clearh<==oh-- )3///nX&& )3/////rctd}tj|}||j|dS)Necc_p192_private_p8_clear.pemr0r rrrrs r&test_import_private_pkcs8_in_pem_clearz6TestImport_P192.test_import_private_pkcs8_in_pem_clear><==nX&& )3/////rctd}tj|d}||j|tj|d}||j|dS)Nzecc_p192_private_p8.dersecretrrs r%test_import_private_pkcs8_encrypted_1z5TestImport_P192.test_import_private_pkcs8_encrypted_1j677oh11 )3///nXx00 )3/////rctd}tj|d}||j|dS)Nzecc_p192_private_p8.pemrrrs r%test_import_private_pkcs8_encrypted_2z5TestImport_P192.test_import_private_pkcs8_encrypted_2@677nXx00 )3/////rctd}tj|d}||j|tj|}||j|dS)Nzecc_p192_x509.derr0r rrrrrs rtest_import_x509_derz$TestImport_P192.test_import_x509_der f011oh-- #...nX&& #.....rctd}tj|}||j|dS)Necc_p192_public.pemr0r rrrrs rtest_import_public_pemz&TestImport_P192.test_import_public_pem=233nX&& #.....rctd}tj|}||j|dS)Necc_p192_private.pemrrs rtest_import_private_pemz'TestImport_P192.test_import_private_pem>344nX&& )3/////rcdD]}td|z}tj|d}||j|tjt |d}||j|dS)Ndes3aes128aes192aes256 aes256_gcmzecc_p192_private_enc_%s.pemrsecretr0r rrrrralgorrks r!test_import_private_pem_encryptedz1TestImport_P192.test_import_private_pem_encrypted"F 4 4D !>!EFFH.844C   T-s 3 3 3.x)<>uEE 7+++/,,E,:: 7+++/,,EE,JJ 7+++++rctd}tj|}|dd}td}|||dS)NrrfTrirr0r rrmrrrpub_keykey_file_compressedkey_file_compressed_refs r!test_export_public_der_compressedz1TestExport_P192.test_export_public_der_compressedMe233.**%000MM"+,L"M"M ,.EFFFFFrctd}t|}|jd}|||dS)NrSEC1rgr0r{rrmrrrrwros r$test_export_public_sec1_uncompressedz4TestExport_P192.test_export_public_sec1_uncompressedUQ233+H55/,,F,;; (((((rctd}|jdd}td}t|}|||dS)Nrr{Trirr0rrmr{rrrrorwrws r"test_export_public_sec1_compressedz2TestExport_P192.test_export_public_sec1_compressed\c233/,,FT,JJ"+,L"M"M+,CDD (((((rctd}|j}||||jdd}|||dS)NrrfFrh use_pkcs8r0r_export_rfc5915_private_derrrmrns rtest_export_rfc5915_private_derz/TestExport_P192.test_export_rfc5915_private_derds344">>@@ 7+++"--Ue-LL 7+++++rctd}|j}||||jd}|||dS)Nrrfrgr0r _export_pkcs8rrmrns rtest_export_private_pkcs8_clearz/TestExport_P192.test_export_private_pkcs8_clearoq<=="0022 7+++"--U-;; 7+++++rc|jdd}|ttj|dt j|d}||j||jddd}t j|d}||j|dSNr PBKDF2WithHMAC-SHA1AndAES128-CBC) passphrase protectionrfrhrr rrrrr _import_pkcs8rrmrrrodecodeds r#test_export_private_pkcs8_encryptedz3TestExport_P192.test_export_private_pkcs8_encryptedz"00H?a1cc *c&7$GGG#GX66 )7333"--U;C;].__.(33 )733333rcptdd}|jd}||||jd}||||jdd}|||dS)NrrtFPEMrgrir0stripr_export_public_pemrrrmrns r#test_export_public_pem_uncompressedz3TestExport_P192.test_export_public_pem_uncompressed2D99??AA"55e<< 7+++/,,E,:: 7+++/,,EE,JJ 7+++++rctdd}tj|}|dd}tdd}|||dS)NrrrTrizecc_p192_public_compressed.pemr0rr rrmrrts r!test_export_public_pem_compressedz1TestExport_P192.test_export_public_pem_compressed2D99??AA.**%000MM"+,Ld"S"S"Y"Y"["[ ,.EFFFFFrctdd}|jd}||||jdd}|||dS)NrrrFrr0rr_export_private_pemrrmrns rtest_export_private_pem_clearz-TestExport_P192.test_export_private_pem_clear3T::@@BB"66t<< 7+++"--Ue-LL 7+++++rc|jd}|ttj|d|vsJt j|d}||j||jddd}t j|d}||j|dSNr)rzEC PRIVATE KEYrrFrhrrrrrrr rrrmrs r!test_export_private_pem_encryptedz1TestExport_P192.test_export_private_pem_encrypted"66)6LL *cng>>>7****.(33 )7333"--U4<38.::.(33 )733333rc tdd}|j}||||jd}|||dS)Nrrrrgr0rr(_export_private_clear_pkcs8_in_clear_pemrrmrns r#test_export_private_pkcs8_and_pem_1z3TestExport_P192.test_export_private_pkcs8_and_pem_1>>&'1111.(33 )7333"--U4<4V.XX.(33 )733333rc|jdddt}|jdddt}||||jdddt}|jdddt}|||dSNrrrrhrrrandfuncFrhrrrrrmrtrrencoded1encoded2s r test_prngzTestExport_P192.test_prng#..e5=5W3A3C3C/EE#..e5=5W3A3C3C/EE 8,,,#..e495=3A3C3C/EE#..e495=3A3C3C/EE 8,,,,,rc|jdddt}|jdddt}|||dSNrFrrrrrs rtest_byte_or_string_passphrasez.TestExport_P192.test_byte_or_string_passphrase#..e495=3A3C3C/EE#..e495>3A3C3C/EE 8,,,,,rc&|t|jjd|jddd|t|jjdd|t|jjdddd |t|jjdd |t|jjdd d|t|jjdd d dSNXXXrgrrFrrhrrfrrhrrrrr3rrrrrmrrs rtest_error_params1z"TestExport_P192.test_error_params1M *d&6&A%PPP ##5X). $ 0 0 0 *d&6&A%19  ; ; ; *d&6&A%19051S  U U U *do&@$)  + + + *d&6&A%13u  F F F *d&6&A%131S  U U U U Urc&d}d}tj|}t|jjdz}||dtj|}t|jjdz}||ddS)Nz-----BEGIN EC PRIVATE KEY----- MF8CAQEEGHvhXmIW95JxZYfd4AUPu9BwknjuvS36aqAKBggqhkjOPQMBAaE0AzIA BLJZCyTu35DQIlqvMlBynn3k1Ig+dWfg/brRhHecxptrbloqFSP8ITw0CwbGF+2X 5g== -----END EC PRIVATE KEY-----z-----BEGIN EC PRIVATE KEY----- MF8CAQEEGA3rAotUaWl7d47eX6tz9JmLzOMJwl13XaAKBggqhkjOPQMBAaE0AzIA BG4tHlTBBBGokcWmGm2xubVB0NvPC/Ou5AYwivs+3iCxmEjsymVAj6iiuX2Lxr6g /Q== -----END EC PRIVATE KEY-----iir rintpointQyrrpem1pem2key1low16key2s rtest_compressed_curvez%TestExport_P192.test_compressed_curve (( ~d##DKME)** '''~d##DKME)** '''''rrrrrrprxr~rrrrrrrrrrrrrrrrs@rrcrc;ECCCCC , , ,GGG)))))) , , , , , ,444$ , , ,GGG , , ,444& , , ,444*---0 - - -UUU6(((((((rrcceZdZfdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZxZS)TestExport_P224c~tt|j|i|t\|_|_dSr)rrrrSrrrs rrzTestExport_P224.__init__;rrcJtd}|jd}||||jd}||||jdd}|||dS)NrFrfrgrirkrns rrpz3TestExport_P224.test_export_public_der_uncompressed?rqrctd}tj|}|dd}td}|||dS)NrrfTrirrsrts rrxz1TestExport_P224.test_export_public_der_compressedKryrctd}t|}|jd}|||dS)Nrr{rgr|r}s rr~z4TestExport_P224.test_export_public_sec1_uncompressedSrrctd}|jdd}td}t|}|||dS)Nrr{Trirrrs rrz2TestExport_P224.test_export_public_sec1_compressedZrrctd}|j}||||jdd}|||dS)NrrfFrrrns rrz/TestExport_P224.test_export_rfc5915_private_derbrrctd}|j}||||jd}|||dS)Nrrfrgrrns rrz/TestExport_P224.test_export_private_pkcs8_clearmrrc|jdd}|ttj|dt j|d}||j||jddd}t j|d}||j|dSrrrs rrz3TestExport_P224.test_export_private_pkcs8_encryptedxrrcptdd}|jd}||||jd}||||jdd}|||dS)NrrFrrgrirrns rrz3TestExport_P224.test_export_public_pem_uncompressedrrctdd}tj|}|dd}tdd}|||dS)NrrrTrizecc_p224_public_compressed.pemrrts rrz1TestExport_P224.test_export_public_pem_compressedrrctdd}|jd}||||jdd}|||dS)NrrrFrrrns rrz-TestExport_P224.test_export_private_pem_clearrrc|jd}|ttj|d|vsJt j|d}||j||jddd}t j|d}||j|dSrrrs rrz1TestExport_P224.test_export_private_pem_encryptedrrc tdd}|j}||||jd}|||dS)Nrrrrgrrns rrz3TestExport_P224.test_export_private_pkcs8_and_pem_1rrc|jdd}|ttj|d|vsJt j|d}||j||jddd}t j|d}||j|dSrrrs rrz3TestExport_P224.test_export_private_pkcs8_and_pem_2rrc|jdddt}|jdddt}||||jdddt}|jdddt}|||dSrrrs rrzTestExport_P224.test_prngrrc|jdddt}|jdddt}|||dSrrrs rrz.TestExport_P224.test_byte_or_string_passphraserrc&|t|jjd|jddd|t|jjdd|t|jjdddd |t|jjdd |t|jjdd d|t|jjdd d dSrrrs rrz"TestExport_P224.test_error_params1rrc&d}d}tj|}t|jjdz}||dtj|}t|jjdz}||ddS)Nz-----BEGIN EC PRIVATE KEY----- MGgCAQEEHPYicBNI9nd6wDKAX2l+f3A0Q+KWUQeMqSt5GoOgBwYFK4EEACGhPAM6 AATCL6rUIDT14zXKoS5GQUMDP/tpc+1iI/FyEZikt2roKDkhU5q08srmqaysbfJN eUr7Xf1lnCVGag== -----END EC PRIVATE KEY-----z-----BEGIN EC PRIVATE KEY----- MGgCAQEEHEFjbaVPLJ3ngZyCibCvT0RLUqSlHjC5Z3e0FtugBwYFK4EEACGhPAM6 AAT5IvL2V6m48y1JLMGr6ZbnOqNKP9hMf9mxyVkk6/SaRoBoJVkXrNIpYL0P7DS7 QF8E/OGeZRwvow== -----END EC PRIVATE KEY-----rijFi/rrs rrz%TestExport_P224.test_compressed_curverrrrs@rrr9rrrceZdZfdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZxZS)TestExport_P256c~tt|j|i|t\|_|_dSr)rrrrXrrrs rrzTestExport_P256.__init__9rrcJtd}|jd}||||jd}||||jdd}|||dS)NrFrfrgrirkrns rrpz3TestExport_P256.test_export_public_der_uncompressed=rqrctd}tj|}|dd}td}|||dS)NrrfTrirrsrts rrxz1TestExport_P256.test_export_public_der_compressedIryrctd}t|}|jd}|||dS)Nrr{rgr|r}s rr~z4TestExport_P256.test_export_public_sec1_uncompressedQrrctd}|jdd}td}t|}|||dS)Nrr{Trirrrs rrz2TestExport_P256.test_export_public_sec1_compressedXrrctd}|j}||||jdd}|||dS)NrrfFrrrns rrz/TestExport_P256.test_export_rfc5915_private_der`rrctd}|j}||||jd}|||dS)Nrrfrgrrns rrz/TestExport_P256.test_export_private_pkcs8_clearkrrc|jdd}|ttj|dt j|d}||j||jddd}t j|d}||j|dSrrrs rrz3TestExport_P256.test_export_private_pkcs8_encryptedvrrcptdd}|jd}||||jd}||||jdd}|||dS)NrrFrrgrirrns rrz3TestExport_P256.test_export_public_pem_uncompressedrrctdd}tj|}|dd}tdd}|||dS)NrrrTrizecc_p256_public_compressed.pemrrts rrz1TestExport_P256.test_export_public_pem_compressedrrctdd}|jd}||||jdd}|||dS)NrrrFrrrns rrz-TestExport_P256.test_export_private_pem_clearrrc|jd}|ttj|d|vsJt j|d}||j||jddd}t j|d}||j|dSrrrs rrz1TestExport_P256.test_export_private_pem_encryptedrrc tdd}|j}||||jd}|||dS)Nr rrrgrrns rrz3TestExport_P256.test_export_private_pkcs8_and_pem_1rrc|jdd}|ttj|d|vsJt j|d}||j||jddd}t j|d}||j|dSrrrs rrz3TestExport_P256.test_export_private_pkcs8_and_pem_2rrcLtdd}|jd}||||jd}||||jdd}|||dS)NrrFOpenSSHrgrir0r_export_opensshrrmrns r test_export_openssh_uncompressedz0TestExport_P256.test_export_openssh_uncompressed:DAA/11%88 7+++/,,I,>> 7+++/,,I,NN 7+++++rctdd}tj|}|dd}t |t |ksJ||tj|dS)Nrrr Trir0r rrmlenrrrrurvs rtest_export_openssh_compressedz.TestExport_P256.test_export_openssh_compressed:DAA.**%00 D0QQ8}}s#6777777 #.1D"E"EFFFFFrc|jdddt}|jdddt}||||jdddt}|jdddt}|||dSrrrs rrzTestExport_P256.test_prngrrc|jdddt}|jdddt}|||dSrrrs rrz.TestExport_P256.test_byte_or_string_passphrase rrcv|t|jjd|jddd|t|jjdd|t|jjdddd |t|jjdd |t|jjdd d|t|jjdd d |t|jjdddSNrrgrrFrrrfrrrr3rr rrs rrz"TestExport_P256.test_error_params1y *d&6&A%PPP ##5X). $ 0 0 0 *d&6&A%19  ; ; ; *d&6&A%19051S  U U U *do&@$)  + + + *d&6&A%13u  F F F *d&6&A%131S  U U U *d&6&A)19  ; ; ; ; ;rc&d}d}tj|}t|jjdz}||dtj|}t|jjdz}||ddS)Nz-----BEGIN EC PRIVATE KEY----- MFcCAQEEIHTuc09jC51xXomV6MVCDN+DpAAvSmaJWZPTEHM6D5H1oAoGCCqGSM49 AwEHoSQDIgACWFuGbHe8yJ43rir7PMTE9w8vHz0BSpXHq90Xi7/s+a0= -----END EC PRIVATE KEY-----z-----BEGIN EC PRIVATE KEY----- MFcCAQEEIFggiPN9SQP+FAPTCPp08fRUz7rHp2qNBRcBJ1DXhb3ZoAoGCCqGSM49 AwEHoSQDIgADLpph1trTIlVfa8NJvlMUPyWvL+wP+pW3BJITUL/wj9A= -----END EC PRIVATE KEY-----riiWnrrs rrz%TestExport_P256.test_compressed_curve7s( ( ~d##DKME)** '''~d##DKME)** '''''rrrrrrprxr~rrrrrrrrrrrrrrrrrrs@rrr7sdCCCCC , , ,GGG)))))) , , , , , ,444$ , , ,GGG , , ,444& , , ,444* , , ,GGG---0 - - -;;;@(((((((rrceZdZfdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZxZS)TestExport_P384c~tt|j|i|t\|_|_dSr)rrrr^rrrs rrzTestExport_P384.__init__PrrcJtd}|jd}||||jd}||||jdd}|||dS)Nr,Frfrgrirkrns rrpz3TestExport_P384.test_export_public_der_uncompressedTrqrctd}tj|}|dd}td}|||dS)Nr,rfTrir0rsrts rrxz1TestExport_P384.test_export_public_der_compressed`ryrctd}t|}|jd}|||dS)Nr,r{rgr|r}s rr~z4TestExport_P384.test_export_public_sec1_uncompressedhrrctd}|jdd}td}t|}|||dS)Nr,r{Trir0rrs rrz2TestExport_P384.test_export_public_sec1_compressedorrctd}|j}||||jdd}|||dS)Nr2rfFrrrns rrz/TestExport_P384.test_export_rfc5915_private_derwrrctd}|j}||||jd}|||dS)Nr4rfrgrrns rrz/TestExport_P384.test_export_private_pkcs8_clearrrc|jdd}|ttj|dt j|d}||j||jddd}t j|d}||j|dSrrrs rrz3TestExport_P384.test_export_private_pkcs8_encrypted"00H7Y1[[ *c&7$GGG#GX66 )7333"--U4<4V.XX.(33 )733333rcptdd}|jd}||||jd}||||jdd}|||dS)Nr;rFrrgrirrns rrz3TestExport_P384.test_export_public_pem_uncompressedrrctdd}tj|}|dd}tdd}|||dS)Nr;rrTrizecc_p384_public_compressed.pemrrts rrz1TestExport_P384.test_export_public_pem_compressedrrctdd}|jd}||||jdd}|||dS)Nr=rrFrrrns rrz-TestExport_P384.test_export_private_pem_clearrrc|jd}|ttj|d|vsJt j|d}||j||jddd}t j|d}||j|dSrrrs rrz1TestExport_P384.test_export_private_pem_encryptedrrc tdd}|j}||||jd}|||dS)Nr6rrrgrrns rrz3TestExport_P384.test_export_private_pkcs8_and_pem_1rrc|jdd}|ttj|d|vsJt j|d}||j||jddd}t j|d}||j|dSrrrs rrz3TestExport_P384.test_export_private_pkcs8_and_pem_2rrcLtdd}|jd}||||jd}||||jdd}|||dS)NrArFr rgrir rns rrz0TestExport_P384.test_export_openssh_uncompressedrrctdd}tj|}|dd}t |t |ksJ||tj|dS)NrArr Trirrs rrz.TestExport_P384.test_export_openssh_compressedrrc|jdddt}|jdddt}||||jdddt}|jdddt}|||dSrrrs rrzTestExport_P384.test_prng rrc|jdddt}|jdddt}|||dSrrrs rrz.TestExport_P384.test_byte_or_string_passphrase#rrcv|t|jjd|jddd|t|jjdd|t|jjdddd |t|jjdd |t|jjdd d|t|jjdd d |t|jjdddSrrrs rrz"TestExport_P384.test_error_params1.rrc&d}d}tj|}t|jjdz}||dtj|}t|jjdz}||ddS)Na-----BEGIN EC PRIVATE KEY----- MIGkAgEBBDAM0lEIhvXuekK2SWtdbgOcZtBaxa9TxfpO/GcDFZLCJ3JVXaTgwken QT+C+XLtD6WgBwYFK4EEACKhZANiAATs0kZMhFDu8DoBC21jrSDPyAUn4aXZ/DM4 ylhDfWmb4LEbeszXceIzfhIUaaGs5y1xXaqf5KXTiAAYx2pKUzAAM9lcGUHCGKJG k4AgUmVJON29XoUilcFrzjDmuye3B6Q= -----END EC PRIVATE KEY-----a-----BEGIN EC PRIVATE KEY----- MIGkAgEBBDDHPFTslYLltE16fHdSDTtE/2HTmd3M8mqy5MttAm4wZ833KXiGS9oe kFdx9sNV0KygBwYFK4EEACKhZANiAASLIE5RqVMtNhtBH/u/p/ifqOAlKnK/+RrQ YC46ZRsnKNayw3wATdPjgja7L/DSII3nZK0G6KOOVwJBznT/e+zudUJYhZKaBLRx /bgXyxUtYClOXxb1Y/5N7txLstYRyP0= -----END EC PRIVATE KEY-----riirrs rrz%TestExport_P384.test_compressed_curveMs   ~d##DKME)** '''~d##DKME)** '''''rrrs@rrrNscCCCCC , , ,GGG)))))) , , , , , ,444$ , , ,GGG , , ,444& , , ,444* , , ,GGG---0 - - -;;;>(((((((rrceZdZfdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZxZS)TestExport_P521c~tt|j|i|t\|_|_dSr)rr6rrcrrrs rrzTestExport_P521.__init__lrrcJtd}|jd}||||jd}||||jdd}|||dS)NrJFrfrgrirkrns rrpz3TestExport_P521.test_export_public_der_uncompressedprqrctd}tj|}|dd}td}|||dS)NrJrfTrirNrsrts rrxz1TestExport_P521.test_export_public_der_compressed|ryrctd}t|}|jd}||||jd}|||dS)NrJr{rgrawr|r}s rr~z4TestExport_P521.test_export_public_sec1_uncompresseds233+H55/,,F,;; (((/,,E,:: (((((rc(td}|jdd}td}t|}||||jdd}|||dS)NrJr{TrirNr;rrs rrz2TestExport_P521.test_export_public_sec1_compresseds233/,,FT,JJ"+,L"M"M+,CDD (((/,,ED,II (((((rctd}|j}||||jdd}|||dS)NrPrfFrrrns rrz/TestExport_P521.test_export_rfc5915_private_derrrctd}|j}||||jd}|||dS)NrRrfrgrrns rrz/TestExport_P521.test_export_private_pkcs8_clearrrc|jdd}|ttj|dt j|d}||j||jddd}t j|d}||j|dSrrrs rrz3TestExport_P521.test_export_private_pkcs8_encryptedr(rcptdd}|jd}||||jd}||||jdd}|||dS)NrYrFrrgrirrns rrz3TestExport_P521.test_export_public_pem_uncompressedrrctdd}tj|}|dd}tdd}|||dS)NrYrrTrizecc_p521_public_compressed.pemrrts rrz1TestExport_P521.test_export_public_pem_compressedrrctdd}|jd}||||jdd}|||dS)Nr[rrFrrrns rrz-TestExport_P521.test_export_private_pem_clearrrc|jd}|ttj|d|vsJt j|d}||j||jddd}t j|d}||j|dSrrrs rrz1TestExport_P521.test_export_private_pem_encryptedrrc tdd}|j}||||jd}|||dS)NrTrrrgrrns rrz3TestExport_P521.test_export_private_pkcs8_and_pem_1rrc|jdd}|ttj|d|vsJt j|d}||j||jddd}t j|d}||j|dSrrrs rrz3TestExport_P521.test_export_private_pkcs8_and_pem_2rrcLtdd}|jd}||||jd}||||jdd}|||dS)Nr_rFr rgrir rns rrz0TestExport_P521.test_export_openssh_uncompressedrrctdd}tj|}|dd}t |t |ksJ||tj|dS)Nr_rr Trirrs rrz.TestExport_P521.test_export_openssh_compressed%rrc|jdddt}|jdddt}||||jdddt}|jdddt}|||dSrrrs rrzTestExport_P521.test_prng-rrc|jdddt}|jdddt}|||dSrrrs rrz.TestExport_P521.test_byte_or_string_passphraseErrcv|t|jjd|jddd|t|jjdd|t|jjdddd |t|jjdd |t|jjdd d|t|jjdd d |t|jjdddSrrrs rrz"TestExport_P521.test_error_params1Prrc&d}d}tj|}t|jjdz}||dtj|}t|jjdz}||ddS)Nal-----BEGIN EC PRIVATE KEY----- MIHcAgEBBEIAnm1CEjVjvNfXEN730p+D6su5l+mOztdc5XmTEoti+s2R4GQ4mAv3 0zYLvyklvOHw0+yy8d0cyGEJGb8T3ZVKmg2gBwYFK4EEACOhgYkDgYYABAHzjTI1 ckxQ3Togi0LAxiG0PucdBBBs5oIy3df95xv6SInp70z+4qQ2EltEmdNMssH8eOrl M5CYdZ6nbcHMVaJUvQEzTrYxvFjOgJiOd+E9eBWbLkbMNqsh1UKVO6HbMbW0ohCI uGxO8tM6r3w89/qzpG2SvFM/fvv3mIR30wSZDD84qA== -----END EC PRIVATE KEY-----al-----BEGIN EC PRIVATE KEY----- MIHcAgEBBEIB84OfhJluLBRLn3+cC/RQ37C2SfQVP/t0gQK2tCsTf5avRcWYRrOJ PmX9lNnkC0Hobd75QFRmdxrB0Wd1/M4jZOWgBwYFK4EEACOhgYkDgYYABAAMZcdJ 1YLCGHt3bHCEzdidVy6+brlJIbv1aQ9fPQLF7WKNv4c8w3H8d5a2+SDZilBOsk5c 6cNJDMz2ExWQvxl4CwDJtJGt1+LHVKFGy73NANqVxMbRu+2F8lOxkNp/ziFTbVyV vv6oYkMIIi7r5oQWAiQDrR2mlrrFDL9V7GH/r8SWQw== -----END EC PRIVATE KEY-----ri8iCrrs rrz%TestExport_P521.test_compressed_curveos   ~d##DKME)** '''~d##DKME)** '''''rrrs@rr6r6jscCCCCC , , ,GGG))) ) ) ) , , , , , ,444$ , , ,GGG , , ,444& , , ,444* , , ,GGG---0 - - -;;;>(((((((rr6cfeZdZfdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZxZS)TestImport_Ed25519c~tt|j|i|t\|_|_dSr)rrMrrlrrrs rrzTestImport_Ed25519.__init__?0 $''0$A&AAA,C,E,E)$///rc@td}tj|}||j|tj|d}||j|tj|}||j|dS)Necc_ed25519_public.derrrs rrz)TestImport_Ed25519.test_import_public_ders566.x88 #...oh-- #...nX&& #.....rctd}tj|d}||j|tj|}||j|dS)Necc_ed25519_private.derrrs rtest_import_pkcs8_derz(TestImport_Ed25519.test_import_pkcs8_dersh677oh-- )3///nX&& )3/////rctd}tj|d}||j|tj|d}||j|dS)Nzecc_ed25519_private_p8.derrrrs rrz8TestImport_Ed25519.test_import_private_pkcs8_encrypted_1sj9::oh11 )3///nXx00 )3/////rctd}tj|d}||j|dS)Nzecc_ed25519_private_p8.pemrrrs rrz8TestImport_Ed25519.test_import_private_pkcs8_encrypted_2s@9::nXx00 )3/////rctd}tj|d}||j|tj|}||j|dS)Nzecc_ed25519_x509.derrrs rrz'TestImport_Ed25519.test_import_x509_dersf344oh-- #...nX&& #.....rctd}tj|}||j|dS)Necc_ed25519_public.pemrrs rrz)TestImport_Ed25519.test_import_public_pems=566nX&& #.....rctd}tj|}||j|dS)Necc_ed25519_private.pemrrs rrz*TestImport_Ed25519.test_import_private_pems>677nX&& )3/////rcdD]}td|z}tj|d}||j|tjt |d}||j|dS)Nrrrrzecc_ed25519_private_enc_%s.pemrrrrs rrz4TestImport_Ed25519.test_import_private_pem_encrypteds8 4 4D !AD!HIIH.844C   T-s 3 3 3.x)<>(22 COO%%&&&nX&& COO%%&&&&&rcLtd}tj|}dS)Nzecc_ed25519_private_openssh.pemrrs rr"z4TestImport_Ed25519.test_import_openssh_private_clears#>??nX&&rcNtd}tj|d}dS)Nz#ecc_ed25519_private_openssh_pwd.pemr%rrs rr&z7TestImport_Ed25519.test_import_openssh_private_passwords%BCCnX{33r)rrrrrrTrrrrrrrrr"r&rrs@rrMrMsFFFFF / / /000000000 ////// 000 444/// ''''''4444444rrMcfeZdZfdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZxZS)TestExport_Ed25519c~tt|j|i|t\|_|_dSr)rrgrrlrrrs rrzTestExport_Ed25519.__init__rOrcJtd}|jd}||||jd}||||jdd}|||dS)NrQTrfrgFrirkrns rtest_export_public_derz)TestExport_Ed25519.test_export_public_ders566/>>tDD 7+++/,,E,:: 7+++/,,EE,JJ 7+++++rcT|t|jjddSNr{rgrrrrmrs rtest_export_public_sec1z*TestExport_Ed25519.test_export_public_sec1( *do&@PPPPPrc4td}|j}||||jd}||||t |jjdddS)NrSrfrgFrr0rrrrmrrrns rrz2TestExport_Ed25519.test_export_private_pkcs8_clear s677"0022 7+++"--U-;; 7+++ *d&6&A!&%  9 9 9 9 9rc|jdd}|ttj|dt j|d}||j||jddd}t j|d}||j|dSrrrs rrz6TestExport_Ed25519.test_export_private_pkcs8_encrypted r(rctdd}|jd}|||dS)NrYrrrgr0rrrmrr key_file_refrs rtest_export_public_pemz)TestExport_Ed25519.test_export_public_pem" s^ !94@@FFHH ?--U-;;AACC x00000rctdd}|jd}|||dS)Nr[rrrgr0rrrmrrns rrz0TestExport_Ed25519.test_export_private_pem_clear' s_6==CCEE"--U-;;AACC 7+++++rc|jddd}|ttj|d|vsJt j|d}||j|dSNrrrrrrrrmrrr rrrs rrz4TestExport_Ed25519.test_export_private_pem_encrypted, "--U9B:\.^^ *cng>>>&'1111.(33 )733333rctdd}tj|}d|ddd}|d}||||d}|||dS)Nrarr2rFr rg) r0r rr#splitrrrrm)rrriros rtest_export_opensshz&TestExport_Ed25519.test_export_openssh9 s=tDD^H-- 88HNN3//344,,U33 7==??333''y'99 7==??33333rc|jd}||tddS)Nr;rgs@bc85b8cf585d20a4de47e84d1cb6183f63d9ba96223fcbc886e363ffdea20cffrrmrrrros rtest_export_rawz"TestExport_Ed25519.test_export_rawD s?/,,E,:: ),o"p"pqqqqqrc|jdddt}|jdddt}|||dSNrrrrrrs rrzTestExport_Ed25519.test_prngH #..e5=5W3A3C3C/EE#..e5=5W3A3C3C/EE 8,,,,,rc|jdddt}|jdddt}|||dSNrrrrrrrs rrz1TestExport_Ed25519.test_byte_or_string_passphraseT #..e5=5W3A3C3C/EE#..e5>5W3A3C3C/EE 8,,,,,rc|t|jjd|t|jjdd|t|jjddd|t|jjddd |t|jjd ddS Nrrgrrrr3Frrrr rrrrmrs rrz%TestExport_Ed25519.test_error_params1_  *d&6&A%PPP *d&6&A%19  ; ; ; *d&6&A%13u  F F F *d&6&A%131S  U U U *d&6&A)19  ; ; ; ; ;rrrrrrjrnrrrwrrrrrrrrrs@rrgrgsFFFFF , , ,QQQ 9 9 9444$111 ,,, 4 4 4 4 4 4rrr - - - - - -;;;;;;;rrgcTeZdZfdZdZdZdZdZdZdZ dZ d Z d Z xZ S) TestImport_Ed448c~tt|j|i|t\|_|_dSr)rrrrprrrs rrzTestImport_Ed448.__init__u ?.%%.????,A,C,C)$///rc@td}tj|}||j|tj|d}||j|tj|}||j|dS)Necc_ed448_public.derrrs rrz'TestImport_Ed448.test_import_public_dery s344.x88 #...oh-- #...nX&& #.....rctd}tj|d}||j|tj|}||j|dS)Necc_ed448_private.derrrs rrTz&TestImport_Ed448.test_import_pkcs8_der sh455oh-- )3///nX&& )3/////rctd}tj|d}||j|tj|d}||j|dS)Nzecc_ed448_private_p8.derrrrs rrz6TestImport_Ed448.test_import_private_pkcs8_encrypted_1 sj788oh11 )3///nXx00 )3/////rctd}tj|d}||j|dS)Nzecc_ed448_private_p8.pemrrrs rrz6TestImport_Ed448.test_import_private_pkcs8_encrypted_2 s@788nXx00 )3/////rctd}tj|d}||j|tj|}||j|dS)Nzecc_ed448_x509.derrrs rrz%TestImport_Ed448.test_import_x509_der sf122oh-- #...nX&& #.....rctd}tj|}||j|dS)Necc_ed448_public.pemrrs rrz'TestImport_Ed448.test_import_public_pem r_rctd}tj|}||j|dS)Necc_ed448_private.pemrrs rrz(TestImport_Ed448.test_import_private_pem s>455nX&& )3/////rcdD]}td|z}tj|d}||j|tjt |d}||j|dS)Nr]zecc_ed448_private_enc_%s.pemrrrrs rrz2TestImport_Ed448.test_import_private_pem_encrypted s8 4 4D !?$!FGGH.844C   T-s 3 3 3.x)<>tDD 7+++/,,E,:: 7+++/,,EE,JJ 7+++++rcT|t|jjddSrlrmrs rrnz(TestExport_Ed448.test_export_public_sec1 rorc4td}|j}||||jd}||||t |jjdddS)NrrfrgFrrqrns rrz0TestExport_Ed448.test_export_private_pkcs8_clear s455"0022 7+++"--U-;; 7+++ *d&6&A!&%  9 9 9 9 9rc|jdd}|ttj|dt j|d}||j||jddd}t j|d}||j|dSrrrs rrz4TestExport_Ed448.test_export_private_pkcs8_encrypted r(rctdd}|jd}|||dS)Nrrrrgrtrus rrwz'TestExport_Ed448.test_export_public_pem s^ !7>>DDFF ?--U-;;AACC x00000rctdd}|jd}|||dS)Nrrrrgryrns rrz.TestExport_Ed448.test_export_private_pem_clear s_4d;;AACC"--U-;;AACC 7+++++rc|jddd}|ttj|d|vsJt j|d}||j|dSr{r|rs rrz2TestExport_Ed448.test_export_private_pem_encrypted r}rcT|t|jjddS)Nr rgrmrs rrz$TestExport_Ed448.test_export_openssh s( *do&@SSSSSrc|jd}||tddS)Nr;rgsr899014ddc0a0e1260cfc1085afdf952019e9fd63372e3e366e26dad32b176624884330a14617237e3081febd9d1a15069e7499433d2f55dd80rrs rrz TestExport_Ed448.test_export_raw sW/,,E,:: )-b#c#c d d d d drc|jdddt}|jdddt}|||dSrrrs rrzTestExport_Ed448.test_prng rrc|jdddt}|jdddt}|||dSrrrs rrz/TestExport_Ed448.test_byte_or_string_passphrase# rrc|t|jjd|t|jjdd|t|jjddd|t|jjddd |t|jjd ddSrrrs rrz#TestExport_Ed448.test_error_params1. rrrrs@rrr sDDDDD , , ,QQQ 9 9 9444$111 ,,, 4 4 4TTTddd - - - - - -;;;;;;;rrcg}|ttz } |ttz }|ttz }|ttz }|tt z }|tt z }|ttz }|ttz }|ttz }|ttz }|ttz }|ttz }|ttz }|ttz }|ttz }n#t $rYnwxYw|Sr)rr}rrrr)rGrMrrcrrrr6rgrr)configtestss r get_testsrB sE E _Z ( ((E  111 111 111 111 111 !3444 !1222 111 111 111 111 111 !3444 !1222 %     LsEE E+*E+__main__cBtjtSr)unittest TestSuiterrrrr\ sH&y{{33rsuite) defaultTest)r)9rrr&rbinasciirCrypto.SelfTest.st_commonrCrypto.Util.py3compatrrrCrypto.Util.asn1rr Crypto.Util.numberr Crypto.Hashr Crypto.PublicKeyr r!r ImportErrorrrr0r8rOrSrXr^rcrlrprtr{TestCaser}rrrr)rGrcrrrr6rMrgrrrrrmainrrrrs\> 555555@@@@@@@@@@66666666,,,,,, #$$$$!###"#        4CCC V V V V V V V V V V V V V V V######/// @ @ @ @ @" @ @ @ k/k/k/k/k/h'k/k/k/\k/k/k/k/k/h'k/k/k/\I'I'I'I'I'h'I'I'I'XD'D'D'D'D'h'D'D'D'ND'D'D'D'D'h'D'D'D'N{({({({({(h'{({({(|{({({({({(h'{({({(|T(T(T(T(T(h'T(T(T(nY(Y(Y(Y(Y(h'Y(Y(Y(xa(a(a(a(a(h'a(a(a(H \4\4\4\4\4*\4\4\4~C;C;C;C;C;*C;C;C;LM/M/M/M/M/x(M/M/M/`|;|;|;|;|;x(|;|;|;~2 z 3 3EHMg&&&&&&sA AA