§
    qŠtjˆd ã                   óP  — d dl mZmZmZ 	 d dlZn# e$ r d dlZY nw xY w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mZ d dlZd dlmZ d dlmZmZ d dlmZ d dlmZ ddlmZmZ dd	lmZmZmZ dd
l m!Z! ddl!m"Z"m#Z#m$Z$m%Z%m&Z& ddl!m'Z'm(Z(m)Z) ddl!m*Z*m+Z+m,Z, ddl-m.Z.m/Z/ ddl-m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZIm-Z- ddlJmKZKmLZLmMZMmNZN ddlOmPZP ddl mQZQ ddl mRZR ddl mJZJ  G d„ deS¦  «        ZTi ZUdejV        v rdeUd<   d„ ZW G d„ dejX        ¦  «        ZYe
jZ         [                    dd„  e\d¦  «        D ¦   «         ¦  «        d „ ¦   «         Z]g Z^e-D ]FZ_d!D ]AZ`e^ a                     e
jb        e_e`d" c                    e_jd        e`¦  «        ¬#¦  «        ¦  «         ŒBŒGe
jZ         [                    d$e^¦  «        d%„ ¦   «         ZedejV        v re4e:gZ^ne-Z^e
jZ         [                    d&e^¦  «        d'„ ¦   «         Zfe
jZ        jg         G d(„ d)ejX        ¦  «        ¦   «         Zh G d*„ d+ejX        ¦  «        Zi G d,„ d-ejX        ¦  «        Zj G d.„ d/ejX        ¦  «        Zk G d0„ d1ejX        ¦  «        Zl G d2„ d3ejX        ¦  «        Zm G d4„ d5em¦  «        Zn G d6„ d7em¦  «        Zoe
jZ         [                    d8 e
jb        d9d:d;d<d=ejp        d>d?e6d@¬#¦
  «
         e
jb        dAdBdCdDd=ejq        dEdFe7dG¬#¦
  «
         e
jb        dHdIdJdKd=ejr        dLdMe8dN¬#¦
  «
        g¦  «        dO„ ¦   «         ZsdS )Pé    )Úwith_statementÚdivisionÚprint_functionN)ÚhexlifyÚ	unhexlify)Úpartial)ÚgivenÚsettings)Úbinary_typeé   )Ú
SigningKeyÚVerifyingKey)ÚBadSignatureErrorÚMalformedPointErrorÚBadDigestError)Úutil)Úsigencode_derÚsigencode_stringsÚsigencode_strings_canonizeÚsigencode_string_canonizeÚsigencode_der_canonize)Úsigdecode_derÚsigdecode_stringsÚsigdecode_string)Únumber_to_stringÚencoded_oid_ecPublicKeyÚMalformedSignature)ÚCurveÚUnknownCurveError)Ú	SECP112r1Ú	SECP112r2Ú	SECP128r1Ú	SECP160r1ÚNIST192pÚNIST224pÚNIST256pÚNIST384pÚNIST521pÚ	SECP256k1ÚBRAINPOOLP160r1ÚBRAINPOOLP192r1ÚBRAINPOOLP224r1ÚBRAINPOOLP256r1ÚBRAINPOOLP320r1ÚBRAINPOOLP384r1ÚBRAINPOOLP512r1ÚBRAINPOOLP160t1ÚBRAINPOOLP192t1ÚBRAINPOOLP224t1ÚBRAINPOOLP256t1ÚBRAINPOOLP320t1ÚBRAINPOOLP384t1ÚBRAINPOOLP512t1ÚEd25519ÚEd448Úcurves)Úcurve_brainpoolp224r1Úcurve_brainpoolp256r1Úcurve_brainpoolp384r1Úcurve_brainpoolp512r1)ÚPoint)Úder)Úrfc6979)Úecdsac                   ó   — e Zd ZdS )ÚSubprocessErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úP/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/ecdsa/test_pyecdsa.pyrD   rD   J   s   € € € € € Ø€DrI   rD   z--fasté   Úmax_examplesc           
      ó4  — d}t          j        |g|                      ¦   «         z   t           j        t           j        ¬¦  «        }|                     ¦   «         \  }}|j        dk    r t          d|›d| ›d|j        ›d|›�¦  «        ‚|                     ¦   «         S )NÚopenssl)ÚstdoutÚstderrr   zcmd 'ú z' failed: rc=z, stdout/err was )	Ú
subprocessÚPopenÚsplitÚPIPEÚSTDOUTÚcommunicateÚ
returncoderD   Údecode)ÚcmdÚOPENSSLÚprO   Úignoreds        rJ   Úrun_opensslr^   U   s�   € Ø€GÝÔØ	ˆ	�C—I’I‘K”KÑÝŒÝÔ ð	ñ 	ô 	€Að
 —m’m‘o”o�O€FˆGØ„|�qÒÐÝˆoàˆwˆw˜˜˜˜Qœ\˜\˜\¨6¨6ð3ñ
ô 
ð 	
ð �=Š=‰?Œ?ÐrI   c                   óš  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,d+„ Z-d,„ Z.d-„ Z/d.„ Z0d/„ Z1d0„ Z2d1„ Z3d2„ Z4d3„ Z5d4„ Z6d5„ Z7d6„ Z8d7„ Z9d8„ Z:d9„ Z;d:„ Z<d;„ Z=d<„ Z>d=„ Z?d>„ Z@d?„ ZAd@„ ZBdA„ ZCdB„ ZDdCS )DÚECDSAc                 ó¼  — t          j        ¦   «         }|                     ¦   «         }d}|                     |¦  «        }|                      |                     ||¦  «        ¦  «         |                      t          |j        ||dz   ¦  «         t          j	        | 
                    ¦   «         ¦  «        }|                      |                     ||¦  «        ¦  «         d S )Nó   blahblahs   bad)r   ÚgenerateÚget_verifying_keyÚsignÚ
assertTrueÚverifyÚassertRaisesr   r   Úfrom_stringÚ	to_string)ÚselfÚprivÚpubÚdataÚsigÚpub2s         rJ   Ú
test_basiczECDSA.test_basicf   s´   € ÝÔ"Ñ$Ô$ˆØ×$Ò$Ñ&Ô&ˆàˆØ�iŠi˜‰oŒoˆà�Š˜Ÿ
š
 3¨Ñ-Ô-Ñ.Ô.Ð.Ø×ÒÕ+¨S¬Z¸¸dÀV¹mÑLÔLÐLåÔ'¨¯ª©¬Ñ8Ô8ˆØ�Š˜Ÿš C¨Ñ.Ô.Ñ/Ô/Ð/Ð/Ð/rI   c                 óH  — d}t          dd¦  «        }t          j        |t          t          j        ¦  «        }|                     ¦   «         }t          j        t          j	         
                    ¦   «         |t          j        t	          j        |¦  «                             ¦   «         ¦  «        }|                     ||¬¦  «        }|                      |                     ||¦  «        ¦  «         |                     ||¬¦  «        }|                      |                     ||¦  «        ¦  «         |                     |t          j        ¦  «        }|                      |                     ||¦  «        ¦  «         |                      ||¦  «         |                      ||¦  «         d S )Nrb   Ú 9d0219792467d7d37b4d43298a7d0c05é   )Úk)Úintr   Úfrom_secret_exponentr)   ÚhashlibÚsha256rd   rA   Ú
generate_kÚ	generatorÚorderÚdigestre   rf   rg   Úsign_deterministicÚassertEqual)	rk   rn   Úsecexprl   rm   ru   Úsig1Úsig2Úsig3s	            rJ   Útest_deterministiczECDSA.test_deterministics   s_  € ØˆÝÐ7¸Ñ<Ô<ˆåÔ.Ø•I�wœ~ñ
ô 
ˆð ×$Ò$Ñ&Ô&ˆåÔÝÔ×%Ò%Ñ'Ô'ØÝŒNÝŒN˜4Ñ Ô ×'Ò'Ñ)Ô)ñ	
ô 
ˆð �yŠy˜ ˆyÑ#Ô#ˆØ�Š˜Ÿ
š
 4¨Ñ.Ô.Ñ/Ô/Ð/à�yŠy˜ ˆyÑ#Ô#ˆØ�Š˜Ÿ
š
 4¨Ñ.Ô.Ñ/Ô/Ð/à×&Ò& t­W¬^Ñ<Ô<ˆØ�Š˜Ÿ
š
 4¨Ñ.Ô.Ñ/Ô/Ð/à×Ò˜˜tÑ$Ô$Ð$Ø×Ò˜˜tÑ$Ô$Ð$Ð$Ð$rI   c                 ó†   — |                       t          t          ¦  «         |                       t          t          ¦  «         d S ©N)rh   Ú	TypeErrorr   r   ©rk   s    rJ   Útest_bad_usagezECDSA.test_bad_usage�   s4   € à×Ò�)¥ZÑ0Ô0Ð0Ø×Ò�)¥\Ñ2Ô2Ð2Ð2Ð2rI   c                 óP  — t           }t          j        ¦   «         }|                     ¦   «         }|                      t          |                     ¦   «         ¦  «        |j        ¦  «         |                     d¦  «        }|                      t          |¦  «        |j	        ¦  «         d S )Nó   data)
r$   r   rc   rd   r   Úlenrj   Úverifying_key_lengthre   Úsignature_length)rk   Údefaultrl   rm   ro   s        rJ   Útest_lengths_defaultzECDSA.test_lengths_default”   s…   € ÝˆÝÔ"Ñ$Ô$ˆØ×$Ò$Ñ&Ô&ˆØ×Ò�˜SŸ]š]™_œ_Ñ-Ô-¨wÔ/KÑLÔLÐLØ�iŠi˜Ñ Ô ˆØ×Ò�˜S™œ 7Ô#;Ñ<Ô<Ð<Ð<Ð<rI   c                 ó´  — d}t           }t          j        ||j        ¦  «        }t          j        ||j        ¦  «        }|                      ||¦  «         t          j        ||¦  «        }t          j        ||¦  «        }|                      t          |                     ¦   «         ¦  «        t          |                     ¦   «         ¦  «        ¦  «         |                      | 	                    ¦   «         | 	                    ¦   «         ¦  «         | 
                    ¦   «         }| 
                    ¦   «         }d}	|                     |	¦  «        }
|                     |	¦  «        }|                      |                     |
|	¦  «        ¦  «         |                      |                     |
|	¦  «        ¦  «         |                      |                     ||	¦  «        ¦  «         |                      |                     ||	¦  «        ¦  «         |                      t          |                     ¦   «         ¦  «        t          |                     ¦   «         ¦  «        ¦  «         d S )Ns   secretr‹   )r$   r   Ú randrange_from_seed__trytryagainr|   r   r   rw   r   rj   Úto_pemrd   re   rf   rg   )rk   ÚseedÚcurveÚsecexp1Úsecexp2Úpriv1Úpriv2Úpub1rp   rn   r�   r‚   s               rJ   Útest_serializezECDSA.test_serializeœ   sà  € ØˆÝˆÝÔ7¸¸e¼kÑJÔJˆÝÔ7¸¸e¼kÑJÔJˆØ×Ò˜ 'Ñ*Ô*Ð*ÝÔ/°¸Ñ?Ô?ˆÝÔ/°¸Ñ?Ô?ˆØ×ÒÝ�E—O’OÑ%Ô%Ñ&Ô&­°·²Ñ0AÔ0AÑ(BÔ(Bñ	
ô 	
ð 	
ð 	×Ò˜Ÿš™œ¨¯ª©¬Ñ8Ô8Ð8Ø×&Ò&Ñ(Ô(ˆØ×&Ò&Ñ(Ô(ˆØˆØ�zŠz˜$ÑÔˆØ�zŠz˜$ÑÔˆØ�Š˜Ÿš D¨$Ñ/Ô/Ñ0Ô0Ð0Ø�Š˜Ÿš D¨$Ñ/Ô/Ñ0Ô0Ð0Ø�Š˜Ÿš D¨$Ñ/Ô/Ñ0Ô0Ð0Ø�Š˜Ÿš D¨$Ñ/Ô/Ñ0Ô0Ð0Ø×Ò� §¢Ñ!1Ô!1Ñ2Ô2µG¸D¿NºNÑ<LÔ<LÑ4MÔ4MÑNÔNÐNÐNÐNrI   c                 ó  ‡— dŠˆfd„}t          j        |¬¦  «        }t          j        |¬¦  «        }|                      t          |                     ¦   «                              ¦   «         ¦  «        t          |                     ¦   «                              ¦   «         ¦  «        ¦  «         |                     d|¬¦  «        }|                     d|¬¦  «        }|                      t          |¦  «        t          |¦  «        ¦  «         d S )Nó=   all the entropy in the entire world, compressed into one linec                 ó   •— ‰d | …         S r†   rH   ©ÚnumbytesÚss    €rJ   Únot_much_entropyz.ECDSA.test_nonrandom.<locals>.not_much_entropy¶   ó   ø€ Ø�Y�h�Y”<ÐrI   ©Úentropyr‹   )r   rc   r   r   rd   rj   re   )rk   r¢   r˜   r™   r�   r‚   r¡   s         @rJ   Útest_nonrandomzECDSA.test_nonrandom³   sÿ   ø€ ØLˆð	 ð 	 ð 	 ð 	 ð 	 õ Ô#Ð,<Ð=Ñ=Ô=ˆÝÔ#Ð,<Ð=Ñ=Ô=ˆØ×ÒÝ�E×+Ò+Ñ-Ô-×7Ò7Ñ9Ô9Ñ:Ô:Ý�E×+Ò+Ñ-Ô-×7Ò7Ñ9Ô9Ñ:Ô:ñ	
ô 	
ð 	
ð �zŠz˜'Ð+;ˆzÑ<Ô<ˆØ�zŠz˜'Ð+;ˆzÑ<Ô<ˆØ×Ò� ™œ­°©¬Ñ6Ô6Ð6Ð6Ð6rI   c                 óÂ   — |                       |j        j        |j        j        ¦  «         |                       |j        j        j        |j        j        j        ¦  «         d S r†   )r   ÚprivkeyÚsecret_multiplierÚ
public_keyr{   )rk   r˜   r™   s      rJ   ÚassertTruePrivkeysEqualzECDSA.assertTruePrivkeysEqualÈ   sc   € Ø×ÒØŒMÔ+¨U¬]Ô-Lñ	
ô 	
ð 	
ð 	×ÒØŒMÔ$Ô.ØŒMÔ$Ô.ñ	
ô 	
ð 	
ð 	
ð 	
rI   c                 ób  ‡— dŠˆfd„}t          j        ¦   «         }|                      |j        t          j        ¦  «         t          j        t
          ¬¦  «        }|                      |j        t
          j        ¦  «         t          j        |¬¦  «        }|                      |j        t          j        ¦  «         t          j        |¬¦  «        }|                      |j        t          j        ¦  «         |                      ||¦  «         t          j        d¬¦  «        }|                      |j        t          j        ¦  «         t          j        d¬¦  «        }|                      ||¦  «         t          j        dt
          ¬¦  «        }|                      |j        t
          j        ¦  «         d S )	Nr�   c                 ó   •— ‰d | …         S r†   rH   rŸ   s    €rJ   r¢   z5ECDSA.test_privkey_creation.<locals>.not_much_entropyÔ   r£   rI   ©r•   r¤   é   )r€   é   )r€   r•   )r   rc   r   Úbaselenr$   r%   r«   rw   )rk   r¢   r˜   r™   r¡   s       @rJ   Útest_privkey_creationzECDSA.test_privkey_creationÑ   s{  ø€ ØLˆð	 ð 	 ð 	 ð 	 ð 	 õ Ô#Ñ%Ô%ˆØ×Ò˜œ­Ô(8Ñ9Ô9Ð9åÔ#­(Ð3Ñ3Ô3ˆØ×Ò˜œ­Ô(8Ñ9Ô9Ð9åÔ#Ð,<Ð=Ñ=Ô=ˆØ×Ò˜œ­Ô(8Ñ9Ô9Ð9ÝÔ#Ð,<Ð=Ñ=Ô=ˆØ×Ò˜œ­Ô(8Ñ9Ô9Ð9Ø×$Ò$ U¨EÑ2Ô2Ð2åÔ/°qÐ9Ñ9Ô9ˆØ×Ò˜œ­Ô(8Ñ9Ô9Ð9ÝÔ/°qÐ9Ñ9Ô9ˆØ×$Ò$ U¨EÑ2Ô2Ð2åÔ/°qÅÐIÑIÔIˆØ×Ò˜œ­Ô(8Ñ9Ô9Ð9Ð9Ð9rI   c                 ó>  — t          j        ¦   «         }|                     ¦   «         }|                      t	          |¦  «        t
          ¦  «         |                      t          |¦  «        t          j        ¦  «         t          j	        |¦  «        }|  
                    ||¦  «         |                     ¦   «         }|                      t	          |¦  «        t
          ¦  «         |                      |                     d¦  «        ¦  «         |                      |                     ¦   «                              d¦  «        ¦  «         t          j        |¦  «        }|  
                    ||¦  «         |                     ¦   «         }|                      t	          |¦  «        t
          ¦  «         t          j        |¦  «        }|  
                    ||¦  «         t          j        t&          ¬¦  «        }|                     ¦   «         }|                      t	          |¦  «        t
          ¦  «         |                      |                     d¦  «        ¦  «         |                      |                     ¦   «                              d¦  «        ¦  «         t          j        |¦  «        }|  
                    ||¦  «         |                     ¦   «         }|                      t	          |¦  «        t
          ¦  «         t          j        |¦  «        }|  
                    ||¦  «         d S )Nó   -----BEGIN EC PRIVATE KEY-----ó   -----END EC PRIVATE KEY-----r®   )r   rc   rj   r   Útyper   rŒ   r$   r±   ri   r«   r“   rf   Ú
startswithÚstripÚendswithÚfrom_pemÚto_derÚfrom_derr&   ©rk   r˜   Ús1r™   s       rJ   Útest_privkey_stringszECDSA.test_privkey_stringsë   se  € ÝÔ#Ñ%Ô%ˆØ�_Š_ÑÔˆØ×Ò�˜b™œ¥;Ñ/Ô/Ð/Ø×Ò�˜R™œ¥(Ô"2Ñ3Ô3Ð3ÝÔ& rÑ*Ô*ˆØ×$Ò$ U¨EÑ2Ô2Ð2à�\Š\‰^Œ^ˆØ×Ò�˜b™œ¥;Ñ/Ô/Ð/Ø�Š˜ŸšÐ&GÑHÔHÑIÔIÐIØ�Š˜Ÿš™
œ
×+Ò+Ð,KÑLÔLÑMÔMÐMÝÔ# BÑ'Ô'ˆØ×$Ò$ U¨EÑ2Ô2Ð2à�\Š\‰^Œ^ˆØ×Ò�˜b™œ¥;Ñ/Ô/Ð/ÝÔ# BÑ'Ô'ˆØ×$Ò$ U¨EÑ2Ô2Ð2åÔ#­(Ð3Ñ3Ô3ˆØ�\Š\‰^Œ^ˆØ×Ò�˜b™œ¥;Ñ/Ô/Ð/Ø�Š˜ŸšÐ&GÑHÔHÑIÔIÐIØ�Š˜Ÿš™
œ
×+Ò+Ð,KÑLÔLÑMÔMÐMÝÔ# BÑ'Ô'ˆØ×$Ò$ U¨EÑ2Ô2Ð2à�\Š\‰^Œ^ˆØ×Ò�˜b™œ¥;Ñ/Ô/Ð/ÝÔ# BÑ'Ô'ˆØ×$Ò$ U¨EÑ2Ô2Ð2Ð2Ð2rI   c                 ó–  — t          j        t          ¬¦  «        }|                     ¦   «         }|                      t          |¦  «        t          ¦  «         |                      |                     d¦  «        ¦  «         |                      | 	                    ¦   «          
                    d¦  «        ¦  «         t          j        |¦  «        }|                      ||¦  «         |                     ¦   «         }|                      t          |¦  «        t          ¦  «         t          j        |¦  «        }|                      ||¦  «         d S )Nr®   r´   rµ   )r   rc   r0   r“   r   r¶   r   rf   r·   r¸   r¹   rº   r«   r»   r¼   r½   s       rJ   Útest_privkey_strings_brainpoolz$ECDSA.test_privkey_strings_brainpool  s  € ÝÔ#­/Ð:Ñ:Ô:ˆØ�\Š\‰^Œ^ˆØ×Ò�˜b™œ¥;Ñ/Ô/Ð/Ø�Š˜ŸšÐ&GÑHÔHÑIÔIÐIØ�Š˜Ÿš™
œ
×+Ò+Ð,KÑLÔLÑMÔMÐMÝÔ# BÑ'Ô'ˆØ×$Ò$ U¨EÑ2Ô2Ð2à�\Š\‰^Œ^ˆØ×Ò�˜b™œ¥;Ñ/Ô/Ð/ÝÔ# BÑ'Ô'ˆØ×$Ò$ U¨EÑ2Ô2Ð2Ð2Ð2rI   c                 óî   — |                       |j        j        |j        j        ¦  «         |                       |j        j        |j        j        ¦  «         |                       |j        |j        ¦  «         d S r†   )r   ÚpubkeyÚpointr{   r•   )rk   rš   rp   s      rJ   ÚassertTruePubkeysEqualzECDSA.assertTruePubkeysEqual  sb   € Ø×Ò˜œÔ*¨D¬KÔ,=Ñ>Ô>Ð>Ø×Ò˜œÔ.°´Ô0EÑFÔFÐFØ×Ò˜œ T¤ZÑ0Ô0Ð0Ð0Ð0rI   c                 óê  — t          j        ¦   «         }|                     ¦   «         }|                     ¦   «         }|                      t          |¦  «        t          ¦  «         |                      t          |¦  «        t          j	        ¦  «         t          j        |¦  «        }|                      ||¦  «         t          j        t          ¬¦  «        }|                     ¦   «         }|                     ¦   «         }|                      t          |¦  «        t          ¦  «         |                      t          |¦  «        t          j	        ¦  «         t          j        |t          ¬¦  «        }|                      ||¦  «         |                     ¦   «         }|                      t          |¦  «        t          ¦  «         t          j        |¦  «        }|                      ||¦  «         |                      t"          j        t          j        |dz   ¦  «         t          j        |¦  «        } G d„ d¦  «        } G d„ d¦  «        }t'          d |¦   «          |¦   «         dd ¦  «        }	|	|_        |                     ¦   «         }
|                      t*          t          j        |
¦  «         |                     ¦   «         }|                      t          |¦  «        t          ¦  «         |                      |                     d	¦  «        |¦  «         |                      |                     ¦   «                              d
¦  «        |¦  «         t          j        |¦  «        }|                      ||¦  «         d S )Nr®   ó   junkc                   ó   — e Zd Zd„ ZdS )ú0ECDSA.test_pubkey_strings.<locals>.FakeGeneratorc                 ó   — dS )NéÍ[rH   rˆ   s    rJ   r|   z6ECDSA.test_pubkey_strings.<locals>.FakeGenerator.order;  s   € Ø �yrI   N)rE   rF   rG   r|   rH   rI   rJ   ÚFakeGeneratorrÉ   :  s#   € € € € € ð!ð !ð !ð !ð !rI   rÌ   c                   ó   — e Zd Zd„ ZdS )ú.ECDSA.test_pubkey_strings.<locals>.FakeCurveFpc                 ó    — t          d¦  «        S )NÚM65255345290392407050209505469627313404541085228058844382513856749047873406763)rv   rˆ   s    rJ   r\   z0ECDSA.test_pubkey_strings.<locals>.FakeCurveFp.p?  s   € Ýð?ñô ð rI   N)rE   rF   rG   r\   rH   rI   rJ   ÚFakeCurveFprÎ   >  s#   € € € € € ðð ð ð ð rI   rÑ   Úunknown)r   rK   r¯   r°   é   é   s   -----BEGIN PUBLIC KEY-----s   -----END PUBLIC KEY-----)r   rc   rd   rj   r   r¶   r   rŒ   r$   r�   r   ri   rÅ   r&   r»   r¼   rh   r@   ÚUnexpectedDERr   r•   r   r“   rf   r·   r¸   r¹   rº   )rk   r˜   rš   r¾   rp   Úpub1_derÚbadpubrÌ   rÑ   ÚbadcurveÚbadderÚpems               rJ   Útest_pubkey_stringszECDSA.test_pubkey_strings  s  € ÝÔ#Ñ%Ô%ˆØ×&Ò&Ñ(Ô(ˆØ�^Š^ÑÔˆØ×Ò�˜b™œ¥;Ñ/Ô/Ð/Ø×Ò�˜R™œ¥(Ô"?Ñ@Ô@Ð@ÝÔ'¨Ñ+Ô+ˆØ×#Ò# D¨$Ñ/Ô/Ð/åÔ#­(Ð3Ñ3Ô3ˆØ×&Ò&Ñ(Ô(ˆØ�^Š^ÑÔˆØ×Ò�˜b™œ¥;Ñ/Ô/Ð/Ø×Ò�˜R™œ¥(Ô"?Ñ@Ô@Ð@ÝÔ'¨µ(Ð;Ñ;Ô;ˆØ×#Ò# D¨$Ñ/Ô/Ð/à—;’;‘=”=ˆØ×Ò�˜h™œ­Ñ5Ô5Ð5ÝÔ$ XÑ.Ô.ˆØ×#Ò# D¨$Ñ/Ô/Ð/à×ÒÝÔ�|Ô4°hÀÑ6Hñ	
ô 	
ð 	
õ Ô& xÑ0Ô0ˆð	!ð 	!ð 	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	õ Ø�{�{‘}”} m m¡o¤oÐ7IÈ4ñ
ô 
ˆð  ˆŒØ—’‘”ˆØ×ÒÕ+­\Ô-BÀFÑKÔKÐKà�kŠk‰mŒmˆØ×Ò�˜c™œ¥KÑ0Ô0Ð0Ø�Š˜ŸšÐ'DÑEÔEÀsÑKÔKÐKØ�Š˜Ÿ	š	™œ×,Ò,Ð-HÑIÔIÈ3ÑOÔOÐOÝÔ$ SÑ)Ô)ˆØ×#Ò# D¨$Ñ/Ô/Ð/Ð/Ð/rI   c                 ób  — t          j        t          ¬¦  «        }|                     ¦   «         }|                     ¦   «         }|                      t          |¦  «        t          ¦  «         |                      t          |¦  «        t          j	        ¦  «         t          j        |t          ¬¦  «        }|                      ||¦  «         |                     ¦   «         }|                      t          |¦  «        t          ¦  «         t          j        |¦  «        }|                      ||¦  «         d S ©Nr®   )r   rc   r0   rd   rj   r   r¶   r   rŒ   r�   r   ri   rÅ   r»   r¼   )rk   r˜   rš   r¾   rp   rÖ   s         rJ   Útest_pubkey_strings_brainpoolz#ECDSA.test_pubkey_strings_brainpoolS  sð   € ÝÔ#­/Ð:Ñ:Ô:ˆØ×&Ò&Ñ(Ô(ˆØ�^Š^ÑÔˆØ×Ò�˜b™œ¥;Ñ/Ô/Ð/Ø×Ò�˜R™œ¥/Ô"FÑGÔGÐGÝÔ'¨µ/ÐBÑBÔBˆØ×#Ò# D¨$Ñ/Ô/Ð/à—;’;‘=”=ˆØ×Ò�˜h™œ­Ñ5Ô5Ð5ÝÔ$ XÑ.Ô.ˆØ×#Ò# D¨$Ñ/Ô/Ð/Ð/Ð/rI   c                 óÊ   — t          j        ¦   «         }|j        }|                      t          ¦  «        5  |                     d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©NÚraw)r   rc   Úverifying_keyrh   Ú
ValueErrorr»   ©rk   ÚskÚvks      rJ   Ú*test_vk_to_der_with_invalid_point_encodingz0ECDSA.test_vk_to_der_with_invalid_point_encodinga  s¢   € ÝÔ Ñ"Ô"ˆØÔˆà×Ò�zÑ*Ô*ð 	ð 	Ø�IŠI�eÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   µAÁAÁAc                 ó¼   — t          j        ¦   «         }|                      t          ¦  «        5  |                     d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rà   )r   rc   rh   rã   r»   ©rk   rå   s     rJ   Ú*test_sk_to_der_with_invalid_point_encodingz0ECDSA.test_sk_to_der_with_invalid_point_encodingh  sš   € ÝÔ Ñ"Ô"ˆà×Ò�zÑ*Ô*ð 	ð 	Ø�IŠI�eÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ®AÁAÁAc                 óL  — t           }t          j        dŽ dz   }t          j        ||¦  «        }t          j        dd ¦  «        }t          j        ||¦  «        }|                      t          j        ¦  «        5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N©r   rK   éH  é='  r¯   r   r   ó   garbageó    ÿ©	r   r@   Ú
encode_oidÚencode_sequenceÚencode_bitstringrh   rÕ   r   r¼   ©rk   Útype_oid_derÚcurve_oid_derÚenc_type_derÚ	point_derÚ	to_decodes         rJ   Ú(test_vk_from_der_garbage_after_curve_oidz.ECDSA.test_vk_from_der_garbage_after_curve_oidn  sà   € Ý.ˆåŒNÐ7Ð8¸:ÑEð 	õ Ô*¨<¸ÑGÔGˆÝÔ(¨°dÑ;Ô;ˆ	ÝÔ'¨°iÑ@Ô@ˆ	à×Ò�sÔ0Ñ1Ô1ð 	-ð 	-ÝÔ! )Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ó   Á7BÂBÂ Bc                 óT  — t          j        dŽ }t          j        dŽ }t          j        ||¦  «        }t          j        dd ¦  «        }t          j        ||¦  «        }|                      t           j        ¦  «        5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N©r   rK   r¯   rì   rð   )r@   rò   ró   rô   rh   rÕ   r   r¼   rõ   s         rJ   Ú!test_vk_from_der_invalid_key_typez'ECDSA.test_vk_from_der_invalid_key_typez  sÝ   € Ý”~ yÐ1ˆÝœÐ(CÐDˆÝÔ*¨<¸ÑGÔGˆÝÔ(¨°dÑ;Ô;ˆ	ÝÔ'¨°iÑ@Ô@ˆ	à×Ò�sÔ0Ñ1Ô1ð 	-ð 	-ÝÔ! )Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	-ð 	-s   Á;BÂB!Â$B!c                 óL  — t           }t          j        dŽ }t          j        ||¦  «        }t          j        dd ¦  «        dz   }t          j        ||¦  «        }|                      t          j        ¦  «        5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrì   rð   rï   rñ   rõ   s         rJ   Ú+test_vk_from_der_garbage_after_point_stringz1ECDSA.test_vk_from_der_garbage_after_point_string„  sÛ   € Ý.ˆÝœÐ(CÐDˆÝÔ*¨<¸ÑGÔGˆÝÔ(¨°dÑ;Ô;¸jÑHˆ	ÝÔ'¨°iÑ@Ô@ˆ	à×Ò�sÔ0Ñ1Ô1ð 	-ð 	-ÝÔ! )Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	-ð 	-rü   c                 óF  — t           }t          j        dŽ }t          j        ||¦  «        }t          j        dd ¦  «        }t          j        ||¦  «        }|                      t          j        ¦  «        5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrì   s   ÿrñ   rõ   s         rJ   Ú"test_vk_from_der_invalid_bitstringz(ECDSA.test_vk_from_der_invalid_bitstringŽ  sÖ   € Ý.ˆÝœÐ(CÐDˆÝÔ*¨<¸ÑGÔGˆÝÔ(¨°dÑ;Ô;ˆ	ÝÔ'¨°iÑ@Ô@ˆ	à×Ò�sÔ0Ñ1Ô1ð 	-ð 	-ÝÔ! )Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ó   Á4BÂBÂBc                 ó<  — t           }t          j        dŽ }t          j        ||¦  «        }t          j        dd¦  «        }t          j        ||¦  «        }|                      t          ¦  «        5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrì   ó@   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿr   )	r   r@   rò   ró   rô   rh   r   r   r¼   rõ   s         rJ   Ú0test_vk_from_der_with_invalid_length_of_encodingz6ECDSA.test_vk_from_der_with_invalid_length_of_encoding˜  sÔ   € Ý.ˆÝœÐ(CÐDˆÝÔ*¨<¸ÑGÔGˆÝÔ(¨°qÑ9Ô9ˆ	ÝÔ'¨°iÑ@Ô@ˆ	à×ÒÕ2Ñ3Ô3ð 	-ð 	-ÝÔ! )Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	-ð 	-s   Á/BÂBÂBc                 óF  — t           }t          j        dŽ }t          j        ||¦  «        }t          j        dd¦  «        }t          j        ||¦  «        }|                      t          j        ¦  «        5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrì   s0   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿr   rñ   rõ   s         rJ   Ú"test_vk_from_der_with_raw_encodingz(ECDSA.test_vk_from_der_with_raw_encoding¢  sÖ   € Ý.ˆÝœÐ(CÐDˆÝÔ*¨<¸ÑGÔGˆÝÔ(¨°qÑ9Ô9ˆ	ÝÔ'¨°iÑ@Ô@ˆ	à×Ò�sÔ0Ñ1Ô1ð 	-ð 	-ÝÔ! )Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	-ð 	-r  c                 ó  — t          j        ¦   «         }|                     ¦   «         }d}|                     |¦  «        }|                      t          |¦  «        t          ¦  «         |                      t          |¦  «        t          j	        ¦  «         |  
                    |                     ||¦  «        ¦  «         |                     |t          ¬¦  «        }|                      t          |¦  «        t          ¦  «         |                      t          |¦  «        d¦  «         |                      t          |d         ¦  «        t          ¦  «         |                      t          |d         ¦  «        t          ¦  «         |                      t          |d         ¦  «        t          j        ¦  «         |                      t          |d         ¦  «        t          j        ¦  «         |  
                    |                     ||t          ¬¦  «        ¦  «         |                     |t           ¬¦  «        }|                      t          |¦  «        t          ¦  «         |  
                    |                     ||t"          ¬¦  «        ¦  «         d S )Nr‹   )Ú	sigencoderK   r   r   )Ú	sigdecode)r   rc   rd   re   r   r¶   r   rŒ   r$   rŽ   rf   rg   r   Útupler±   r   r   r   )rk   r˜   rš   rn   ro   Úsig_ders         rJ   Útest_signature_stringszECDSA.test_signature_strings¬  sæ  € ÝÔ#Ñ%Ô%ˆØ×&Ò&Ñ(Ô(ˆØˆà�jŠj˜ÑÔˆØ×Ò�˜c™œ¥KÑ0Ô0Ð0Ø×Ò�˜S™œ¥8Ô#<Ñ=Ô=Ð=Ø�Š˜Ÿš C¨Ñ.Ô.Ñ/Ô/Ð/à�jŠj˜Õ):ˆjÑ;Ô;ˆØ×Ò�˜c™œ¥EÑ*Ô*Ð*Ø×Ò�˜S™œ 1Ñ%Ô%Ð%Ø×Ò�˜c !œf™œ¥{Ñ3Ô3Ð3Ø×Ò�˜c !œf™œ¥{Ñ3Ô3Ð3Ø×Ò�˜S œV™œ¥hÔ&6Ñ7Ô7Ð7Ø×Ò�˜S œV™œ¥hÔ&6Ñ7Ô7Ð7Ø�Š˜Ÿš C¨Õ9J˜ÑKÔKÑLÔLÐLà—*’*˜T­]�*Ñ;Ô;ˆØ×Ò�˜g™œ­Ñ4Ô4Ð4Ø�Š˜Ÿš G¨T½]˜ÑKÔKÑLÔLÐLÐLÐLrI   c                 óÂ   — d}d}t           j        }t          t          |||¦  «        |¦  «        \  }}|                      ||¦  «         |                      ||¦  «         d S ©Né   i�  ©r    r|   r   r   r   ©rk   Úrr¡   r|   Únew_rÚnew_ss         rJ   Ú(test_sigencode_string_canonize_no_changez.ECDSA.test_sigencode_string_canonize_no_changeÃ  sk   € ØˆØˆÝ”ˆå'Ý% a¨¨EÑ2Ô2°Eñ
ô 
‰ˆˆuð 	×Ò˜˜EÑ"Ô"Ð"Ø×Ò˜˜EÑ"Ô"Ð"Ð"Ð"rI   c                 óÎ   — d}t           j        }|dz
  }t          t          |||¦  «        |¦  «        \  }}|                      ||¦  «         |                      ||z
  |¦  «         d S ©Nr  é
   r  ©rk   r  r|   r¡   r  r  s         rJ   Útest_sigencode_string_canonizez$ECDSA.test_sigencode_string_canonizeÏ  ss   € ØˆÝ”ˆØ�B‰Jˆå'Ý% a¨¨EÑ2Ô2°Eñ
ô 
‰ˆˆuð 	×Ò˜˜EÑ"Ô"Ð"Ø×Ò˜ ™ EÑ*Ô*Ð*Ð*Ð*rI   c                 óÂ   — d}d}t           j        }t          t          |||¦  «        |¦  «        \  }}|                      ||¦  «         |                      ||¦  «         d S r  ©r    r|   r   r   r   r  s         rJ   Ú)test_sigencode_strings_canonize_no_changez/ECDSA.test_sigencode_strings_canonize_no_changeÛ  sk   € ØˆØˆÝ”ˆå(Ý& q¨!¨UÑ3Ô3°Uñ
ô 
‰ˆˆuð 	×Ò˜˜EÑ"Ô"Ð"Ø×Ò˜˜EÑ"Ô"Ð"Ð"Ð"rI   c                 óÎ   — d}t           j        }|dz
  }t          t          |||¦  «        |¦  «        \  }}|                      ||¦  «         |                      ||z
  |¦  «         d S r  r  r  s         rJ   Útest_sigencode_strings_canonizez%ECDSA.test_sigencode_strings_canonizeç  ss   € ØˆÝ”ˆØ�B‰Jˆå(Ý& q¨!¨UÑ3Ô3°Uñ
ô 
‰ˆˆuð 	×Ò˜˜EÑ"Ô"Ð"Ø×Ò˜ ™ EÑ*Ô*Ð*Ð*Ð*rI   c                 óÂ   — d}d}t           j        }t          t          |||¦  «        |¦  «        \  }}|                      ||¦  «         |                      ||¦  «         d S )Né   éÈ   ©r    r|   r   r   r   r  s         rJ   Ú%test_sigencode_der_canonize_no_changez+ECDSA.test_sigencode_der_canonize_no_changeó  sk   € ØˆØˆÝ”ˆå$Ý" 1 a¨Ñ/Ô/°ñ
ô 
‰ˆˆuð 	×Ò˜˜EÑ"Ô"Ð"Ø×Ò˜˜EÑ"Ô"Ð"Ð"Ð"rI   c                 óÎ   — d}t           j        }|dz
  }t          t          |||¦  «        |¦  «        \  }}|                      ||¦  «         |                      ||z
  |¦  «         d S )Nr$  é   r&  r  s         rJ   Útest_sigencode_der_canonizez!ECDSA.test_sigencode_der_canonizeÿ  ss   € ØˆÝ”ˆØ�B‰Jˆå$Ý" 1 a¨Ñ/Ô/°ñ
ô 
‰ˆˆuð 	×Ò˜˜EÑ"Ô"Ð"Ø×Ò˜ ™ EÑ*Ô*Ð*Ð*Ð*rI   c                 óD  — d}t           j        }|dz  dz   }t          |||¦  «        }t          |||¦  «        }|                      ||¦  «         t          t          |||¦  «        |¦  «        \  }}|                      ||¦  «         |                      ||z
  |¦  «         d S )Nr$  rK   r   )r    r|   r   r   ÚassertNotEqualr   r   )rk   r  r|   r¡   Úregular_encodeÚcanonical_encoder  r  s           rJ   Ú4test_sigencode_der_canonize_with_close_to_half_orderz:ECDSA.test_sigencode_der_canonize_with_close_to_half_order  s±   € ØˆÝ”ˆØ�Q‰J˜‰Nˆå& q¨!¨UÑ3Ô3ˆÝ1°!°Q¸Ñ>Ô>Ðà×Ò˜NÐ,<Ñ=Ô=Ð=å$Ý" 1 a¨Ñ/Ô/°ñ
ô 
‰ˆˆuð 	×Ò˜˜EÑ"Ô"Ð"Ø×Ò˜ ™ EÑ*Ô*Ð*Ð*Ð*rI   c                 ó�   — |                       t          ¦  «        5  t          g d¢d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)ó   oneó   twos   threeéÿ   ©rh   r   r   rˆ   s    rJ   Ú*test_sig_decode_strings_with_invalid_countz0ECDSA.test_sig_decode_strings_with_invalid_count  s¦   € Ø×ÒÕ1Ñ2Ô2ð 	@ð 	@ÝÐ8Ð8Ð8¸$Ñ?Ô?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ó   ›;»?Á?c                 ó�   — |                       t          ¦  «        5  t          ddgd¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr1  r2  r3  r4  rˆ   s    rJ   Ú(test_sig_decode_strings_with_wrong_r_lenz.ECDSA.test_sig_decode_strings_with_wrong_r_len   s�   € Ø×ÒÕ1Ñ2Ô2ð 	6ð 	6Ý˜v vÐ.°Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6r6  c                 ó�   — |                       t          ¦  «        5  t          ddgd¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nó    s   °ÿr3  r4  rˆ   s    rJ   Ú(test_sig_decode_strings_with_wrong_s_lenz.ECDSA.test_sig_decode_strings_with_wrong_s_len$  s�   € Ø×ÒÕ1Ñ2Ô2ð 	<ð 	<Ý˜w¨Ð4°dÑ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	<ð 	<r6  c                 óÌ   — t          j        ¦   «         }|j        }|                      t          ¦  «        5  |                     d d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Ns€                                                                                                                                   )r   rc   râ   rh   r   Úverify_digesträ   s      rJ   Útest_verify_with_too_long_inputz%ECDSA.test_verify_with_too_long_input(  s¦   € ÝÔ Ñ"Ô"ˆØÔˆà×Ò�~Ñ.Ô.ð 	2ð 	2Ø×Ò˜T =Ñ1Ô1Ð1ð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2ð 	2ð 	2s   µAÁAÁ Ac                 ó”   — |                       t          ¦  «        5  t          j        d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©Nr   )rh   r   r   rw   rˆ   s    rJ   Ú4test_sk_from_secret_exponent_with_wrong_sec_exponentz:ECDSA.test_sk_from_secret_exponent_with_wrong_sec_exponent/  sŒ   € Ø×ÒÕ2Ñ3Ô3ð 	/ð 	/ÝÔ+¨AÑ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ó   ›=½AÁAc                 ó”   — |                       t          ¦  «        5  t          j        d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nó   )rh   r   r   ri   rˆ   s    rJ   Ú)test_sk_from_string_with_wrong_len_stringz/ECDSA.test_sk_from_string_with_wrong_len_string3  sŒ   € Ø×ÒÕ2Ñ3Ô3ð 	,ð 	,ÝÔ" 7Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	,ð 	,rB  c                 óô   — t          j        d¦  «        }t          j        |¦  «        dz   }|                      t           j        ¦  «        5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rï   ©r@   Úencode_integerró   rh   rÕ   r   r¼   ©rk   Úver_derrú   s      rJ   Ú)test_sk_from_der_with_junk_after_sequencez/ECDSA.test_sk_from_der_with_junk_after_sequence7  s³   € ÝÔ$ QÑ'Ô'ˆÝÔ'¨Ñ0Ô0°:Ñ=ˆ	à×Ò�sÔ0Ñ1Ô1ð 	+ð 	+ÝÔ 	Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s   ÁA-Á-A1Á4A1c                 óî   — t          j        d¦  «        }t          j        |¦  «        }|                      t           j        ¦  «        5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r@  rG  rI  s      rJ   Ú#test_sk_from_der_with_wrong_versionz)ECDSA.test_sk_from_der_with_wrong_version>  s®   € ÝÔ$ QÑ'Ô'ˆÝÔ'¨Ñ0Ô0ˆ	à×Ò�sÔ0Ñ1Ô1ð 	+ð 	+ÝÔ 	Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s   ÁA*Á*A.Á1A.c                 ób  — t          j        d¦  «        }t          j        d¦  «        }t          j        dŽ }t          j        d|¦  «        }t          j        ||||¦  «        }|                      t           j        ¦  «        5  t          j	        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rð   rþ   ©
r@   rH  Úencode_octet_stringrò   Úencode_constructedró   rh   rÕ   r   r¼   ©rk   rJ  Úprivkey_derr÷   Ú	const_derrú   s         rJ   Ú"test_sk_from_der_invalid_const_tagz(ECDSA.test_sk_from_der_invalid_const_tagE  sé   € ÝÔ$ QÑ'Ô'ˆÝÔ-¨kÑ:Ô:ˆÝœ¨	Ð2ˆÝÔ*¨1¨mÑ<Ô<ˆ	ÝÔ'Ø�[ )¨]ñ
ô 
ˆ	ð ×Ò�sÔ0Ñ1Ô1ð 	+ð 	+ÝÔ 	Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s   ÂB$Â$B(Â+B(c                 óh  — t          j        d¦  «        }t          j        d¦  «        }t          j        dŽ dz   }t          j        d|¦  «        }t          j        ||||¦  «        }|                      t           j        ¦  «        5  t          j	        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rð   rþ   rï   r   rO  rR  s         rJ   Ú*test_sk_from_der_garbage_after_privkey_oidz0ECDSA.test_sk_from_der_garbage_after_privkey_oidQ  sî   € ÝÔ$ QÑ'Ô'ˆÝÔ-¨kÑ:Ô:ˆÝœ¨	Ð2°ZÑ?ˆÝÔ*¨1¨mÑ<Ô<ˆ	ÝÔ'Ø�[ )¨]ñ
ô 
ˆ	ð ×Ò�sÔ0Ñ1Ô1ð 	+ð 	+ÝÔ 	Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s   ÂB'Â'B+Â.B+c                 ó2  — t          j        d¦  «        }t          j        d¦  «        }t          j        dŽ }t          j        d|¦  «        }t          j        ||||¦  «        }t          j        |¦  «        }|                      |j	        j
        d¦  «         d S )Nr   rð   rì   r   r3  )r@   rH  rP  rò   rQ  ró   r   r¼   r   r¨   r©   )rk   rJ  rS  r÷   rT  rú   rå   s          rJ   Ú#test_sk_from_der_with_short_privkeyz)ECDSA.test_sk_from_der_with_short_privkey]  s�   € ÝÔ$ QÑ'Ô'ˆÝÔ-¨kÑ:Ô:ˆÝœÐ(CÐDˆÝÔ*¨1¨mÑ<Ô<ˆ	ÝÔ'Ø�[ )¨]ñ
ô 
ˆ	õ Ô  Ñ+Ô+ˆØ×Ò˜œÔ5°sÑ;Ô;Ð;Ð;Ð;rI   c                 ó  — t          j        d¦  «        }t          j        t          j        dddddd¦  «        t          j        ddddddd¦  «        ¦  «        }t          j        t          j        t          j        d¦  «        t          j        d¦  «        ¦  «        ¦  «        }t          j        |||¦  «        }|                      t           j        ¦  «        5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrK   r   rí   rî   r¯   rð   ©	r@   rH  ró   rò   rP  rh   rÕ   r   r¼   ©rk   rJ  Úalgorithm_derrS  rú   s        rJ   Ú&test_sk_from_p8_der_with_wrong_versionz,ECDSA.test_sk_from_p8_der_with_wrong_versioni  s5  € ÝÔ$ QÑ'Ô'ˆÝÔ+ÝŒN˜1˜a  e¨Q°Ñ2Ô2ÝŒN˜1˜a  e¨Q°°1Ñ5Ô5ñ
ô 
ˆõ Ô-ÝÔÝÔ" 1Ñ%Ô%¥sÔ'>¸{Ñ'KÔ'Kñô ñ
ô 
ˆõ
 Ô'¨°ÀÑLÔLˆ	à×Ò�sÔ0Ñ1Ô1ð 	+ð 	+ÝÔ 	Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s   ÃC;Ã;C?ÄC?c                 ó
  — t          j        d¦  «        }t          j        t          j        ddd¦  «        t          j        ddddddd¦  «        ¦  «        }t          j        t          j        t          j        d¦  «        t          j        d¦  «        ¦  «        ¦  «        }t          j        |||¦  «        }|                      t           j        ¦  «        5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rK   r¯   rí   rî   rð   r[  r\  s        rJ   Ú(test_sk_from_p8_der_with_wrong_algorithmz.ECDSA.test_sk_from_p8_der_with_wrong_algorithmy  s.  € ÝÔ$ QÑ'Ô'ˆÝÔ+ÝŒN˜1˜a Ñ#Ô#¥S¤^°A°q¸#¸uÀaÈÈAÑ%NÔ%Nñ
ô 
ˆõ Ô-ÝÔÝÔ" 1Ñ%Ô%¥sÔ'>¸{Ñ'KÔ'Kñô ñ
ô 
ˆõ
 Ô'¨°ÀÑLÔLˆ	à×Ò�sÔ0Ñ1Ô1ð 	+ð 	+ÝÔ 	Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s   ÃC8Ã8C<Ã?C<c                 ó6  — t          j        d¦  «        }t          j        t          j        dddddd¦  «        t          j        ddddddd¦  «        t          j        d¦  «        ¦  «        }t          j        t          j        t          j        d¦  «        t          j        d¦  «        ¦  «        ¦  «        }t          j        |||¦  «        }|                      t           j        ¦  «        5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rK   rí   rî   r¯   rÇ   rð   r[  r\  s        rJ   Ú6test_sk_from_p8_der_with_trailing_junk_after_algorithmz<ECDSA.test_sk_from_p8_der_with_trailing_junk_after_algorithmˆ  sC  € ÝÔ$ QÑ'Ô'ˆÝÔ+ÝŒN˜1˜a  e¨Q°Ñ2Ô2ÝŒN˜1˜a  e¨Q°°1Ñ5Ô5ÝÔ# GÑ,Ô,ñ
ô 
ˆõ
 Ô-ÝÔÝÔ" 1Ñ%Ô%¥sÔ'>¸{Ñ'KÔ'Kñô ñ
ô 
ˆõ
 Ô'¨°ÀÑLÔLˆ	à×Ò�sÔ0Ñ1Ô1ð 	+ð 	+ÝÔ 	Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s   Ã,DÄDÄDc                 ó`  — t          j        d¦  «        }t          j        t          j        dddddd¦  «        t          j        ddddddd¦  «        ¦  «        }t          j        t          j        t          j        d¦  «        t          j        d¦  «        ¦  «        t          j        d¦  «        z   ¦  «        }t          j        |||t          j        d¦  «        ¦  «        }|                      t           j        ¦  «        5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nr   rK   rí   rî   r¯   rð   iç  rÇ   r[  r\  s        rJ   Ú0test_sk_from_p8_der_with_trailing_junk_after_keyz6ECDSA.test_sk_from_p8_der_with_trailing_junk_after_key™  sa  € ÝÔ$ QÑ'Ô'ˆÝÔ+ÝŒN˜1˜a  e¨Q°Ñ2Ô2ÝŒN˜1˜a  e¨Q°°1Ñ5Ô5ñ
ô 
ˆõ Ô-ÝÔÝÔ" 1Ñ%Ô%¥sÔ'>¸{Ñ'KÔ'Kñô õ Ô  Ñ%Ô%ñ&ñ
ô 
ˆõ Ô'ØØØÝÔ# GÑ,Ô,ñ	
ô 
ˆ	ð ×Ò�sÔ0Ñ1Ô1ð 	+ð 	+ÝÔ 	Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s   ÄD#Ä#D'Ä*D'c                 ó¾   — t          j        d¦  «        }|                      t          ¦  «        5  |                     d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr  r  )r   rw   rh   r   Úsign_digestré   s     rJ   Útest_sign_with_too_long_hashz"ECDSA.test_sign_with_too_long_hash¯  sœ   € ÝÔ,¨RÑ0Ô0ˆà×Ò�~Ñ.Ô.ð 	)ð 	)Ø�NŠN˜<Ñ(Ô(Ð(ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð 	)ð 	)s   ¯AÁAÁAc                 ó¨  — t          j        t          t          j        ¬¦  «        }d}|                     |¦  «        }t          j        |                     ¦   «          	                    ¦   «         t          t          j        ¬¦  «        }|  
                    |                     ||¦  «        ¦  «         t          j        t          ¬¦  «        }|                     |t          j        ¬¦  «        }t          j        |                     ¦   «          	                    ¦   «         t          t          j        ¬¦  «        }|  
                    |                     ||¦  «        ¦  «         t          j        |                     ¦   «          	                    ¦   «         t          ¬¦  «        }|  
                    |                     ||t          j        ¬¦  «        ¦  «         d S )N©r•   Úhashfuncs   security level is 128 bitsr®   ©rj  )r   rc   r&   rx   ry   re   r   ri   rd   rj   rf   rg   )	rk   rå   rn   ro   ræ   Úsk2r‚   Úvk2Úvk3s	            rJ   Útest_hashfunczECDSA.test_hashfuncµ  sq  € ÝÔ ¥x½'¼.ÐIÑIÔIˆØ,ˆØ�gŠg�d‰mŒmˆÝÔ%Ø× Ò Ñ"Ô"×,Ò,Ñ.Ô.ÝÝ”^ð
ñ 
ô 
ˆð
 	�Š˜Ÿ	š	 # tÑ,Ô,Ñ-Ô-Ð-åÔ!­Ð1Ñ1Ô1ˆØ�xŠx˜¥w¤~ˆxÑ6Ô6ˆÝÔ&Ø×!Ò!Ñ#Ô#×-Ò-Ñ/Ô/ÝÝ”^ð
ñ 
ô 
ˆð
 	�Š˜Ÿ
š
 4¨Ñ.Ô.Ñ/Ô/Ð/åÔ&Ø× Ò Ñ"Ô"×,Ò,Ñ.Ô.µhð
ñ 
ô 
ˆð 	�Š˜Ÿ
š
 3¨µw´~˜
ÑFÔFÑGÔGÐGÐGÐGrI   c                 óð  — t           }t          j        |¬¦  «        }|                     ¦   «         }d}|                     |¦  «        }t          j        |||¦  «        }|D ]k}|                      |                     ||¦  «        ¦  «         |  	                    |j
        |j
        ¦  «         |  	                    |j        |j        ¦  «         Œl|                      |j        j        d„ |D ¦   «         ¦  «         d S )Nr®   rb   c                 ó&   — g | ]}|j         j        ‘ŒS rH   ©rÃ   rÄ   ©Ú.0Úrecovered_vks     rJ   ú
<listcomp>z2ECDSA.test_public_key_recovery.<locals>.<listcomp>ì  ó   € ÐIÐIÐI¨<ˆ\Ô Ô&ÐIÐIÐIrI   )r*   r   rc   rd   re   r   Úfrom_public_key_recoveryrf   rg   r   r•   Údefault_hashfuncÚassertInrÃ   rÄ   ©rk   r•   rå   ræ   rn   Ú	signatureÚrecovered_vksru  s           rJ   Útest_public_key_recoveryzECDSA.test_public_key_recoveryÎ  s  € åˆåÔ  uÐ-Ñ-Ô-ˆØ×!Ò!Ñ#Ô#ˆð ˆØ—G’G˜D‘M”Mˆ	õ %Ô=Ø�t˜Uñ
ô 
ˆð
 *ð 	ð 	ˆLà�OŠO˜L×/Ò/°	¸4Ñ@Ô@ÑAÔAÐAð ×Ò˜RœX |Ô'9Ñ:Ô:Ð:Ø×ÒØÔ# \Ô%Bñô ð ð ð
 	�ŠØŒIŒOØIÐI¸=ÐIÑIÔIñ	
ô 	
ð 	
ð 	
ð 	
rI   c                 ó*  — t           }t          j        |t          j        ¬¦  «        }|                     ¦   «         }d}|                     |¦  «        }t          j        |||t          j        d¬¦  «        }|D ]p}|  	                    | 
                    ||¦  «        ¦  «         |                      |j        |j        ¦  «         |                      t          j        |j        ¦  «         Œq|                      |j        j        d„ |D ¦   «         ¦  «         d S )Nri  rb   T)rj  Úallow_truncatec                 ó&   — g | ]}|j         j        ‘ŒS rH   rr  rs  s     rJ   rv  zCECDSA.test_public_key_recovery_with_custom_hash.<locals>.<listcomp>  rw  rI   )r*   r   rc   rx   ry   rd   re   r   rx  rf   rg   r   r•   ry  rz  rÃ   rÄ   r{  s           rJ   Ú)test_public_key_recovery_with_custom_hashz/ECDSA.test_public_key_recovery_with_custom_hashï  s  € åˆåÔ  uµw´~ÐFÑFÔFˆØ×!Ò!Ñ#Ô#ˆð ˆØ—G’G˜D‘M”Mˆ	õ %Ô=ØØØÝ”^Øð
ñ 
ô 
ˆð *ð 	Lð 	LˆLà�OŠO˜L×/Ò/°	¸4Ñ@Ô@ÑAÔAÐAð ×Ò˜RœX |Ô'9Ñ:Ô:Ð:Ø×Ò�Wœ^¨\Ô-JÑKÔKÐKÐKð 	�ŠØŒIŒOØIÐI¸=ÐIÑIÔIñ	
ô 	
ð 	
ð 	
ð 	
rI   c                 óú  — t          j        d¦  «        }|j        }d}|                      |                     ¦   «         |¦  «         |                      |                     d¦  «        |¦  «         |                      |                     d¦  «        d|z   ¦  «         |                      |                     d¦  «        d|d d…         z   ¦  «         |                      |                     d	¦  «        d
|z   ¦  «         d S )NrË   ó0   ààdŽSŠÀžK¨x !ÕÂÃýÈ cÿû¹Ä„)‹‡¤zŠ#µ—ìO¶ HQ‰*rá   Úuncompressedó   Ú
compressedó   é   Úhybridó   )r   rw   râ   r   rj   )rk   rå   ræ   Úexps       rJ   Útest_encodingzECDSA.test_encoding  sç   € ÝÔ,¨YÑ7Ô7ˆØÔˆð2ð 	ð
 	×Ò˜Ÿš™œ¨Ñ-Ô-Ð-Ø×Ò˜Ÿš eÑ,Ô,¨cÑ2Ô2Ð2Ø×Ò˜Ÿš nÑ5Ô5°wÀ±}ÑEÔEÐEØ×Ò˜Ÿš lÑ3Ô3°W¸sÀ3ÀBÀ3¼xÑ5GÑHÔHÐHØ×Ò˜Ÿš hÑ/Ô/°¸3±Ñ?Ô?Ð?Ð?Ð?rI   c                 óR  — t          j        d¦  «        }|j        }d}t          j        |¦  «        }|                      |j        j        |j        j        ¦  «         t          j        d|z   ¦  «        }|                      |j        j        |j        j        ¦  «         t          j        d|d d…         z   ¦  «        }|                      |j        j        |j        j        ¦  «         t          j        d|z   ¦  «        }|                      |j        j        |j        j        ¦  «         d S )NrË   r„  r†  rˆ  r‰  r‹  )r   rw   râ   r   ri   r   rÃ   rÄ   )rk   rå   ræ   ÚencÚfrom_rawÚfrom_uncompressedÚfrom_compresseds          rJ   Útest_decodingzECDSA.test_decoding!  s  € ÝÔ,¨YÑ7Ô7ˆØÔˆð2ð 	õ  Ô+¨CÑ0Ô0ˆØ×Ò˜œÔ.°´	´Ñ@Ô@Ð@å(Ô4°W¸s±]ÑCÔCÐØ×ÒÐ*Ô1Ô7¸¼¼ÑIÔIÐIå&Ô2°7¸SÀÀ"À¼XÑ3EÑFÔFˆØ×Ò˜Ô/Ô5°r´y´ÑGÔGÐGå(Ô4°W¸s±]ÑCÔCÐØ×ÒÐ*Ô1Ô7¸¼¼ÑIÔIÐIÐIÐIrI   c                 ó”   — d}t          j        |d¬¦  «        }t          j        d¦  «        }|                      ||j        ¦  «         d S )Nó1   ààdŽSŠÀžK¨x !ÕÂÃýÈ cÿû¹Ä„)‹‡¤zŠ#µ—ìO¶ HQ‰*©r…  ©Úvalid_encodingsrË   )r   ri   r   rw   r   râ   )rk   r�  ræ   rå   s       rJ   Ú)test_uncompressed_decoding_as_only_alowedz/ECDSA.test_uncompressed_decoding_as_only_alowed7  sS   € ð2ð 	õ Ô% cÐ;LÐMÑMÔMˆÝÔ,¨YÑ7Ô7ˆà×Ò˜˜RÔ-Ñ.Ô.Ð.Ð.Ð.rI   c                 óê   — d}|                       t          ¦  «        5 }t          j        |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )Nr„  ©rŠ  r—  rŠ  ©rh   r   r   ri   rz  ÚstrÚ	exception©rk   r�  rŒ  s      rJ   Ú%test_raw_decoding_with_blocked_formatz+ECDSA.test_raw_decoding_with_blocked_formatC  sÁ   € ð2ð 	ð
 ×ÒÕ2Ñ3Ô3ð 	G°sÝÔ$ S¸+ÐFÑFÔFÐFð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gð 	�Š�h¥ C¤MÑ 2Ô 2Ñ3Ô3Ð3Ð3Ð3ó   �A Á AÁAc                 óæ   — |                       t          ¦  «        5 }t          j        dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )NrI   )rá   Úfoobarr—  zOnly uncompressed, compressed)rh   rã   r   ri   rz  r�  rž  )rk   Úes     rJ   Ú!test_decoding_with_unknown_formatz'ECDSA.test_decoding_with_unknown_formatN  s¶   € Ø×Ò�zÑ*Ô*ð 	M¨aÝÔ$ SÐ:KÐLÑLÔLÐLð	Mð 	Mð 	Mñ 	Mô 	Mð 	Mð 	Mð 	Mð 	Mð 	Mð 	Møøøð 	Mð 	Mð 	Mð 	Mð 	�ŠÐ5µs¸1¼;Ñ7GÔ7GÑHÔHÐHÐHÐHs   ›>¾AÁAc                 óê   — d}|                       t          ¦  «        5 }t          j        |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )Nr•  r›  r—  úInvalid X9.62 encodingrœ  rŸ  s      rJ   Ú.test_uncompressed_decoding_with_blocked_formatz4ECDSA.test_uncompressed_decoding_with_blocked_formatT  sÂ   € ð2ð 	ð ×ÒÕ2Ñ3Ô3ð 	G°sÝÔ$ S¸+ÐFÑFÔFÐFð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gð 	�ŠÐ.µ°C´MÑ0BÔ0BÑCÔCÐCÐCÐCr¡  c                 óê   — d}|                       t          ¦  «        5 }t          j        |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )Ns1   ààdŽSŠÀžK¨x !ÕÂÃýÈ cÿû¹Ä„)‹‡¤zŠ#µ—ìO¶ HQ‰*r–  r—  r§  rœ  rŸ  s      rJ   Ú(test_hybrid_decoding_with_blocked_formatz.ECDSA.test_hybrid_decoding_with_blocked_format`  sÃ   € ð2ð 	ð ×ÒÕ2Ñ3Ô3ð 	M°sÝÔ$ SÐ:KÐLÑLÔLÐLð	Mð 	Mð 	Mñ 	Mô 	Mð 	Mð 	Mð 	Mð 	Mð 	Mð 	Møøøð 	Mð 	Mð 	Mð 	Mð 	�ŠÐ.µ°C´MÑ0BÔ0BÑCÔCÐCÐCÐCr¡  c                 ó  — t          j        d¦  «        }|j        }|                     d¦  «        }|                      |d d…         d¦  «         d|dd …         z   }t          j        |dd¬¦  «        }|                      ||¦  «         d S )	NrË   rŠ  r   r‹  ó   r›  F)r˜  Úvalidate_point)r   rw   râ   rj   r   r   ri   ©rk   rå   ræ   r�  Úbs        rJ   ÚAtest_hybrid_decoding_with_inconsistent_encoding_and_no_validationzGECDSA.test_hybrid_decoding_with_inconsistent_encoding_and_no_validationl  s™   € õ Ô,¨YÑ7Ô7ˆØÔˆà�lŠl˜8Ñ$Ô$ˆØ×Ò˜˜R˜a˜Rœ 'Ñ*Ô*Ð*Ø˜˜A˜B˜BœÑˆåÔ$Ø ¸Uð
ñ 
ô 
ˆð 	×Ò˜˜QÑÔÐÐÐrI   c                 óú   — dd d…         }|                       t          ¦  «        5 }t          j        |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )Ns1   ààdŽSŠÀžK¨x !ÕÂÃýÈ cÿû¹Ä„)‹‡¤zŠ#µ—ìO¶ HQ‰*é   )rŠ  rá   r—  z(hybrid, raw)rœ  rŸ  s      rJ   Ú,test_compressed_decoding_with_blocked_formatz2ECDSA.test_compressed_decoding_with_blocked_format|  sÍ   € ð2ð ˆ2ˆ#ôˆð ×ÒÕ2Ñ3Ô3ð 	M°sÝÔ$ SÐ:KÐLÑLÔLÐLð	Mð 	Mð 	Mñ 	Mô 	Mð 	Mð 	Mð 	Mð 	Mð 	Mð 	Møøøð 	Mð 	Mð 	Mð 	Mð 	�Š�o¥s¨3¬=Ñ'9Ô'9Ñ:Ô:Ð:Ð:Ð:s   ¥AÁAÁAc                 óž   — d}|                       t          ¦  «        5  t          j        d|z   ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr„  rˆ  ©rh   r   r   ri   ©rk   r�  s     rJ   Ú)test_decoding_with_malformed_uncompressedz/ECDSA.test_decoding_with_malformed_uncompressedˆ  óœ   € ð2ð 	ð ×ÒÕ2Ñ3Ô3ð 	4ð 	4ÝÔ$ W¨s¡]Ñ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ó   �AÁAÁ	Ac                 ó®   — d}|                       t          ¦  «        5  t          j        d|d d…         z   ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr„  rD  r‰  rµ  r¶  s     rJ   Ú'test_decoding_with_malformed_compressedz-ECDSA.test_decoding_with_malformed_compressed’  s¥   € ð2ð 	ð ×ÒÕ2Ñ3Ô3ð 	9ð 	9ÝÔ$ W¨s°3°B°3¬xÑ%7Ñ8Ô8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ó   � A
Á
AÁAc                 óž   — d}|                       t          ¦  «        5  t          j        d|z   ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr„  r¬  rµ  r¶  s     rJ   Ú&test_decoding_with_inconsistent_hybridz,ECDSA.test_decoding_with_inconsistent_hybridœ  r¸  r¹  c                 óN  — t          j        d¦  «        }|j        }|                     d¦  «        }|                      |d d…         d¦  «         d|dd …         z   }|                      t          ¦  «        5  t          j        |d¬¦  «        }d d d ¦  «         d S # 1 swxY w Y   d S )NiÍ[rŠ  r   r¬  r‹  r›  r—  )	r   rw   râ   rj   r   rh   r   r   ri   r®  s        rJ   Ú0test_decoding_with_inconsistent_hybrid_odd_pointz6ECDSA.test_decoding_with_inconsistent_hybrid_odd_point¦  sý   € ÝÔ,¨YÑ7Ô7ˆØÔˆà�lŠl˜8Ñ$Ô$ˆØ×Ò˜˜R˜a˜Rœ 'Ñ*Ô*Ð*Ø˜˜A˜B˜BœÑˆà×ÒÕ2Ñ3Ô3ð 	Kð 	KÝÔ(¨¸kÐJÑJÔJˆAð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kð 	Kð 	Ks   Á6BÂBÂ!Bc                 ó®   — d}|                       t          ¦  «        5  t          j        |d d…         dz   ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr„  é/   ó    rµ  r¶  s     rJ   Ú%test_decoding_with_point_not_on_curvez+ECDSA.test_decoding_with_point_not_on_curve±  s¥   € ð2ð 	ð ×ÒÕ2Ñ3Ô3ð 	9ð 	9ÝÔ$ S¨¨"¨¤X°Ñ%7Ñ8Ô8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð 	9ð 	9r¼  c                 ó”   — |                       t          ¦  «        5  t          j        d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrÃ  rµ  rˆ   s    rJ   Ú$test_decoding_with_point_at_infinityz*ECDSA.test_decoding_with_point_at_infinity»  sŒ   € à×ÒÕ2Ñ3Ô3ð 	.ð 	.ÝÔ$ WÑ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.rB  c                 ó0  — t          t          j                             ¦   «         t          j                             ¦   «         dz   ¦  «        }|                      t
          ¦  «        5  t          j        d|z   ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rˆ  )r   r$   r•   r\   rh   r   r   ri   r¶  s     rJ   Útest_not_lying_on_curvezECDSA.test_not_lying_on_curveÀ  sÀ   € Ý�xœ~×/Ò/Ñ1Ô1µ8´>×3CÒ3CÑ3EÔ3EÈÑ3IÑJÔJˆà×ÒÕ2Ñ3Ô3ð 	4ð 	4ÝÔ$ W¨s¡]Ñ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4s   Á&BÂBÂBc                 óþ   — t          dt          j        t          j        d¦  «        }d|_        d|_        |                      t          ¦  «        5  t          j	        d|¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚtest©r   rK   rt   é    ó                   ©
r   rB   Ú	curve_192Úgenerator_192r�   r±   rh   r   r   ri   ©rk   r•   s     rJ   Ú9test_from_string_with_invalid_curve_too_short_ver_key_lenz?ECDSA.test_from_string_with_invalid_curve_too_short_ver_key_lenÆ  ó·   € õ �f�eœo­uÔ/BÀFÑKÔKˆØ%'ˆÔ"ØˆŒà×ÒÕ2Ñ3Ô3ð 	:ð 	:ÝÔ$ \°5Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ó   ÁA2Á2A6Á9A6c                 óþ   — t          dt          j        t          j        d¦  «        }d|_        d|_        |                      t          ¦  «        5  t          j	        d|¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrÊ  rË  rt   rÍ  rÎ  rÑ  s     rJ   Ú8test_from_string_with_invalid_curve_too_long_ver_key_lenz>ECDSA.test_from_string_with_invalid_curve_too_long_ver_key_lenÑ  rÓ  rÔ  N)ErE   rF   rG   rq   r„   r‰   r�   r›   r¦   r«   r²   r¿   rÁ   rÅ   rÛ   rÞ   rç   rê   rû   rÿ   r  r  r  r	  r  r  r  r   r"  r'  r*  r/  r5  r8  r;  r>  rA  rE  rK  rM  rU  rW  rY  r^  r`  rb  rd  rg  ro  r~  r‚  r�  r“  r™  r   r¥  r¨  rª  r°  r³  r·  r»  r¾  rÀ  rÄ  rÆ  rÈ  rÒ  rÖ  rH   rI   rJ   r`   r`   e   s  € € € € € ð0ð 0ð 0ð%ð %ð %ð83ð 3ð 3ð
=ð =ð =ðOð Oð Oð.7ð 7ð 7ð*
ð 
ð 
ð:ð :ð :ð43ð 3ð 3ðB3ð 3ð 3ð1ð 1ð 1ð
20ð 20ð 20ðh0ð 0ð 0ðð ð ðð ð ð
-ð 
-ð 
-ð-ð -ð -ð-ð -ð -ð-ð -ð -ð-ð -ð -ð-ð -ð -ðMð Mð Mð.
#ð 
#ð 
#ð
+ð 
+ð 
+ð
#ð 
#ð 
#ð
+ð 
+ð 
+ð
#ð 
#ð 
#ð
+ð 
+ð 
+ð+ð +ð +ð"@ð @ð @ð6ð 6ð 6ð<ð <ð <ð2ð 2ð 2ð/ð /ð /ð,ð ,ð ,ð+ð +ð +ð+ð +ð +ð
+ð 
+ð 
+ð
+ð 
+ð 
+ð
<ð 
<ð 
<ð+ð +ð +ð +ð +ð +ð+ð +ð +ð"+ð +ð +ð,)ð )ð )ðHð Hð Hð2
ð 
ð 
ðB!
ð !
ð !
ðF@ð @ð @ðJð Jð Jð,
/ð 
/ð 
/ð	4ð 	4ð 	4ðIð Ið Ið
Dð 
Dð 
Dð
Dð 
Dð 
Dð ð  ð  ð 
;ð 
;ð 
;ð4ð 4ð 4ð9ð 9ð 9ð4ð 4ð 4ð	Kð 	Kð 	Kð9ð 9ð 9ð.ð .ð .ð
4ð 4ð 4ð	:ð 	:ð 	:ð	:ð 	:ð 	:ð 	:ð 	:rI   r`   zval,evenc                 ó    — g | ]}d D ]}||f‘ŒŒS ))TFrH   )rt  ÚiÚjs      rJ   rv  rv  Þ  s)   € ÐCÐCÐC˜A°]ÐCÐC°�!�Q�ÐCÐCÐCÐCrI   é   c                 óÎ   — t          | t          j        ¦  «        }|rd|z   }nd|z   }	 t          j        |¦  «        }t          |t          ¦  «        sJ ‚d S # t          $ r Y d S w xY w)Nrˆ  ó   )r   r$   r|   r   ri   Ú
isinstancer   )ÚvalÚevenr�  ræ   s       rJ   Ú*test_VerifyingKey_decode_with_small_valuesrà  Ý  s„   € õ ˜3¥¤Ñ
/Ô
/€Càð Ø˜‰mˆˆà˜‰mˆðÝÔ% cÑ*Ô*ˆÝ˜"�lÑ+Ô+Ð+Ð+Ð+Ð+Ð+øÝð ð ð Øˆˆðøøøs   ©+A Á
A$Á#A$)rá   r…  r‡  rŠ  z{0}-{1})Úidzcurve,encodingc                 óÌ   — t          j        | ¬¦  «        }|j        }|                     |¦  «        }t	          j        || ¬¦  «        }|j        j        |j        j        k    sJ ‚d S rÝ   )r   rc   râ   rj   r   ri   rÃ   rÄ   )r•   Úencodingrå   ræ   ÚencodedÚfrom_encs         rJ   Útest_VerifyingKey_encode_decoderæ  ù  sc   € å	Ô	 5Ð	)Ñ	)Ô	)€BØ	Ô	€Bà�lŠl˜8Ñ$Ô$€GåÔ'¨°uÐ=Ñ=Ô=€HàŒ9Œ?˜hœoÔ3Ò3Ð3Ð3Ð3Ð3Ð3rI   r•   c                 ó´  — t          j        | ¬¦  «        }|                     ¦   «         }t          j        |                     ¦   «         | ¦  «        }|                     ¦   «         |                     ¦   «         k    sJ ‚t          |                     ¦   «         ¦  «        | j        k    sJ ‚|                     d¦  «        }t          |¦  «        | j	        k    sJ ‚d S )Nr®   r‹   )
r   rc   rd   r   ri   rj   rŒ   r�   re   rŽ   )r•   rl   rš   rp   ro   s        rJ   Útest_lengthsrè    s¾   € åÔ UÐ+Ñ+Ô+€DØ×!Ò!Ñ#Ô#€DÝÔ# D§N¢NÑ$4Ô$4°eÑ<Ô<€DØ�>Š>ÑÔ˜tŸ~š~Ñ/Ô/Ò/Ð/Ð/Ð/Ýˆt�~Š~ÑÔÑ Ô  EÔ$>Ò>Ð>Ð>Ð>Ø
�)Š)�GÑ
Ô
€CÝˆs‰8Œ8�uÔ-Ò-Ð-Ð-Ð-Ð-Ð-rI   c                   óØ  — e Zd Z ed„  ed¦  «                             d¦  «        D ¦   «         ¦  «        Zd„ Zej	        j
        ej	                             devd¬¦  «        d„ ¦   «         ¦   «         Zej	        j
        ej	                             d	evd
¬¦  «        d„ ¦   «         ¦   «         Zej	        j
        ej	                             devd¬¦  «        d„ ¦   «         ¦   «         Zej	        j
        ej	                             devd¬¦  «        d„ ¦   «         ¦   «         Zej	        j
        ej	                             devd¬¦  «        d„ ¦   «         ¦   «         Zej	        j
        ej	                             devd¬¦  «        d„ ¦   «         ¦   «         Zej	        j
        ej	                             devd¬¦  «        d„ ¦   «         ¦   «         Zej	        j
        ej	                             devd¬¦  «        d„ ¦   «         ¦   «         Zej	        j
        ej	                             devd¬¦  «        d„ ¦   «         ¦   «         Zej	        j
        ej	                             devd¬¦  «        d„ ¦   «         ¦   «         Zej	        j
        ej	                             devd¬¦  «        d „ ¦   «         ¦   «         Zej	        j
        ej	                             d!evd"¬¦  «        d#„ ¦   «         ¦   «         Zej	        j
        ej	                             d$evd%¬¦  «        d&„ ¦   «         ¦   «         Zej	        j
        ej	                             d'evd(¬¦  «        d)„ ¦   «         ¦   «         Zej	        j
        ej	                             d*evd+¬¦  «        d,„ ¦   «         ¦   «         Zej	        j
        ej	                             d-evd.¬¦  «        d/„ ¦   «         ¦   «         Zej	        j
        ej	                             d0evd1¬¦  «        d2„ ¦   «         ¦   «         Zej	        j
        ej	                             d3evd4¬¦  «        d5„ ¦   «         ¦   «         Zej	        j
        ej	                             d6evd7¬¦  «        d8„ ¦   «         ¦   «         Zej	        j
        ej	                             d9evd:¬¦  «        d;„ ¦   «         ¦   «         Zej	        j
        ej	                             d<evd=¬¦  «        d>„ ¦   «         ¦   «         Z ej	        j
        ej	                             d?evd@¬¦  «        dA„ ¦   «         ¦   «         Z!ej	        j
        ej	                             dBevdC¬¦  «        dD„ ¦   «         ¦   «         Z"ej	        j
        ej	                             dEevdF¬¦  «        dG„ ¦   «         ¦   «         Z#ej	        j
        ej	                             dHevdI¬¦  «        dJ„ ¦   «         ¦   «         Z$ej	        j
        ej	                             dKevdL¬¦  «        dM„ ¦   «         ¦   «         Z%ej	        j
        ej	                             dNevdO¬¦  «        dP„ ¦   «         ¦   «         Z&d~dR„Z'ej	        j
        ej	                             devd¬¦  «        dS„ ¦   «         ¦   «         Z(ej	        j
        ej	                             d	evd
¬¦  «        dT„ ¦   «         ¦   «         Z)ej	        j
        ej	                             devd¬¦  «        dU„ ¦   «         ¦   «         Z*ej	        j
        ej	                             devd¬¦  «        dV„ ¦   «         ¦   «         Z+ej	        j
        ej	                             devd¬¦  «        dW„ ¦   «         ¦   «         Z,ej	        j
        ej	                             devd¬¦  «        dX„ ¦   «         ¦   «         Z-ej	        j
        ej	                             devd¬¦  «        dY„ ¦   «         ¦   «         Z.ej	        j
        ej	                             devd¬¦  «        dZ„ ¦   «         ¦   «         Z/ej	        j
        ej	                             devd¬¦  «        d[„ ¦   «         ¦   «         Z0ej	        j
        ej	                             devd¬¦  «        d\„ ¦   «         ¦   «         Z1ej	        j
        ej	                             devd¬¦  «        d]„ ¦   «         ¦   «         Z2ej	        j
        ej	                             d!evd"¬¦  «        d^„ ¦   «         ¦   «         Z3ej	        j
        ej	                             d$evd%¬¦  «        d_„ ¦   «         ¦   «         Z4ej	        j
        ej	                             d'evd(¬¦  «        d`„ ¦   «         ¦   «         Z5ej	        j
        ej	                             d*evd+¬¦  «        da„ ¦   «         ¦   «         Z6ej	        j
        ej	                             d-evd.¬¦  «        db„ ¦   «         ¦   «         Z7ej	        j
        ej	                             d0evd1¬¦  «        dc„ ¦   «         ¦   «         Z8ej	        j
        ej	                             d3evd4¬¦  «        dd„ ¦   «         ¦   «         Z9ej	        j
        ej	                             d6evd7¬¦  «        de„ ¦   «         ¦   «         Z:ej	        j
        ej	                             d9evd:¬¦  «        df„ ¦   «         ¦   «         Z;ej	        j
        ej	                             d<evd=¬¦  «        dg„ ¦   «         ¦   «         Z<ej	        j
        ej	                             d?evd@¬¦  «        dh„ ¦   «         ¦   «         Z=ej	        j
        ej	                             dBevdC¬¦  «        di„ ¦   «         ¦   «         Z>ej	        j
        ej	                             dEevdF¬¦  «        dj„ ¦   «         ¦   «         Z?ej	        j
        ej	                             dHevdI¬¦  «        dk„ ¦   «         ¦   «         Z@ej	        j
        ej	                             dKevdL¬¦  «        dl„ ¦   «         ¦   «         ZAej	        j
        ej	                             dNevdO¬¦  «        dm„ ¦   «         ¦   «         ZBd~dn„ZC e¦   «         ZD	 do edp¦  «        v r edq„ drD ¦   «         ¦  «        ZDn# eE$ r Y nw xY wds„ ZFej	        j
        ej	                             dteDvdu¬¦  «        dv„ ¦   «         ¦   «         ZGej	        j
        ej	                             dweDvdx¬¦  «        dy„ ¦   «         ¦   «         ZHdz„ ZIej	        j
        ej	                             dteDvdu¬¦  «        d{„ ¦   «         ¦   «         ZJej	        j
        ej	                             dweDvdx¬¦  «        d|„ ¦   «         ¦   «         ZKd}S )ÚOpenSSLc              #   óp   K  — | ]1}|                      d ¦  «        d                              ¦   «         V — Œ2dS ©ú:r   N©rT   r¸   ©rt  Úcs     rJ   ú	<genexpr>zOpenSSL.<genexpr>(  óP   è è € ð #ð #àð 	
�Š�‰Œ�QŒ×ÒÑÔð#ð #ð #ð #ð #ð #rI   úecparam -list_curvesú
c                 óÞ   — t          d¦  «        }|                     ¦   «         d                              d¦  «        }|g d¢k    rd                     |¦  «        S d                     |¦  «        S )NÚversionr   ú.)Ú1Ú0rù  z-{0}z-ecdsa-with-{0})r^   rT   Úformat)rk   Ú	hash_nameÚvÚvss       rJ   Úget_openssl_messagedigest_argz%OpenSSL.get_openssl_messagedigest_arg-  se   € Ý˜	Ñ"Ô"ˆð �WŠW‰YŒY�qŒ\×Ò Ñ$Ô$ˆØ���Ò Ð Ø—=’= Ñ+Ô+Ð+à$×+Ò+¨IÑ6Ô6Ð6rI   Ú	secp112r1z)system openssl does not support secp112r1©Úreasonc                 ó6   — |                       t          ¦  «        S r†   )Údo_test_from_opensslr    rˆ   s    rJ   Útest_from_openssl_secp112r1z#OpenSSL.test_from_openssl_secp112r1;  ó   € ð ×(Ò(­Ñ3Ô3Ð3rI   Ú	secp112r2z)system openssl does not support secp112r2c                 ó6   — |                       t          ¦  «        S r†   )r  r!   rˆ   s    rJ   Útest_from_openssl_secp112r2z#OpenSSL.test_from_openssl_secp112r2C  r  rI   Ú	secp128r1z)system openssl does not support secp128r1c                 ó6   — |                       t          ¦  «        S r†   )r  r"   rˆ   s    rJ   Útest_from_openssl_secp128r1z#OpenSSL.test_from_openssl_secp128r1K  r  rI   Ú	secp160r1z)system openssl does not support secp160r1c                 ó6   — |                       t          ¦  «        S r†   )r  r#   rˆ   s    rJ   Útest_from_openssl_secp160r1z#OpenSSL.test_from_openssl_secp160r1S  r  rI   Ú
prime192v1ú*system openssl does not support prime192v1c                 ó6   — |                       t          ¦  «        S r†   ©r  r$   rˆ   s    rJ   Útest_from_openssl_nist192pz"OpenSSL.test_from_openssl_nist192p[  ó   € ð ×(Ò(­Ñ2Ô2Ð2rI   c                 ó8   — |                       t          d¦  «        S ©NÚSHA256r  rˆ   s    rJ   Ú!test_from_openssl_nist192p_sha256z)OpenSSL.test_from_openssl_nist192p_sha256c  ó   € ð ×(Ò(­°8Ñ<Ô<Ð<rI   Ú	secp224r1z)system openssl does not support secp224r1c                 ó6   — |                       t          ¦  «        S r†   )r  r%   rˆ   s    rJ   Útest_from_openssl_nist224pz"OpenSSL.test_from_openssl_nist224pk  r  rI   Ú
prime256v1z*system openssl does not support prime256v1c                 ó6   — |                       t          ¦  «        S r†   ©r  r&   rˆ   s    rJ   Útest_from_openssl_nist256pz"OpenSSL.test_from_openssl_nist256ps  r  rI   c                 ó8   — |                       t          d¦  «        S ©NÚSHA384r  rˆ   s    rJ   Ú!test_from_openssl_nist256p_sha384z)OpenSSL.test_from_openssl_nist256p_sha384{  r  rI   c                 ó8   — |                       t          d¦  «        S ©NÚSHA512r  rˆ   s    rJ   Ú!test_from_openssl_nist256p_sha512z)OpenSSL.test_from_openssl_nist256p_sha512ƒ  r  rI   Ú	secp384r1z)system openssl does not support secp384r1c                 ó6   — |                       t          ¦  «        S r†   )r  r'   rˆ   s    rJ   Útest_from_openssl_nist384pz"OpenSSL.test_from_openssl_nist384p‹  r  rI   Ú	secp521r1z)system openssl does not support secp521r1c                 ó6   — |                       t          ¦  «        S r†   )r  r(   rˆ   s    rJ   Útest_from_openssl_nist521pz"OpenSSL.test_from_openssl_nist521p“  r  rI   Ú	secp256k1z)system openssl does not support secp256k1c                 ó6   — |                       t          ¦  «        S r†   )r  r)   rˆ   s    rJ   Útest_from_openssl_secp256k1z#OpenSSL.test_from_openssl_secp256k1›  r  rI   ÚbrainpoolP160r1z/system openssl does not support brainpoolP160r1c                 ó6   — |                       t          ¦  «        S r†   )r  r*   rˆ   s    rJ   Ú!test_from_openssl_brainpoolp160r1z)OpenSSL.test_from_openssl_brainpoolp160r1£  ó   € ð ×(Ò(­Ñ9Ô9Ð9rI   ÚbrainpoolP192r1z/system openssl does not support brainpoolP192r1c                 ó6   — |                       t          ¦  «        S r†   )r  r+   rˆ   s    rJ   Ú!test_from_openssl_brainpoolp192r1z)OpenSSL.test_from_openssl_brainpoolp192r1«  r5  rI   ÚbrainpoolP224r1z/system openssl does not support brainpoolP224r1c                 ó6   — |                       t          ¦  «        S r†   )r  r,   rˆ   s    rJ   Ú!test_from_openssl_brainpoolp224r1z)OpenSSL.test_from_openssl_brainpoolp224r1³  r5  rI   ÚbrainpoolP256r1z/system openssl does not support brainpoolP256r1c                 ó6   — |                       t          ¦  «        S r†   )r  r-   rˆ   s    rJ   Ú!test_from_openssl_brainpoolp256r1z)OpenSSL.test_from_openssl_brainpoolp256r1»  r5  rI   ÚbrainpoolP320r1z/system openssl does not support brainpoolP320r1c                 ó6   — |                       t          ¦  «        S r†   )r  r.   rˆ   s    rJ   Ú!test_from_openssl_brainpoolp320r1z)OpenSSL.test_from_openssl_brainpoolp320r1Ã  r5  rI   ÚbrainpoolP384r1z/system openssl does not support brainpoolP384r1c                 ó6   — |                       t          ¦  «        S r†   )r  r/   rˆ   s    rJ   Ú!test_from_openssl_brainpoolp384r1z)OpenSSL.test_from_openssl_brainpoolp384r1Ë  r5  rI   ÚbrainpoolP512r1z/system openssl does not support brainpoolP512r1c                 ó6   — |                       t          ¦  «        S r†   )r  r0   rˆ   s    rJ   Ú!test_from_openssl_brainpoolp512r1z)OpenSSL.test_from_openssl_brainpoolp512r1Ó  r5  rI   ÚbrainpoolP160t1z/system openssl does not support brainpoolP160t1c                 ó6   — |                       t          ¦  «        S r†   )r  r1   rˆ   s    rJ   Ú!test_from_openssl_brainpoolp160t1z)OpenSSL.test_from_openssl_brainpoolp160t1Û  r5  rI   ÚbrainpoolP192t1z/system openssl does not support brainpoolP192t1c                 ó6   — |                       t          ¦  «        S r†   )r  r2   rˆ   s    rJ   Ú!test_from_openssl_brainpoolp192t1z)OpenSSL.test_from_openssl_brainpoolp192t1ã  r5  rI   ÚbrainpoolP224t1z/system openssl does not support brainpoolP224t1c                 ó6   — |                       t          ¦  «        S r†   )r  r3   rˆ   s    rJ   Ú!test_from_openssl_brainpoolp224t1z)OpenSSL.test_from_openssl_brainpoolp224t1ë  r5  rI   ÚbrainpoolP256t1z/system openssl does not support brainpoolP256t1c                 ó6   — |                       t          ¦  «        S r†   )r  r4   rˆ   s    rJ   Ú!test_from_openssl_brainpoolp256t1z)OpenSSL.test_from_openssl_brainpoolp256t1ó  r5  rI   ÚbrainpoolP320t1z/system openssl does not support brainpoolP320t1c                 ó6   — |                       t          ¦  «        S r†   )r  r5   rˆ   s    rJ   Ú!test_from_openssl_brainpoolp320t1z)OpenSSL.test_from_openssl_brainpoolp320t1û  r5  rI   ÚbrainpoolP384t1z/system openssl does not support brainpoolP384t1c                 ó6   — |                       t          ¦  «        S r†   )r  r6   rˆ   s    rJ   Ú!test_from_openssl_brainpoolp384t1z)OpenSSL.test_from_openssl_brainpoolp384t1  r5  rI   ÚbrainpoolP512t1z/system openssl does not support brainpoolP512t1c                 ó6   — |                       t          ¦  «        S r†   )r  r7   rˆ   s    rJ   Ú!test_from_openssl_brainpoolp512t1z)OpenSSL.test_from_openssl_brainpoolp512t1  r5  rI   ÚSHA1c           
      óò  — |j         }|sJ ‚|                      |¦  «        }t          j                             d¦  «        rt          j        d¦  «         t          j        d¦  «         t          d|z  ¦  «         t          d¦  «         d}t          dd¦  «        5 }| 
                    |¦  «         d d d ¦  «         n# 1 swxY w Y   t          d|z  ¦  «         t          d|z  ¦  «         t          d	d
¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j        |¦  «        }t          dd
¦  «        5 }|                     ¦   «         }	d d d ¦  «         n# 1 swxY w Y   |                      |                     |	|t!          t"          j        |¦  «        t&          ¬¦  «        ¦  «         t          d¦  «        5 }|                     ¦   «         }
d d d ¦  «         n# 1 swxY w Y   t)          j        |
¦  «        }|                     |t!          t"          j        |¦  «        ¬¦  «        }|                      |                     ||t!          t"          j        |¦  «        ¬¦  «        ¦  «         t          d¦  «         t          dd
¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   t)          j        |¦  «        }|                      ||¦  «         d S )NÚtz+ecparam -name %s -genkey -out t/privkey.pemz.ec -in t/privkey.pem -pubout -out t/pubkey.pemr‹   ú
t/data.txtÚwbz6dgst %s -sign t/privkey.pem -out t/data.sig t/data.txtz=dgst %s -verify t/pubkey.pem -signature t/data.sig t/data.txtút/pubkey.pemÚrbú
t/data.sig)rj  r  út/privkey.pemrk  zJpkcs8 -topk8 -nocrypt -in t/privkey.pem -outform pem -out t/privkey-p8.pemút/privkey-p8.pem)Úopenssl_namerþ  ÚosÚpathÚisdirÚshutilÚrmtreeÚmkdirr^   ÚopenÚwriteÚreadr   rº   rf   rg   r   rx   Únewr   r   re   r   )rk   r•   rû  Ú	curvenameÚmdargrn   r¤  Ú
pubkey_pemræ   r  Úfprå   ro   Úprivkey_p8_pemÚ
sk_from_p8s                  rJ   r  zOpenSSL.do_test_from_openssl  sò  € ØÔ&ˆ	ØÐÐˆyð ×2Ò2°9Ñ=Ô=ˆÝŒ7�=Š=˜ÑÔð 	ÝŒM˜#ÑÔÐÝ
Œ�‰ŒˆÝÐAÀIÑMÑNÔNÐNÝÐDÑEÔEÐEØˆÝ�, Ñ%Ô%ð 	¨Ø�GŠG�D‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	åØDÀuÑLñ	
ô 	
ð 	
õ 	ØKØññ	
ô 	
ð 	
õ �. $Ñ'Ô'ð 	"¨1ØŸš™œˆJð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"åÔ" :Ñ.Ô.ˆÝ�, Ñ%Ô%ð 	¨Ø—f’f‘h”hˆGð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à�ŠØ�IŠIØØÝ ¥¤¨iÑ8Ô8Ý'ð	 ñ ô ñ	
ô 	
ð 	
õ �/Ñ"Ô"ð 	 aØ—’‘”ˆBð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	åÔ  Ñ$Ô$ˆØ�gŠg�d¥W­W¬[¸)Ñ%DÔ%DˆgÑEÔEˆØ�ŠØ�IŠI�c˜4­'µ'´+¸yÑ*IÔ*IˆIÑJÔJñ	
ô 	
ð 	
õ 	ðCñ	
ô 	
ð 	
õ Ð$ dÑ+Ô+ð 	&¨qØŸVšV™XœXˆNð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&åÔ(¨Ñ8Ô8ˆ
Ø×Ò˜˜ZÑ(Ô(Ð(Ð(Ð(sZ   ÂB=Â=CÃCÃ<DÄD!Ä$D!ÅE-Å-E1Å4E1ÇG1Ç1G5Ç8G5Ê!KËKË	Kc                 ó:   — |                       t          ¦  «         d S r†   )Údo_test_to_opensslr    rˆ   s    rJ   Útest_to_openssl_secp112r1z!OpenSSL.test_to_openssl_secp112r1G  ó   € ð 	×Ò¥	Ñ*Ô*Ð*Ð*Ð*rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r!   rˆ   s    rJ   Útest_to_openssl_secp112r2z!OpenSSL.test_to_openssl_secp112r2O  r{  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r"   rˆ   s    rJ   Útest_to_openssl_secp128r1z!OpenSSL.test_to_openssl_secp128r1W  r{  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r#   rˆ   s    rJ   Útest_to_openssl_secp160r1z!OpenSSL.test_to_openssl_secp160r1_  r{  rI   c                 ó:   — |                       t          ¦  «         d S r†   ©ry  r$   rˆ   s    rJ   Útest_to_openssl_nist192pz OpenSSL.test_to_openssl_nist192pg  ó   € ð 	×Ò¥Ñ)Ô)Ð)Ð)Ð)rI   c                 ó<   — |                       t          d¦  «         d S r  rƒ  rˆ   s    rJ   Útest_to_openssl_nist192p_sha256z'OpenSSL.test_to_openssl_nist192p_sha256o  ó    € ð 	×Ò¥¨(Ñ3Ô3Ð3Ð3Ð3rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r%   rˆ   s    rJ   Útest_to_openssl_nist224pz OpenSSL.test_to_openssl_nist224pw  r…  rI   c                 ó:   — |                       t          ¦  «         d S r†   ©ry  r&   rˆ   s    rJ   Útest_to_openssl_nist256pz OpenSSL.test_to_openssl_nist256p  r…  rI   c                 ó<   — |                       t          d¦  «         d S r"  rŒ  rˆ   s    rJ   Útest_to_openssl_nist256p_sha384z'OpenSSL.test_to_openssl_nist256p_sha384‡  rˆ  rI   c                 ó<   — |                       t          d¦  «         d S r&  rŒ  rˆ   s    rJ   Útest_to_openssl_nist256p_sha512z'OpenSSL.test_to_openssl_nist256p_sha512�  rˆ  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r'   rˆ   s    rJ   Útest_to_openssl_nist384pz OpenSSL.test_to_openssl_nist384p—  r…  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r(   rˆ   s    rJ   Útest_to_openssl_nist521pz OpenSSL.test_to_openssl_nist521pŸ  r…  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r)   rˆ   s    rJ   Útest_to_openssl_secp256k1z!OpenSSL.test_to_openssl_secp256k1§  r{  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r*   rˆ   s    rJ   Útest_to_openssl_brainpoolp160r1z'OpenSSL.test_to_openssl_brainpoolp160r1¯  ó   € ð 	×Ò¥Ñ0Ô0Ð0Ð0Ð0rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r+   rˆ   s    rJ   Útest_to_openssl_brainpoolp192r1z'OpenSSL.test_to_openssl_brainpoolp192r1·  rš  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r,   rˆ   s    rJ   Útest_to_openssl_brainpoolp224r1z'OpenSSL.test_to_openssl_brainpoolp224r1¿  rš  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r-   rˆ   s    rJ   Útest_to_openssl_brainpoolp256r1z'OpenSSL.test_to_openssl_brainpoolp256r1Ç  rš  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r.   rˆ   s    rJ   Útest_to_openssl_brainpoolp320r1z'OpenSSL.test_to_openssl_brainpoolp320r1Ï  rš  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r/   rˆ   s    rJ   Útest_to_openssl_brainpoolp384r1z'OpenSSL.test_to_openssl_brainpoolp384r1×  rš  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r0   rˆ   s    rJ   Útest_to_openssl_brainpoolp512r1z'OpenSSL.test_to_openssl_brainpoolp512r1ß  rš  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r1   rˆ   s    rJ   Útest_to_openssl_brainpoolp160t1z'OpenSSL.test_to_openssl_brainpoolp160t1ç  rš  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r2   rˆ   s    rJ   Útest_to_openssl_brainpoolp192t1z'OpenSSL.test_to_openssl_brainpoolp192t1ï  rš  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r3   rˆ   s    rJ   Útest_to_openssl_brainpoolp224t1z'OpenSSL.test_to_openssl_brainpoolp224t1÷  rš  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r4   rˆ   s    rJ   Útest_to_openssl_brainpoolp256t1z'OpenSSL.test_to_openssl_brainpoolp256t1ÿ  rš  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r5   rˆ   s    rJ   Útest_to_openssl_brainpoolp320t1z'OpenSSL.test_to_openssl_brainpoolp320t1  rš  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r6   rˆ   s    rJ   Útest_to_openssl_brainpoolp384t1z'OpenSSL.test_to_openssl_brainpoolp384t1  rš  rI   c                 ó:   — |                       t          ¦  «         d S r†   )ry  r7   rˆ   s    rJ   Útest_to_openssl_brainpoolp512t1z'OpenSSL.test_to_openssl_brainpoolp512t1  rš  rI   c                 óV  — |j         }|sJ ‚|                      |¦  «        }t          j                             d¦  «        rt          j        d¦  «         t          j        d¦  «         t          j	        |¬¦  «        }| 
                    ¦   «         }d}t          dd¦  «        5 }|                     |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          dd¦  «        5 }|                     |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   |                     |t!          t"          j        |¦  «        t&          ¬¦  «        }	t          dd¦  «        5 }|                     |	¦  «         d d d ¦  «         n# 1 swxY w Y   t          d	d¦  «        5 }|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   t          d
d¦  «        5 }|                     |dz   ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t*          t,          d|z  ¦  «         t-          d|z  ¦  «         t          dd¦  «        5 }|                     |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t-          d|z  ¦  «         t-          d|z  ¦  «         t          dd¦  «        5 }|                     |                     d¬¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   t-          d|z  ¦  «         t-          d|z  ¦  «         t          dd¦  «        5 }|                     |                     d¬¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   t-          d|z  ¦  «         t-          d|z  ¦  «         t          dd¦  «        5 }|                     |                     dd¬¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   t-          d|z  ¦  «         t-          d|z  ¦  «         d S )Nr_  r®   r‹   út/pubkey.derra  rb  )rj  r  rd  r`  út/baddata.txtó   corruptzMdgst %s -verify t/pubkey.der -keyform DER -signature t/data.sig t/baddata.txtzJdgst %s -verify t/pubkey.der -keyform DER -signature t/data.sig t/data.txtre  z7dgst %s -sign t/privkey.pem -out t/data.sig2 t/data.txtz>dgst %s -verify t/pubkey.pem -signature t/data.sig2 t/data.txtzt/privkey-explicit.pemÚexplicit)Úcurve_parameters_encodingz@dgst %s -sign t/privkey-explicit.pem -out t/data.sig2 t/data.txtrf  Úpkcs8)rú  z:dgst %s -sign t/privkey-p8.pem -out t/data.sig3 t/data.txtz>dgst %s -verify t/pubkey.pem -signature t/data.sig3 t/data.txtzt/privkey-p8-explicit.pem)rú  rº  zCdgst %s -sign t/privkey-p8-explicit.pem -out t/data.sig3 t/data.txt)rg  rþ  rh  ri  rj  rk  rl  rm  r   rc   rd   rn  ro  r»   r“   re   r   rx   rq  r   rh   rD   r^   )
rk   r•   rû  rr  rs  rå   ræ   rn   r¤  r  s
             rJ   ry  zOpenSSL.do_test_to_openssl  st  € ØÔ&ˆ	ØÐÐˆyð ×2Ò2°9Ñ=Ô=ˆÝŒ7�=Š=˜ÑÔð 	ÝŒM˜#ÑÔÐÝ
Œ�‰ŒˆÝÔ  uÐ-Ñ-Ô-ˆØ×!Ò!Ñ#Ô#ˆØˆÝ�. $Ñ'Ô'ð 	!¨1Ø�GŠG�B—I’I‘K”KÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!å�. $Ñ'Ô'ð 	!¨1Ø�GŠG�B—I’I‘K”KÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!à—'’'ØÝ�Wœ[¨)Ñ4Ô4Ý#ð ñ 
ô 
ˆõ �, Ñ%Ô%ð 	¨Ø�GŠG�GÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	å�, Ñ%Ô%ð 	¨Ø�GŠG�D‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	å�/ 4Ñ(Ô(ð 	'¨AØ�GŠG�D˜:Ñ%Ñ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	×ÒÝÝØ[Øññ	
ô 	
ð 	
õ 	ØXØññ	
ô 	
ð 	
õ
 �/ 4Ñ(Ô(ð 	!¨AØ�GŠG�B—I’I‘K”KÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!åØEÈÑMñ	
ô 	
ð 	
õ 	ØLØññ	
ô 	
ð 	
õ
 Ð*¨DÑ1Ô1ð 	E°QØ�GŠG�B—I’I¸
�IÑCÔCÑDÔDÐDð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	EåØNØññ	
ô 	
ð 	
õ 	ØLØññ	
ô 	
ð 	
õ
 Ð$ dÑ+Ô+ð 	/¨qØ�GŠG�B—I’I W�IÑ-Ô-Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/åØHØññ	
ô 	
ð 	
õ 	ØLØññ	
ô 	
ð 	
õ
 Ð-¨tÑ4Ô4ð 	¸Ø�GŠGØ—	’	 ÀJ�	ÑOÔOñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ 	ØQØññ	
ô 	
ð 	
õ 	ØLØññ	
ô 	
ð 	
ð 	
ð 	
s¢   Â#(CÃCÃCÃ2(D&Ä&D*Ä-D*Å6FÆFÆFÆ3GÇGÇGÇ0HÈHÈHÉ&(JÊJÊ!JË*LÌLÌLÍ*NÎNÎNÏ+O:Ï:O>ÐO>z-rawinzpkeyutl -helpc              #   ó`   K  — | ])}|t          d ¦  «        v ¯|                     ¦   «         V — Œ*dS )zlist -public-key-methodsN)r^   Úlowerrï  s     rJ   rñ  zOpenSSL.<genexpr>w  sJ   è è € ð *ð *àØ�Ð$>Ñ?Ô?Ð?Ð?ð —’‘	”	à?Ð?Ð?Ð?ð*ð *rI   )ÚED25519ÚED448c                 óŒ  — t           j                             d¦  «        rt          j        d¦  «         t          j        d¦  «         t          j        |¬¦  «        }|                     ¦   «         }d}t          dd¦  «        5 }| 
                    |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          dd¦  «        5 }| 
                    |                     ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   |                     |¦  «        }t          dd¦  «        5 }| 
                    |¦  «         d d d ¦  «         n# 1 swxY w Y   t          dd¦  «        5 }| 
                    |¦  «         d d d ¦  «         n# 1 swxY w Y   t          d	d¦  «        5 }| 
                    |d
z   ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          ¦  «        5  t!          d¦  «         d d d ¦  «         n# 1 swxY w Y   t!          d¦  «         t          j        d¦  «         d S )Nr_  r®   r‹   r¶  ra  rb  rd  r`  r·  r¸  zWpkeyutl -verify -pubin -inkey t/pubkey.pem -rawin -in t/baddata.txt -sigfile t/data.sigzTpkeyutl -verify -pubin -inkey t/pubkey.pem -rawin -in t/data.txt -sigfile t/data.sig)rh  ri  rj  rk  rl  rm  r   rc   rd   rn  ro  r»   r“   re   rh   rD   r^   )rk   r•   rå   ræ   rn   r¤  ro   s          rJ   Údo_eddsa_test_to_opensslz OpenSSL.do_eddsa_test_to_openssl  su  € ÝŒ7�=Š=˜ÑÔð 	ÝŒM˜#ÑÔÐÝ
Œ�‰ŒˆåÔ  uÐ-Ñ-Ô-ˆØ×!Ò!Ñ#Ô#ˆàˆÝ�. $Ñ'Ô'ð 	!¨1Ø�GŠG�B—I’I‘K”KÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!å�. $Ñ'Ô'ð 	!¨1Ø�GŠG�B—I’I‘K”KÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð �gŠg�d‰mŒmˆå�, Ñ%Ô%ð 	¨Ø�GŠG�C‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	å�, Ñ%Ô%ð 	¨Ø�GŠG�D‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	å�/ 4Ñ(Ô(ð 	'¨AØ�GŠG�D˜:Ñ%Ñ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð ×Ò�Ñ/Ô/ð 	ð 	Ýð8ñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ
 	ð1ñ	
ô 	
ð 	
õ
 	Œ�cÑÔÐÐÐsl   Â(B7Â7B;Â>B;Ã(DÄD
ÄD
Ä6EÅEÅEÅ3FÆFÆFÆ0GÇGÇGÇ:HÈHÈHÚed25519z4system openssl does not support signing with Ed25519c                 ó6   — |                       t          ¦  «        S r†   )rÁ  r8   rˆ   s    rJ   Útest_to_openssl_ed25519zOpenSSL.test_to_openssl_ed25519¤  s   € ð ×,Ò,­WÑ5Ô5Ð5rI   Úed448z2system openssl does not support signing with Ed448c                 ó6   — |                       t          ¦  «        S r†   )rÁ  r9   rˆ   s    rJ   Útest_to_openssl_ed448zOpenSSL.test_to_openssl_ed448¬  s   € ð ×,Ò,­UÑ3Ô3Ð3rI   c                 ó>  — |j         }t          j                             d¦  «        rt	          j        d¦  «         t          j        d¦  «         d}t          d                     |¦  «        ¦  «         t          d¦  «         t          dd¦  «        5 }| 
                    |¦  «         d d d ¦  «         n# 1 swxY w Y   t          d¦  «         t          dd	¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          d
d	¦  «        5 }t          j        |                     ¦   «         ¦  «        }d d d ¦  «         n# 1 swxY w Y   |                      |j        |¦  «         |                     ||¦  «         t	          j        d¦  «         d S )Nr_  r‹   z6genpkey -algorithm {0} -outform PEM -out t/privkey.pemz=pkey -outform PEM -pubout -in t/privkey.pem -out t/pubkey.pemr`  ra  zHpkeyutl -sign -inkey t/privkey.pem -rawin -in t/data.txt -out t/data.sigrd  rc  rb  )Únamerh  ri  rj  rk  rl  rm  r^   rú  rn  ro  rp  r   rº   ÚassertIsr•   rg   )rk   r•   rr  rn   r¤  ro   ræ   s          rJ   Údo_eddsa_test_from_opensslz"OpenSSL.do_eddsa_test_from_openssl´  s7  € Ø”Jˆ	åŒ7�=Š=˜ÑÔð 	ÝŒM˜#ÑÔÐÝ
Œ�‰ŒˆàˆåØD×KÒKØñô ñ	
ô 	
ð 	
õ
 	ØKñ	
ô 	
ð 	
õ �, Ñ%Ô%ð 	¨Ø�GŠG�D‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	åð4ñ	
ô 	
ð 	
õ
 �, Ñ%Ô%ð 	¨Ø—&’&‘(”(ˆCð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	å�. $Ñ'Ô'ð 	1¨1ÝÔ& q§v¢v¡x¤xÑ0Ô0ˆBð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1ð 	�Š�b”h Ñ&Ô&Ð&à
�	Š	�#�tÑÔÐåŒ�cÑÔÐÐÐs6   ÂB4Â4B8Â;B8ÃC?Ã?DÄDÄ'EÅEÅEc                 ó6   — |                       t          ¦  «        S r†   )rË  r8   rˆ   s    rJ   Útest_from_openssl_ed25519z!OpenSSL.test_from_openssl_ed25519Ø  s   € ð ×.Ò.­wÑ7Ô7Ð7rI   c                 ó6   — |                       t          ¦  «        S r†   )rË  r9   rˆ   s    rJ   Útest_from_openssl_ed448zOpenSSL.test_from_openssl_ed448à  s   € ð ×.Ò.­uÑ5Ô5Ð5rI   N)r]  )LrE   rF   rG   Úsetr^   rT   ÚOPENSSL_SUPPORTED_CURVESrþ  ÚpytestÚmarkÚslowÚskipifr  r  r  r  r  r  r  r   r$  r(  r+  r.  r1  r4  r8  r;  r>  rA  rD  rG  rJ  rM  rP  rS  rV  rY  r\  r  rz  r}  r  r�  r„  r‡  rŠ  r�  r�  r‘  r“  r•  r—  r™  rœ  rž  r   r¢  r¤  r¦  r¨  rª  r¬  r®  r°  r²  r´  ry  ÚOPENSSL_SUPPORTED_TYPESrD   rÁ  rÄ  rÇ  rË  rÍ  rÏ  rH   rI   rJ   rê  rê    s�  € € € € € ð$  #˜sð #ð #à�Ð3Ñ4Ô4×:Ò:¸4Ñ@Ô@ð#ñ #ô #ñ  ô  Ðð
7ð 7ð 7ð „[ÔØ„[×ÒØÐ3Ð3Ø:ð ñ ô ð4ð 4ñ	ô ñ Ôð
4ð „[ÔØ„[×ÒØÐ3Ð3Ø:ð ñ ô ð4ð 4ñ	ô ñ Ôð
4ð „[ÔØ„[×ÒØÐ3Ð3Ø:ð ñ ô ð4ð 4ñ	ô ñ Ôð
4ð „[ÔØ„[×ÒØÐ3Ð3Ø:ð ñ ô ð4ð 4ñ	ô ñ Ôð
4ð „[ÔØ„[×ÒØÐ4Ð4Ø;ð ñ ô ð3ð 3ñ	ô ñ Ôð
3ð „[ÔØ„[×ÒØÐ4Ð4Ø;ð ñ ô ð=ð =ñ	ô ñ Ôð
=ð „[ÔØ„[×ÒØÐ3Ð3Ø:ð ñ ô ð3ð 3ñ	ô ñ Ôð
3ð „[ÔØ„[×ÒØÐ4Ð4Ø;ð ñ ô ð3ð 3ñ	ô ñ Ôð
3ð „[ÔØ„[×ÒØÐ4Ð4Ø;ð ñ ô ð=ð =ñ	ô ñ Ôð
=ð „[ÔØ„[×ÒØÐ4Ð4Ø;ð ñ ô ð=ð =ñ	ô ñ Ôð
=ð „[ÔØ„[×ÒØÐ3Ð3Ø:ð ñ ô ð3ð 3ñ	ô ñ Ôð
3ð „[ÔØ„[×ÒØÐ3Ð3Ø:ð ñ ô ð3ð 3ñ	ô ñ Ôð
3ð „[ÔØ„[×ÒØÐ3Ð3Ø:ð ñ ô ð4ð 4ñ	ô ñ Ôð
4ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð:ð :ñ	ô ñ Ôð
:ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð:ð :ñ	ô ñ Ôð
:ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð:ð :ñ	ô ñ Ôð
:ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð:ð :ñ	ô ñ Ôð
:ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð:ð :ñ	ô ñ Ôð
:ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð:ð :ñ	ô ñ Ôð
:ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð:ð :ñ	ô ñ Ôð
:ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð:ð :ñ	ô ñ Ôð
:ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð:ð :ñ	ô ñ Ôð
:ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð:ð :ñ	ô ñ Ôð
:ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð:ð :ñ	ô ñ Ôð
:ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð:ð :ñ	ô ñ Ôð
:ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð:ð :ñ	ô ñ Ôð
:ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð:ð :ñ	ô ñ Ôð
:ð2)ð 2)ð 2)ð 2)ðh „[ÔØ„[×ÒØÐ3Ð3Ø:ð ñ ô ð+ð +ñ	ô ñ Ôð
+ð „[ÔØ„[×ÒØÐ3Ð3Ø:ð ñ ô ð+ð +ñ	ô ñ Ôð
+ð „[ÔØ„[×ÒØÐ3Ð3Ø:ð ñ ô ð+ð +ñ	ô ñ Ôð
+ð „[ÔØ„[×ÒØÐ3Ð3Ø:ð ñ ô ð+ð +ñ	ô ñ Ôð
+ð „[ÔØ„[×ÒØÐ4Ð4Ø;ð ñ ô ð*ð *ñ	ô ñ Ôð
*ð „[ÔØ„[×ÒØÐ4Ð4Ø;ð ñ ô ð4ð 4ñ	ô ñ Ôð
4ð „[ÔØ„[×ÒØÐ3Ð3Ø:ð ñ ô ð*ð *ñ	ô ñ Ôð
*ð „[ÔØ„[×ÒØÐ4Ð4Ø;ð ñ ô ð*ð *ñ	ô ñ Ôð
*ð „[ÔØ„[×ÒØÐ4Ð4Ø;ð ñ ô ð4ð 4ñ	ô ñ Ôð
4ð „[ÔØ„[×ÒØÐ4Ð4Ø;ð ñ ô ð4ð 4ñ	ô ñ Ôð
4ð „[ÔØ„[×ÒØÐ3Ð3Ø:ð ñ ô ð*ð *ñ	ô ñ Ôð
*ð „[ÔØ„[×ÒØÐ3Ð3Ø:ð ñ ô ð*ð *ñ	ô ñ Ôð
*ð „[ÔØ„[×ÒØÐ3Ð3Ø:ð ñ ô ð+ð +ñ	ô ñ Ôð
+ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð1ð 1ñ	ô ñ Ôð
1ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð1ð 1ñ	ô ñ Ôð
1ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð1ð 1ñ	ô ñ Ôð
1ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð1ð 1ñ	ô ñ Ôð
1ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð1ð 1ñ	ô ñ Ôð
1ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð1ð 1ñ	ô ñ Ôð
1ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð1ð 1ñ	ô ñ Ôð
1ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð1ð 1ñ	ô ñ Ôð
1ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð1ð 1ñ	ô ñ Ôð
1ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð1ð 1ñ	ô ñ Ôð
1ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð1ð 1ñ	ô ñ Ôð
1ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð1ð 1ñ	ô ñ Ôð
1ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð1ð 1ñ	ô ñ Ôð
1ð „[ÔØ„[×ÒØÐ!9Ð9Ø@ð ñ ô ð1ð 1ñ	ô ñ Ôð
1ðS
ð S
ð S
ð S
ðj "˜c™eœeÐðØ�{�{ ?Ñ3Ô3Ð3Ð3Ø&) cð *ð *à-ð*ñ *ô *ñ 'ô 'Ð#øøð
 ð ð ð Øˆðøøøð!ð !ð !ðJ „[ÔØ„[×ÒØÐ0Ð0ØEð ñ ô ð6ð 6ñ	ô ñ Ôð
6ð „[ÔØ„[×ÒØÐ.Ð.ØCð ñ ô ð4ð 4ñ	ô ñ Ôð
4ð"ð "ð "ðH „[ÔØ„[×ÒØÐ0Ð0ØEð ñ ô ð8ð 8ñ	ô ñ Ôð
8ð „[ÔØ„[×ÒØÐ.Ð.ØCð ñ ô ð6ð 6ñ	ô ñ Ôð
6ð 6ð 6s   ñ"q5 ñ5q=ñ<q=rê  c                   ó  — e Zd Z ed„  ed¦  «                             d¦  «        D ¦   «         ¦  «        Zej         	                    devd¬¦  «        d„ ¦   «         Z
ej         	                    devd¬¦  «        d„ ¦   «         Zd	S )
ÚTooSmallCurvec              #   óp   K  — | ]1}|                      d ¦  «        d                              ¦   «         V — Œ2dS rì  rî  rï  s     rJ   rñ  zTooSmallCurve.<genexpr>ê  rò  rI   ró  rô  r  r  r   c                 ó  — t          j        t          ¬¦  «        }d}|                      t          ¦  «        5  |                     |t          t          j        d¦  «        t          d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr®   r‹   r  F©rj  r  r€  )
r   rc   r$   rh   r   re   r   rx   rq  r   )rk   rå   rn   s      rJ   Ú4test_sign_too_small_curve_dont_allow_truncate_raiseszBTooSmallCurve.test_sign_too_small_curve_dont_allow_truncate_raisesï  sÇ   € õ
 Ô ¥xÐ0Ñ0Ô0ˆØˆØ×Ò�~Ñ.Ô.ð 	ð 	Ø�GŠGØÝ ¥¤¨hÑ7Ô7Ý'Ø$ð	 ñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ·7A;Á;A?ÂA?c           	      ó¦  — t          j        t          ¬¦  «        }|                     ¦   «         }d}|                     |t          t          j        d¦  «        t          d¬¦  «        }|  	                    t          ¦  «        5  |                     ||t          t          j        d¦  «        t          d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr®   r‹   r  TrÛ  F)rj  r  r€  )r   rc   r$   rd   re   r   rx   rq  r   rh   r   rg   r   )rk   rå   ræ   rn   r  s        rJ   Ú6test_verify_too_small_curve_dont_allow_truncate_raiseszDTooSmallCurve.test_verify_too_small_curve_dont_allow_truncate_raisesþ  s  € õ
 Ô ¥xÐ0Ñ0Ô0ˆØ×!Ò!Ñ#Ô#ˆØˆØ—'’'ØÝ�Wœ[¨(Ñ3Ô3Ý#Øð	 ñ 
ô 
ˆð ×Ò�~Ñ.Ô.ð 	ð 	Ø�IŠIØØÝ ¥¤¨hÑ7Ô7Ý'Ø$ð ñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Â8CÃC
ÃC
N)rE   rF   rG   rÐ  r^   rT   rÑ  rÒ  rÓ  rÕ  rÜ  rÞ  rH   rI   rJ   rØ  rØ  é  sÝ   € € € € € Ø"˜sð #ð #à�Ð3Ñ4Ô4×:Ò:¸4Ñ@Ô@ð#ñ #ô #ñ  ô  Ðð
 „[×ÒØÐ4Ð4Ø;ð ñ ô ð	ð 	ñ	ô ð	ð „[×ÒØÐ4Ð4Ø;ð ñ ô ðð ñ	ô ðð ð rI   rØ  c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚDERc                 ó  — |                       t          j        d¦  «        d¦  «         |                       t          j        d¦  «        d¦  «         |                       t          j        d¦  «        d¦  «         |                       t          j        d¦  «        d¦  «         |                       t          j        d	¦  «        d
¦  «         d„ }|                        |d¦  «        d¦  «         |                        |d¦  «        d¦  «         |                        |d¦  «        d¦  «         |                        |d¦  «        d¦  «         |                        |d	¦  «        d¦  «         |                        |d¦  «        d¦  «         d S )Nr   s    r   s   é   s   é€   s    €rÚ  s    c                 óT   — t          j        t          j        | ¦  «        dz   ¦  «        S )NrÇ   )r@   Úremove_integerrH  )Úns    rJ   r¡   zDER.test_integer.<locals>.s  s#   € ÝÔ%¥cÔ&8¸Ñ&;Ô&;¸gÑ&EÑFÔFÐFrI   )r   rÇ   )r   rÇ   )râ  rÇ   )rã  rÇ   )rÚ  rÇ   ì	   Ò
~[~âeŠ;~p�d )rç  rÇ   )r   r@   rH  )rk   r¡   s     rJ   Útest_integerzDER.test_integer  s†  € Ø×Ò�Ô+¨AÑ.Ô.°Ñ@Ô@Ð@Ø×Ò�Ô+¨AÑ.Ô.°Ñ@Ô@Ð@Ø×Ò�Ô+¨CÑ0Ô0°/ÑBÔBÐBØ×Ò�Ô+¨CÑ0Ô0Ð2EÑFÔFÐFØ×Ò�Ô+¨CÑ0Ô0Ð2EÑFÔFÐFð	Gð 	Gð 	Gð 	×Ò˜˜˜1™œ˜|Ñ,Ô,Ð,Ø×Ò˜˜˜1™œ˜|Ñ,Ô,Ð,Ø×Ò˜˜˜3™œ Ñ0Ô0Ð0Ø×Ò˜˜˜3™œ Ñ0Ô0Ð0Ø×Ò˜˜˜3™œ Ñ0Ô0Ð0Ø×ÒØˆAÐ6Ñ7Ô7Ø?ñ	
ô 	
ð 	
ð 	
ð 	
rI   c                 ó  — |                       t          j        d¦  «        d¦  «         |                       t          j        d¦  «        d¦  «         |                       t          j        d¦  «        d¦  «         |                       t          j        d¦  «        d¦  «         d	D ]d}t          j        |¦  «        d
z   }t          j        |¦  «        \  }}|                       ||¦  «         |                       ||d …         d
¦  «         Œed S )Nr   rÃ  râ  ó   rã  s   � é‡  s   ƒ)r   r   rK   râ  rã  rë  rí   rî   ó   more)r   r@   Úencode_numberÚread_number©rk   ræ  ÚxÚn1Úllens        rJ   Útest_numberzDER.test_number,  s   € Ø×Ò�Ô*¨1Ñ-Ô-¨wÑ7Ô7Ð7Ø×Ò�Ô*¨3Ñ/Ô/°Ñ9Ô9Ð9Ø×Ò�Ô*¨3Ñ/Ô/°Ñ=Ô=Ð=Ø×Ò�Ô*¨;Ñ7Ô7¸ÑEÔEÐEð >ð 	0ð 	0ˆAÝÔ! !Ñ$Ô$ wÑ.ˆAÝ” qÑ)Ô)‰HˆB�Ø×Ò˜R Ñ#Ô#Ð#Ø×Ò˜Q˜t˜u˜uœX wÑ/Ô/Ð/Ð/ð		0ð 	0rI   c                 óT  — |                       t          j        d¦  «        d¦  «         |                       t          j        d¦  «        d¦  «         |                       t          j        d¦  «        d¦  «         |                       t          j        d¦  «        d¦  «         |                       t          j        d	¦  «        d
¦  «         |                       t          j        d¦  «        d¦  «         |                       t          j        d¦  «        d¦  «         |                       t          j        d¦  «        d¦  «         dD ]d}t          j        |¦  «        dz   }t          j        |¦  «        \  }}|                       ||¦  «         |                       ||d …         d¦  «         Œed S )Nr   rÃ  râ  rê  rã  s   �€r3  s   �ÿrÚ  s   ‚ é  s   ‚s   �›more)é›   rK   rö  s   �›)	r   r   rK   râ  rã  r3  rÚ  rõ  rö  rì  )r   r@   Úencode_lengthÚread_lengthrï  s        rJ   Útest_lengthzDER.test_length9  s‚  € Ø×Ò�Ô*¨1Ñ-Ô-¨wÑ7Ô7Ð7Ø×Ò�Ô*¨3Ñ/Ô/°Ñ9Ô9Ð9Ø×Ò�Ô*¨3Ñ/Ô/°Ñ=Ô=Ð=Ø×Ò�Ô*¨3Ñ/Ô/°Ñ=Ô=Ð=Ø×Ò�Ô*¨3Ñ/Ô/°ÑAÔAÐAØ×Ò�Ô*¨;Ñ7Ô7¸ÑIÔIÐIØ×Ò�œÐ)>Ñ?Ô?ÀÑJÔJÐJØ×Ò�Ô*¨3Ñ/Ô/°Ñ=Ô=Ð=Ø@ð 	0ð 	0ˆAÝÔ! !Ñ$Ô$ wÑ.ˆAÝ” qÑ)Ô)‰HˆB�Ø×Ò˜R Ñ#Ô#Ð#Ø×Ò˜Q˜t˜u˜uœX wÑ/Ô/Ð/Ð/ð		0ð 	0rI   c                 óè   — t          j        dd¦  «        dz   }|                      |d¦  «         t          j        |¦  «        \  }}|                      |d¦  «         |                      |d¦  «         d S )Ns   ABCs   DEFs   GHIs   0ABCDEFGHIs   ABCDEF)r@   ró   r   Úremove_sequence)rk   rð  Úx1Úrests       rJ   Útest_sequencezDER.test_sequenceH  sv   € ÝÔ ¨Ñ/Ô/°&Ñ8ˆØ×Ò˜Ð0Ñ1Ô1Ð1ÝÔ& qÑ)Ô)‰ˆˆDØ×Ò˜˜YÑ'Ô'Ð'Ø×Ò˜˜vÑ&Ô&Ð&Ð&Ð&rI   c                 ó  — t          j        dt          j        ¦  «        }|                      t          |¦  «        d¦  «         t          j        dt          d¦  «        ¦  «        }|                      t          |¦  «        d¦  «         d S )Nr   s   a00706052b81040021r   s   0102030a0b0cs   a1060102030a0b0c)r@   rQ  r%   Úencoded_oidr   r   r   )rk   rð  s     rJ   Útest_constructedzDER.test_constructedO  sq   € ÝÔ" 1¥hÔ&:Ñ;Ô;ˆØ×Ò� ™œÐ%@ÑAÔAÐAÝÔ" 1¥i°Ñ&@Ô&@ÑAÔAˆØ×Ò� ™œÐ%>Ñ?Ô?Ð?Ð?Ð?rI   N)rE   rF   rG   rè  ró  rù  rþ  r  rH   rI   rJ   rà  rà    sd   € € € € € ð
ð 
ð 
ð*0ð 0ð 0ð0ð 0ð 0ð'ð 'ð 'ð@ð @ð @ð @ð @rI   rà  c                   ó®   — e Zd Zej        j        d„ ¦   «         Zd„ Z ed
i e	¤Ž e
 ej        dddz  ¬¦  «        ¦  «        d„ ¦   «         ¦   «         Zd„ Zd	S )ÚUtilc                 ó:  — t           j        }t          d¦  «        D ]?}d|z  }dD ]5} |||¦  «        }|                      d|cxk    o|k     nc d||f¦  «         Œ6Œ@|                      d |dt
          j        ¦  «        z                       ¦   «         d¦  «         d S )Niè  úseed-%d)éþ   r3  rÚ  i  i  éÿÿ  é  r   z%xr”   s8   6fa59d73bf0446ae8743cf748fc5ac11d5585a90356417e97155c3bc)r   r’   Úrangerf   r   r%   r|   Úencode)rk   ÚttarØ  r”   r|   ræ  s         rJ   Útest_trytryagainzUtil.test_trytryagainW  sË   € åÔ3ˆÝ�t‘”ð 	?ð 	?ˆAØ˜q‘=ˆDðð 
?ð 
?�ð �C˜˜eÑ$Ô$�Ø—’  Q  ¢ ¨¢   °°A°u°Ñ>Ô>Ð>Ð>ð
?ð 	×ÒØ�S�S˜¥¤Ñ0Ô0Ñ1×9Ò9Ñ;Ô;ØGñ	
ô 	
ð 	
ð 	
ð 	
rI   c                 óº   — t           j        }d}d} |||¦  «        }t          j        dk     r|                      |d¦  «         d S |                      |d¦  «         d S )Nr  s   text)r¯   r   éä   é   )r   r’   ÚsysÚversion_infor   )rk   r  r|   r”   ræ  s        rJ   Útest_trytryagain_singlezUtil.test_trytryagain_singlem  sk   € ÝÔ3ˆØˆØˆØˆC��eÑÔˆåÔ˜fÒ$Ð$Ø×Ò˜Q Ñ$Ô$Ð$Ð$Ð$à×Ò˜Q Ñ#Ô#Ð#Ð#Ð#rI   r   r  r%  )Ú	min_valueÚ	max_valuec                 ó¸   — t          j        d|z  ¦  «        }dD ]?}t          j        ||¬¦  «        }|                      d|cxk    o|k     nc d||f¦  «         Œ@d S )Nr  )r  r3  rÚ  r  r  r¤   r   )r   ÚPRNGÚ	randrangerf   )rk   rØ  r¥   r|   ræ  s        rJ   Útest_randrangezUtil.test_randrangex  sy   € õ
 ”)˜I¨™MÑ*Ô*ˆð
ð 		;ð 		;ˆEõ ”˜u¨gÐ6Ñ6Ô6ˆAØ�OŠO˜A ˜N˜NšN˜N UšN˜N˜N˜N¨Q°°5¨MÑ:Ô:Ð:Ð:ð		;ð 		;rI   c                 óŠ  — d}t          d„ t          d|¦  «        D ¦   «         ¦  «        }d|vsJ ‚||vsJ ‚t          d¦  «        D ],}d|z  }t          j        ||¦  «        }||xx         dz  cc<   Œ-|                      ||dz
           ¦  «         t          d|¦  «        D ]"}t          d|d||         d	z  z  fz  ¦  «         Œ#d S )
Nr  c                 ó   — g | ]}|d f‘ŒS )r   rH   )rt  rØ  s     rJ   rv  z2Util.OFF_test_prove_uniformity.<locals>.<listcomp>‹  s   € Ð7Ð7Ð7 !˜˜1�vÐ7Ð7Ð7rI   r   r   i@B r  z%3d: %sÚ*éd   )Údictr	  r   r’   rf   Úprint)rk   r|   ÚcountsrØ  r”   ræ  s         rJ   ÚOFF_test_prove_uniformityzUtil.OFF_test_prove_uniformity‰  sõ   € ØˆÝÐ7Ð7¥u¨Q°¡¤Ð7Ñ7Ô7Ñ8Ô8ˆØ˜ˆˆˆˆØ˜FÐ"Ð"Ð"Ð"Ý�w‘”ð 	ð 	ˆAØ˜q‘=ˆDÝÔ5°d¸EÑBÔBˆAØ�1ˆIˆIŒI˜‰NˆIˆI‰IˆIà�Š˜˜u q™yÔ)Ñ*Ô*Ð*Ý�q˜%‘”ð 	=ð 	=ˆAÝ�)˜q #¨°¬°cÑ)9Ñ":Ð;Ñ;Ñ<Ô<Ð<Ð<ð	=ð 	=rI   NrH   )rE   rF   rG   rÒ  rÓ  rÔ  r  r  r
   ÚHYP_SETTINGSr	   ÚstÚintegersr  r   rH   rI   rJ   r  r  V  s§   € € € € € Ø„[Ôð
ð 
ñ Ôð
ð*	$ð 	$ð 	$ð €XÐÐ�ÐÐØ
€Uˆ;ˆ2Œ; ¨b°#©gÐ6Ñ6Ô6Ñ7Ô7ð;ð ;ñ 8Ô7ñ Ôð;ð=ð =ð =ð =ð =rI   r  c                   ót   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚRFC6979c                 ó„   — t          j        |                     ¦   «         |||¦  «        }|                      ||¦  «         d S r†   )rA   rz   r|   r   )rk   r{   r€   ÚhshÚ	hash_funcÚexpectedÚactuals          rJ   Ú_dozRFC6979._doš  s>   € ÝÔ# I§O¢OÑ$5Ô$5°v¸yÈ#ÑNÔNˆØ×Ò˜ 6Ñ*Ô*Ð*Ð*Ð*rI   c           
      óâ   — |                       t          j        t          dd¦  «        t	          j        d¦  «                             ¦   «         t          j        t          dd¦  «        ¬¦  «         dS )z‘RFC doesn't contain test vectors for SECP256k1 used in bitcoin.
        This vector has been computed by Golang reference implementation instead.rs   rt   ó   sampleÚ@8fa1f95d514760e498f28957b824ee6ec39ed64826ff4fecc2b5739ec45b91cd©r{   r€   r'  r(  r)  N©r+  r)   r{   rv   rx   ry   r}   rˆ   s    rJ   Útest_SECP256k1zRFC6979.test_SECP256k1ž  sn   € ð 	�ŠÝÔ)ÝÐ9¸2Ñ>Ô>Ý”˜yÑ)Ô)×0Ò0Ñ2Ô2Ý”nÝØRØñô ð 	ñ 		
ô 		
ð 		
ð 		
ð 		
rI   c           
      óâ   — |                       t          j        t          dd¦  «        t	          j        d¦  «                             ¦   «         t          j        t          dd¦  «        ¬¦  «         d S )NÚ@cca9fbcc1b41e5a95d369eaa6ddcff73b61a4efaa279cfc6567e8daa39cbaf50rt   r-  Ú@2df40ca70e639d89528a6b670d9d48d9165fdc0febc0974056bdce192b8e16a3r/  r0  rˆ   s    rJ   Útest_SECP256k1_2zRFC6979.test_SECP256k1_2¬  ss   € Ø�ŠÝÔ)ÝØRØñô õ ”˜yÑ)Ô)×0Ò0Ñ2Ô2Ý”nÝØRØñô ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rI   c                 óª   — |                       t          j        dt          j        d¦  «                             ¦   «         t          j        d¬¦  «         d S )Nr   ó   Satoshi Nakamotol   ]âiíHsiäNPIúz$Nkxke’}¶Š r/  ©r+  r)   r{   rx   ry   r}   rˆ   s    rJ   Útest_SECP256k1_3zRFC6979.test_SECP256k1_3»  sR   € Ø�ŠÝÔ)ØÝ”Ð2Ñ3Ô3×:Ò:Ñ<Ô<Ý”nØWð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rI   c                 óª   — |                       t          j        dt          j        d¦  «                             ¦   «         t          j        d¬¦  «         d S )Nr   sJ   All those moments will be lost in time, like tears in rain. Time to die...l   ³V1ujcC†X±x�i¦
nHî0G<›VÝHkª8r/  r8  rˆ   s    rJ   Útest_SECP256k1_4zRFC6979.test_SECP256k1_4Ä  sS   € Ø�ŠÝÔ)ØÝ”Ø]ñô çŠf‰hŒhÝ”nØWð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rI   c                 óª   — |                       t          j        dt          j        d¦  «                             ¦   «         t          j        d¬¦  «         d S )Nl   @Al 3z’~»i«9nWº~ÿÿÿÿÿÿÿÿ r7  l   �oTùP§*(9ŠLŸM$d©õh©W5DÞv—8°M¡3r/  r8  rˆ   s    rJ   Útest_SECP256k1_5zRFC6979.test_SECP256k1_5Ï  sR   € Ø�ŠÝÔ)ØUÝ”Ð2Ñ3Ô3×:Ò:Ñ<Ô<Ý”nØWð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rI   c                 óª   — |                       t          j        dt          j        d¦  «                             ¦   «         t          j        d¬¦  «         d S )Nl   �A h½bû+Jn p.Ô(åd™0^”yñ8ÆW¸x s   Alan Turingl   ñ}ù:ìAànûqº`0=�	öª3€9èp™C[AZRr/  r8  rˆ   s    rJ   Útest_SECP256k1_6zRFC6979.test_SECP256k1_6Ø  sQ   € Ø�ŠÝÔ)ØUÝ”˜~Ñ.Ô.×5Ò5Ñ7Ô7Ý”nØWð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rI   c                 óÜ   — |                       t          d ddt          dd¦  «        ¦  «        t          dd¦  «        t          d¦  «        t          j        t          dd¦  «        ¬¦  «         d S )Nr   Ú)4000000000000000000020108A2E0CC0D99F8A5EFrt   Ú)09A4D6792295A7F730FC3F2B49CBC0F62E862272Fs@   AF2BDBE1AA9B6EC1E2ADE1D694F41FC71A831D0268E9891562113D8A62ADD1BFÚ)23AF4074C90A02B3FE61D286D5C87F425E6BDD81Br/  )r+  r?   rv   r   rx   ry   rˆ   s    rJ   Útest_1zRFC6979.test_1á  s€   € à�ŠÝØØØÝÐ?ÀÑDÔDñ	ô õ ÐBÀBÑGÔGÝØSñô õ ”nÝÐDÀbÑIÔIð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rI   c           
      óâ   — |                       t          j        t          dd¦  «        t	          j        d¦  «                             ¦   «         t          j        t          dd¦  «        ¬¦  «         d S )NÚ06FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4rt   r-  Ú037D7CA00D2C7B0E5E412AC03BD44BA837FDD5B28CD3B0021r/  ©r+  r$   r{   rv   rx   Úsha1r}   rˆ   s    rJ   Útest_2zRFC6979.test_2ò  sk   € Ø�ŠÝÔ(ÝÐIÈ2ÑNÔNÝ”˜YÑ'Ô'×.Ò.Ñ0Ô0Ý”lÝØBÀBñô ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rI   c           
      óâ   — |                       t          j        t          dd¦  «        t	          j        d¦  «                             ¦   «         t          j        t          dd¦  «        ¬¦  «         d S )NrF  rt   r-  Ú032B1B6D7D42A05CB449065727A84804FB1A3E34D8F261496r/  ©r+  r$   r{   rv   rx   ry   r}   rˆ   s    rJ   Útest_3zRFC6979.test_3ý  ók   € Ø�ŠÝÔ(ÝÐIÈ2ÑNÔNÝ”˜yÑ)Ô)×0Ò0Ñ2Ô2Ý”nÝØBÀBñô ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rI   c           
      óâ   — |                       t          j        t          dd¦  «        t	          j        d¦  «                             ¦   «         t          j        t          dd¦  «        ¬¦  «         d S )NrF  rt   r-  Ú0A2AC7AB055E4F20692D49209544C203A7D1F2C0BFBC75DB1r/  ©r+  r$   r{   rv   rx   Úsha512r}   rˆ   s    rJ   Útest_4zRFC6979.test_4  rO  rI   c           
      óâ   — |                       t          j        t          dd¦  «        t	          j        d¦  «                             ¦   «         t          j        t          dd¦  «        ¬¦  «         d S )NrF  rt   ó   testÚ0D9CF9C3D3297D3260773A1DA7418DB5537AB8DD93DE7FA25r/  rH  rˆ   s    rJ   Útest_5zRFC6979.test_5  sk   € Ø�ŠÝÔ(ÝÐIÈ2ÑNÔNÝ”˜WÑ%Ô%×,Ò,Ñ.Ô.Ý”lÝØBÀBñô ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rI   c           
      óâ   — |                       t          j        t          dd¦  «        t	          j        d¦  «                             ¦   «         t          j        t          dd¦  «        ¬¦  «         d S )NrF  rt   rV  Ú05C4CE89CF56D9E7C77C8585339B006B97B5F0680B4306C6Cr/  rM  rˆ   s    rJ   Útest_6zRFC6979.test_6  ók   € Ø�ŠÝÔ(ÝÐIÈ2ÑNÔNÝ”˜wÑ'Ô'×.Ò.Ñ0Ô0Ý”nÝØBÀBñô ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rI   c           
      óâ   — |                       t          j        t          dd¦  «        t	          j        d¦  «                             ¦   «         t          j        t          dd¦  «        ¬¦  «         d S )NrF  rt   rV  Ú00758753A5254759C7CFBAD2E2D9B0792EEE44136C9480527r/  rR  rˆ   s    rJ   Útest_7zRFC6979.test_7)  r\  rI   c           
      óâ   — |                       t          j        t          dd¦  «        t	          j        d¦  «                             ¦   «         t          j        t          dd¦  «        ¬¦  «         d S )NÚƒ0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538rt   r-  Úƒ089C071B419E1C2820962321787258469511958E80582E95D8378E0C2CCDB3CB42BEDE42F50E3FA3C71F5A76724281D31D9C89F0F91FC1BE4918DB1C03A5838D0F9r/  )r+  r(   r{   rv   rx   rI  r}   rˆ   s    rJ   Útest_8zRFC6979.test_84  sy   € Ø�ŠÝÔ(Ýð VØñô õ ”˜YÑ'Ô'×.Ò.Ñ0Ô0Ý”lÝð VØñô ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rI   c           
      óâ   — |                       t          j        t          dd¦  «        t	          j        d¦  «                             ¦   «         t          j        t          dd¦  «        ¬¦  «         d S )Nra  rt   r-  Úƒ0EDF38AFCAAECAB4383358B34D67C9F2216C8382AAEA44A3DAD5FDC9C32575761793FEF24EB0FC276DFC4F6E3EC476752F043CF01415387470BCBD8678ED2C7E1A0r/  )r+  r(   r{   rv   rx   ry   r}   rˆ   s    rJ   Útest_9zRFC6979.test_9C  sy   € Ø�ŠÝÔ(Ýð VØñô õ ”˜yÑ)Ô)×0Ò0Ñ2Ô2Ý”nÝð VØñô ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rI   c           
      óâ   — |                       t          j        t          dd¦  «        t	          j        d¦  «                             ¦   «         t          j        t          dd¦  «        ¬¦  «         d S )Nra  rt   rV  Úƒ16200813020EC986863BEDFC1B121F605C1215645018AEA1A7B215A564DE9EB1B38A67AA1128B80CE391C4FB71187654AAA3431027BFC7F395766CA988C964DC56Dr/  )r+  r(   r{   rv   rx   rS  r}   rˆ   s    rJ   Útest_10zRFC6979.test_10R  sy   € Ø�ŠÝÔ(Ýð VØñô õ ”˜wÑ'Ô'×.Ò.Ñ0Ô0Ý”nÝð VØñô ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rI   N)rE   rF   rG   r+  r1  r5  r9  r;  r=  r?  rD  rJ  rN  rT  rX  r[  r_  rc  rf  ri  rH   rI   rJ   r%  r%  ˜  s  € € € € € ð+ð +ð +ð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð	
ð 	
ð 	
ð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð"	
ð 	
ð 	
ð	
ð 	
ð 	
ð	
ð 	
ð 	
ð	
ð 	
ð 	
ð	
ð 	
ð 	
ð	
ð 	
ð 	
ð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð 
ð 
rI   r%  c                   ó   — e Zd Zd„ ZdS )ÚECDHc                 óz  — ||z  }||z  }||z  }|                       t          |||¦  «        |¦  «         |                       t          |||¦  «        |¦  «         |                      ||z  ||z  |z  cxk    o||z  |z  cxk    o||z  k    nc ¦  «         |                       t          ||	|
¦  «        |¦  «         d S r†   )r   r?   rf   )rk   r•   r{   ÚdAÚx_qAÚy_qAÚdBÚx_qBÚy_qBÚx_ZÚy_ZÚqAÚqBÚZs                 rJ   r+  zECDH._doc  s  € Ø�)‰^ˆØ�)‰^ˆØ�‰GˆØ×Ò�˜u d¨DÑ1Ô1°2Ñ6Ô6Ð6Ø×Ò�˜u d¨DÑ1Ô1°2Ñ6Ô6Ð6Ø�ŠØ�"‰WØ�R‘˜)Ñ#ðð ò ð à�R‘˜)Ñ#ðð ò ð ð �R‘òð ð ð ñ	
ô 	
ð 	
ð 	×Ò�˜u c¨3Ñ/Ô/°Ñ3Ô3Ð3Ð3Ð3rI   N)rE   rF   rG   r+  rH   rI   rJ   rk  rk  b  s#   € € € € € ð4ð 4ð 4ð 4ð 4rI   rk  c                   ón   — e Zd Zd„ Zd„ Zej        j        d„ ¦   «         Zej        j        d„ ¦   «         Z	dS )ÚRFC6932c                 óB  — |                       t          t          j        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          d	d¦  «        ¬
¦
  «
         d S )NÚ87C4B7A2C8A4BAD1FBB7D79CC0955DB7C6A4660CA64CC4778159B495Ert   Ú8B104A67A6F6E85E14EC1825E1539E8ECDBBF584922367DD88C6BDCF2Ú846D782E7FDB5F60CD8404301AC5949C58EDB26BC68BA07695B750A94Ú863976D4AAE6CD0F6DD18DEFEF55D96569D0507C03E74D6486FFA28FBÚ82A97089A9296147B71B21A4B574E1278245B536F14D8C2B9D07A874EÚ89B900D7C77A709A797276B8CA1BA61BB95B546FC29F862E44D59D25BÚ8312DFD98783F9FB77B9704945A73BEB6DCCBE3B65D0F967DCAB574EBÚ86F800811D64114B1C48C621AB3357CF93F496E4238696A2A012B3C98©
r•   r{   rm  rn  ro  rp  rq  rr  rs  rt  )r+  r;   r,   r{   rv   rˆ   s    rJ   Útest_brainpoolP224r1zRFC6932.test_brainpoolP224r1u  sÎ   € Ø�ŠÝ'Ý%Ô/ÝØJÈBñô õ ØJÈBñô õ ØJÈBñô õ ØJÈBñô õ ØJÈBñô õ ØJÈBñô õ ØJÈBñô õ ØJÈBñô ð1 	ñ 	
ô 	
ð 	
ð 	
ð 	
rI   c                 óB  — |                       t          t          j        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          d	d¦  «        ¬
¦
  «
         d S )NÚ@041EB8B1E2BC681BCE8E39963B2E9FC415B05283313DD1A8BCC055F11AE49699rt   Ú@78028496B5ECAAB3C8B6C12E45DB1E02C9E4D26B4113BC4F015F60C5CCC0D206Ú@A2AE1762A3831C1D20F03F8D1E3C0C39AFE6F09B4D44BBE80CD100987B05F92BÚ@06F5240EACDB9837BC96D48274C8AA834B6C87BA9CC3EEDD81F99A16B8D804D3Ú@8E07E219BA588916C5B06AA30A2F464C2F2ACFC1610A3BE2FB240B635341F0DBÚ@148EA1D7D1E7E54B9555B6C9AC90629C18B63BEE5D7AA6949EBBF47B24FDE40DÚ@05E940915549E9F6A4A75693716E37466ABA79B4BF2919877A16DD2CC2E23708Ú@6BC23B6702BC5A019438CEEA107DAAD8B94232FFBBC350F3B137628FE6FD134Crƒ  ©r+  r<   r-   r{   rv   rˆ   s    rJ   Útest_brainpoolP256r1zRFC6932.test_brainpoolP256r1“  óç   € Ø�ŠÝ'Ý%Ô/Ýðàñô õ
 ðàñô õ
 ðàñô õ
 ðàñô õ
 ðàñô õ
 ðàñô õ
 ðàñô õ
 ðàñô ðM 	ñ +	
ô +	
ð +	
ð +	
ð +	
rI   c                 óB  — |                       t          t          j        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          d	d¦  «        ¬
¦
  «
         d S )NÚ`014EC0755B78594BA47FB0A56F6173045B4331E74BA1A6F47322E70D79D828D97E095884CA72B73FDABD5910DF0FA76Art   Ú`45CB26E4384DAF6FB776885307B9A38B7AD1B5C692E0C32F0125332778F3B8D3F50CA358099B30DEB5EE69A95C058B4EÚ`8173A1C54AFFA7E781D0E1E1D12C0DC2B74F4DF58E4A4E3AF7026C5D32DC530A2CD89C859BB4B4B768497F49AB8CC859Ú`6B461CB79BD0EA519A87D6828815D8CE7CD9B3CAA0B5A8262CBCD550A015C90095B976F3529957506E1224A861711D54Ú`01BF92A92EE4BE8DED1A911125C209B03F99E3161CFCC986DC7711383FC30AF9CE28CA3386D59E2C8D72CE1E7B4666E8Ú`3289C4A3A4FEE035E39BDB885D509D224A142FF9FBCC5CFE5CCBB30268EE47487ED8044858D31D848F7A95C635A347ACÚ`04CC4FF3DCCCB07AF24E0ACC529955B36D7C807772B92FCBE48F3AFE9A2F370A1F98D3FA73FD0C0747C632E12F1423ECÚ`7F465F90BD69AFB8F828A214EB9716D66ABC59F17AF7C75EE7F1DE22AB5D05085F5A01A9382D05BF72D96698FE3FF64Erƒ  ©r+  r=   r/   r{   rv   rˆ   s    rJ   Útest_brainpoolP384r1zRFC6932.test_brainpoolP384r1Á  óç   € à�ŠÝ'Ý%Ô/Ýð8àñô õ
 ð:àñô õ
 ð:àñô õ
 ð8àñô õ
 ð:àñô õ
 ð:àñô õ
 ð9àñô õ
 ð9àñô ðM 	ñ +	
ô +	
ð +	
ð +	
ð +	
rI   c                 óB  — |                       t          t          j        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          d	d¦  «        ¬
¦
  «
         d S )NÚ€636B6BE0482A6C1C41AA7AE7B245E983392DB94CECEA2660A379CFE159559E357581825391175FC195D28BAC0CF03A7841A383B95C262B983782874CCE6FE333rt   Ú€0562E68B9AF7CBFD5565C6B16883B777FF11C199161ECC427A39D17EC2166499389571D6A994977C56AD8252658BA8A1B72AE42F4FB7532151AFC3EF0971CCDAÚ€A7CA2D8191E21776A89860AFBC1F582FAA308D551C1DC6133AF9F9C3CAD59998D70079548140B90B1F311AFB378AA81F51B275B2BE6B7DEE978EFC7343EA642EÚ€0AF4E7F6D52EDD52907BB8DBAB3992A0BB696EC10DF11892FF205B66D381ECE72314E6A6EA079CEA06961DBA5AE6422EF2E9EE803A1F236FB96A1799B86E5C8BÚ€5A7954E32663DFF11AE24712D87419F26B708AC2B92877D6BFEE2BFC43714D89BBDB6D24D807BBD3AEB7F0C325F862E8BADE4F74636B97EAACE739E11720D323Ú€96D14621A9283A1BED84DE8DD64836B2C0758B11441179DC0C54C0D49A47C03807D171DD544B72CAAEF7B7CE01C7753E2CAD1A861ECA55A71954EE1BA35E04BEÚ€1EE8321A4BBF93B9CF8921AB209850EC9B7066D1984EF08C2BB723236208AC8F1A483E79461A00E0D5F6921CE9D360502F85C812BEDEE23AC5B210E5811B191EÚ€2632095B7B936174B41FD2FAF369B1D18DCADEED7E410A7E251F0831097C50D02CFED02607B6A2D5ADB4C0006008562208631875B58B54ECDA5A4F9FE9EAABA6rƒ  ©r+  r>   r0   r{   rv   rˆ   s    rJ   Útest_brainpoolP512r1zRFC6932.test_brainpoolP512r1ð  ó÷   € à�ŠÝ'Ý%Ô/Ýðð ñ	ô õ ð!ð ñ	ô õ ð!ð ñ	ô õ ðð ñ	ô õ ð!ð ñ	ô õ ð!ð ñ	ô õ ðð ñ	ô õ ðð ñ	ô ð[ 	ñ 3	
ô 3	
ð 3	
ð 3	
ð 3	
rI   N)
rE   rF   rG   r„  r�  rÒ  rÓ  rÔ  r›  r§  rH   rI   rJ   ry  ry  r  sv   € € € € € ð
ð 
ð 
ð<,
ð ,
ð ,
ð\ „[Ôð,
ð ,
ñ Ôð,
ð\ „[Ôð4
ð 4
ñ Ôð4
ð 4
ð 4
rI   ry  c                   óh   — e Zd Zd„ Zej        j        d„ ¦   «         Zej        j        d„ ¦   «         ZdS )ÚRFC7027c                 óB  — |                       t          t          j        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          d	d¦  «        ¬
¦
  «
         d S )NÚ@81DB1EE100150FF2EA338D708271BE38300CB54241D79950F77B063039804F1Drt   Ú@44106E913F92BC02A1705D9953A8414DB95E1AAA49E81D9E85F929A8E3100BE5Ú@8AB4846F11CACCB73CE49CBDD120F5A900A69FD32C272223F789EF10EB089BDCÚ@55E40BC41E37E3E2AD25C3C6654511FFA8474A91A0032087593852D3E7D76BD3Ú@8D2D688C6CF93E1160AD04CC4429117DC2C41825E1E9FCA0ADDD34E6F1B39F7BÚ@990C57520812BE512641E47034832106BC7D3E8DD0E4C7F1136D7006547CEC6AÚ@89AFC39D41D3B327814B80940B042590F96556EC91E6AE7939BCE31F3A18BF2BÚ@49C27868F4ECA2179BFD7D59B1E3BF34C1DBDE61AE12931648F43E59632504DErƒ  rŽ  rˆ   s    rJ   r�  zRFC7027.test_brainpoolP256r1+	  r�  rI   c                 óB  — |                       t          t          j        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          d	d¦  «        ¬
¦
  «
         d S )NÚ`1E20F5E048A5886F1F157C74E91BDE2B98C8B52D58E5003D57053FC4B0BD65D6F15EB5D1EE1610DF870795143627D042rt   Ú`68B665DD91C195800650CDD363C625F4E742E8134667B767B1B476793588F885AB698C852D4A6E77A252D6380FCAF068Ú`55BC91A39C9EC01DEE36017B7D673A931236D2F1F5C83942D049E3FA20607493E0D038FF2FD30C2AB67D15C85F7FAA59Ú`032640BC6003C59260F7250C3DB58CE647F98E1260ACCE4ACDA3DD869F74E01F8BA5E0324309DB6A9831497ABAC96670Ú`4D44326F269A597A5B58BBA565DA5556ED7FD9A8A9EB76C25F46DB69D19DC8CE6AD18E404B15738B2086DF37E71D1EB4Ú`62D692136DE56CBE93BF5FA3188EF58BC8A3A0EC6C1E151A21038A42E9185329B5B275903D192F8D4E1F32FE9CC78C48Ú`0BD9D3A7EA0B3D519D09D8E48D0785FB744A6B355E6304BC51C229FBBCE239BBADF6403715C35D4FB2A5444F575D4F42Ú`0DF213417EBE4D8E40A5F76F66C56470C489A3478D146DECF6DF0D94BAE9E598157290F8756066975F1DB34B2324B7BDrƒ  rš  rˆ   s    rJ   r›  zRFC7027.test_brainpoolP384r1Y	  rœ  rI   c                 óB  — |                       t          t          j        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          dd¦  «        t	          d	d¦  «        ¬
¦
  «
         d S )NÚ€16302FF0DBBB5A8D733DAB7141C1B45ACBC8715939677F6A56850A38BD87BD59B09E80279609FF333EB9D4C061231FB26F92EEB04982A5F1D1764CAD57665422rt   Ú€0A420517E406AAC0ACDCE90FCD71487718D3B953EFD7FBEC5F7F27E28C6149999397E91E029E06457DB2D3E640668B392C2A7E737A7F0BF04436D11640FD09FDÚ€72E6882E8DB28AAD36237CD25D580DB23783961C8DC52DFA2EC138AD472A0FCEF3887CF62B623B2A87DE5C588301EA3E5FC269B373B60724F5E82A6AD147FDE7Ú€230E18E1BCC88A362FA54E4EA3902009292F7F8033624FD471B5D8ACE49D12CFABBC19963DAB8E2F1EBA00BFFB29E4D72D13F2224562F405CB80503666B25429Ú€9D45F66DE5D67E2E6DB6E93A59CE0BB48106097FF78A081DE781CDB31FCE8CCBAAEA8DD4320C4119F1E9CD437A2EAB3731FA9668AB268D871DEDA55A5473199FÚ€2FDC313095BCDD5FB3A91636F07A959C8E86B5636A1E930E8396049CB481961D365CC11453A06C719835475B12CB52FC3C383BCE35E27EF194512B71876285FAÚ€A7927098655F1F9976FA50A9D566865DC530331846381C87256BAF3226244B76D36403C024D7BBF0AA0803EAFF405D3D24F11A9B5C0BEF679FE1454B21C4CD1FÚ€7DB71C3DEF63212841C463E881BDCF055523BD368240E6C3143BD8DEF8B3B3223B95E0F53082FF5E412F4222537A43DF1C6D25729DDB51620A832BE6A26680A2rƒ  r¦  rˆ   s    rJ   r§  zRFC7027.test_brainpoolP512r1ˆ	  r¨  rI   N)	rE   rF   rG   r�  rÒ  rÓ  rÔ  r›  r§  rH   rI   rJ   rª  rª  (	  sg   € € € € € ð,
ð ,
ð ,
ð\ „[Ôð,
ð ,
ñ Ôð,
ð\ „[Ôð4
ð 4
ñ Ôð4
ð 4
ð 4
rI   rª  z$w, gwx, gwy, k, msg, md, r, s, curveÚ@DC51D3866A15BACDE33D96F992FCA99DA7E6EF0934E7097559C27F1614C88A7FÚ@2442A5CC0ECD015FA3CA31DC8E2BBC70BF42D60CBCA20085E0822CB04235E970Ú@6FC98BD7E50211A4A27102FA3549DF79EBCB4BF246B80945CDDFE7D509BBFD7DÚ@9E56F509196784D963D1C0A401510EE7ADA3DCC5DEE04B154BF61AF1D5A6DECEs   abcÚ@CB28E0999B9C7715FD0A80D8E47A77079716CBBF917DD72E97566EA1C066957CÚ@86FA3BB4E26CAD5BF90B7F81899256CE7594BB1EA0C89212748BFF3B3D5B0315z	ECDSA-256Ú`0BEB646634BA87735D77AE4809A0EBEA865535DE4C1E1DCB692E84708E81A5AF62E528C38B2A81B35309668D73524D9FÚ`96281BF8DD5E0525CA049C048D345D3082968D10FEDF5C5ACA0C64E6465A97EA5CE10C9DFEC21797415710721F437922Ú`447688BA94708EB6E2E4D59F6AB6D7EDFF9301D249FE49C33096655F5D502FAD3D383B91C5E7EDAA2B714CC99D5743CAÚ`B4B74E44D71A13D568003D7489908D564C7761E229C58CBFA18950096EB7463B854D7FA992F934D927376285E63414FAÚ`FB017B914E29149432D8BAC29A514640B46F53DDAB2C69948084E2930F1C8F7E08E07C9C63F2D21A07DCB56A6AF56EB3Ú`B263A1305E057F984D38726A1B46874109F417BCA112674C528262A40A629AF1CBB9F516CE0FA7D2FF630863A00E8B9Fz	ECDSA-384Ú„0065FDA3409451DCAB0A0EAD45495112A3D813C17BFD34BDF8C1209D7DF5849120597779060A7FF9D704ADF78B570FFAD6F062E95C7E0C5D5481C5B153B48B375FA1Ú„0151518F1AF0F563517EDD5485190DF95A4BF57B5CBA4CF2A9A3F6474725A35F7AFE0A6DDEB8BEDBCD6A197E592D40188901CECD650699C9B5E456AEA5ADD19052A8Ú„006F3B142EA1BFFF7E2837AD44C9E4FF6D2D34C73184BBAD90026DD5E6E85317D9DF45CAD7803C6C20035B2F3FF63AFF4E1BA64D1C077577DA3F4286C58F0AEAE643Ú„00C1C2B305419F5A41344D7E4359933D734096F556197A9B244342B8B62F46F9373778F9DE6B6497B1EF825FF24F42F9B4A4BD7382CFC3378A540B1B7F0C1B956C2FÚ„0154FD3836AF92D0DCA57DD5341D3053988534FDE8318FC6AAAAB68E2E6F4339B19F2F281A7E0B22C269D93CF8794A9278880ED7DBB8D9362CAEACEE544320552251Ú„017705A7030290D1CEB605A9A1BB03FF9CDD521E87A696EC926C8C10C8362DF4975367101F67D1CF9BCCBF2F3D239534FA509E70AAC851AE01AAC68D62F866472660z	ECDSA-521c	           	      óŒ  — t          j        t          | ¦  «        |¦  «        }	t          j        t          ||z   ¦  «        |¦  «        }
|	j        |
k    sJ ‚|	                     ||t          t          |d¦  «        ¬¦  «        }|t          |¦  «        t          |¦  «        fk    sJ ‚|
                     |||t          ¦  «        sJ ‚d S )Nrt   )rj  r  ru   )
r   ri   r   r   râ   re   r   rv   rg   r   )ÚwÚgwxÚgwyru   ÚmsgÚmdr  r¡   r•   rå   ræ   ro   s               rJ   Útest_RFC4754_vectorsrÞ  Á	  s¸   € õx 
Ô	¥	¨!¡¤¨eÑ	4Ô	4€BÝ	Ô	!¥)¨C°#©IÑ"6Ô"6¸Ñ	>Ô	>€BØÔ˜rÒ!Ð!Ð!Ð!Ø
�'Š'�# Õ.?Å3ÀqÈ"Á:Ä:ˆ'Ñ
NÔ
N€Cà•9˜Q‘<”<¥¨1¡¤Ð.Ò.Ð.Ð.Ð.à�9Š9�S˜#˜rÕ#4Ñ5Ô5Ð5Ð5Ð5Ð5Ð5rI   )tÚ
__future__r   r   r   Ú	unittest2ÚunittestÚImportErrorrh  rk  rR   rÒ  r  Úbinasciir   r   rx   Ú	functoolsr   Ú
hypothesisr	   r
   Úhypothesis.strategiesÚ
strategiesr"  Úsixr   Úkeysr   r   r   r   r   Ú r   r   r   r   r   r   r   r   r   r   r   r   r:   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   rB   r;   r<   r=   r>   Úellipticcurver?   r@   rA   Ú	ExceptionrD   r!  Úargvr^   ÚTestCaser`   rÓ  Úparametrizer	  rà  Úparamsr•   r�  ÚappendÚparamrú  rÉ  ræ  rè  rÔ  rê  rØ  rà  r  r%  rk  ry  rª  ry   Úsha384rS  rÞ  rH   rI   rJ   ú<module>rô     sú  ðØ ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ðØ Ð Ð Ð Ð øØð ð ð Ø€O€O€O€O€Oðøøøà 	€	€	€	Ø €€€Ø Ð Ð Ð Ø €€€Ø 
€
€
€
Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø €€€Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ø "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð EÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð:ð ð ð ð ð ð ð ð ð ð ð ð !Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð	ð 	ð 	ð 	ð 	�iñ 	ô 	ð 	ð €ð ˆsŒxÐÐØ#$€L�Ñ ðð ð ð u:ð u:ð u:ð u:ð u:ˆHÔñ u:ô u:ð u:ðp „×ÒØÐCÐC   s¡¤ÐCÑCÔCñô ðð ñô ðð" 
€Øð 
ð 
€EØ>ð 
ð 
ˆØ�ŠØˆFŒL˜ ¨	×(8Ò(8¸¼ÀSÑ(IÔ(IÐJÑJÔJñ	
ô 	
ð 	
ð 	
ð
ð „×ÒÐ)¨6Ñ2Ô2ð4ð 4ñ 3Ô2ð4ð ˆsŒxÐÐØ˜Ð(€F€Fà€Fð „×Ò˜ &Ñ)Ô)ð.ð .ñ *Ô)ð.ð „ÔðO6ð O6ð O6ð O6ð O6ˆhÔñ O6ô O6ñ ÔðO6ðd*ð *ð *ð *ð *�HÔ%ñ *ô *ð *ðZ=@ð =@ð =@ð =@ð =@ˆ(Ô
ñ =@ô =@ð =@ð@?=ð ?=ð ?=ð ?=ð ?=ˆ8Ôñ ?=ô ?=ð ?=ðDG
ð G
ð G
ð G
ð G
ˆhÔñ G
ô G
ð G
ðT4ð 4ð 4ð 4ð 4ˆ8Ôñ 4ô 4ð 4ð s
ð s
ð s
ð s
ð s
ˆdñ s
ô s
ð s
ðlU
ð U
ð U
ð U
ð U
ˆdñ U
ô U
ð U
ðr „×ÒØ*àˆŒØNØNØNØNØØŒNØNØNØØð	
ñ 	
ô 	
ð 	ˆŒð/ð/ð/ð/àØŒNð/ð/àØð!	
ñ 	
ô 	
ð$ 	ˆŒððððð ØŒNððð Øð-	
ñ 	
ô 	
ð?7ñ:ô :ðv6ð 6ñw:ô :ðv6ð 6ð 6s   Œ ‘	œ