+
    @id                       ^ RI HtHtHt  ^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIHtHt ^ RIt^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ^RIHtHt ^RIHtHtHt ^R	I H!t! ^R
I!H"t"H#t#H$t$H%t%H&t& ^RI!H't'H(t(H)t) ^RI!H*t*H+t+H,t, ^RI-H.t.H/t/ ^RI-H0t0H1t1H2t2H3t3H4t4H5t5H6t6H7t7H8t8H9t9H:t:H;t;H<t<H=t=H>t>H?t?H@t@HAtAHBtBHCtCHDtDHEtEHFtFHGtGHHtHHItIH-t- ^RIJHKtKHLtLHMtMHNtN ^RIOHPtP ^RI HQtQ ^RI HRtR ^RI HJtJ  ! R R]S4      tT/ tUR]P                  9   d   ^]UR&   R tW ! R R]P                  4      tY]
P                  P                  R]\! R4       U Uu. uF  p RL F  qV3NK  	  K  	  upp 4      R 4       t]. t^]- FJ  t_RM FA  t`]^P                  ]
P                  ! ]_]`RP                  ]_P                  ]`4      R7      4       KC  	  KL  	  ]
P                  P                  R ]^4      R! 4       teR]P                  9   d   ]4]:.t^M]-t^]
P                  P                  R"]^4      R# 4       tf]
P                  P                   ! R$ R%]P                  4      4       th ! R& R']P                  4      ti ! R( R)]P                  4      tj ! R* R+]P                  4      tk ! R, R-]P                  4      tl ! R. R/]P                  4      tm ! R0 R1]m4      tn ! R2 R3]m4      to]
P                  P                  R4]
P                  ! R5R6R7R8R9]P                  R:R;]6R<R7
      ]
P                  ! R=R>R?R@R9]P                  RARB]7RCR7
      ]
P                  ! RDRERFRGR9]P                  RHRI]8RJR7
      .4      RK 4       tsR#   ] d	    ^ RIt ELUi ; iu upp i )N    )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                       ] tR t^JtRtR# )SubprocessError N)__name__
__module____qualname____firstlineno____static_attributes__rD       P/var/www/html/photoedit/myenv/lib/python3.14/site-packages/ecdsa/test_pyecdsa.pyrC   rC   J   s    rJ   rC   z--fastmax_examplesc           
      L   R p\         P                  ! V.V P                  4       ,           \         P                  \         P                  R7      pVP                  4       w  r4VP                  ^ 8w  d&   \        RV: RV : RVP                  : RV: 24      hVP                  4       # )openssl)stdoutstderrzcmd ' z' failed: rc=z, stdout/err was )	
subprocessPopensplitPIPESTDOUTcommunicate
returncoderC   decode)cmdOPENSSLprO   ignoreds   &    rK   run_opensslr^   U   s    G		CIIK  	A
 mmoOF||qQ\\63
 	
 ==?rJ   c                     a  ] tR t^et o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R  t#R! t$R" t%R# t&R$ t'R% t(R& t)R' t*R( t+R) t,R* t-R+ t.R, t/R- t0R. t1R/ t2R0 t3R1 t4R2 t5R3 t6R4 t7R5 t8R6 t9R7 t:R8 t;R9 t<R: t=R; t>R< t?R= t@R> tAR? tBR@ tCRA tDRB tERCtFV tGRD# )EECDSAc                   \         P                  ! 4       pVP                  4       pR pVP                  V4      pV P	                  VP                  WC4      4       V P                  \        VP
                  WCR,           4       \        P                  ! VP                  4       4      pV P	                  VP                  WC4      4       R# )   blahblahs   badN)r   generateget_verifying_keysign
assertTrueverifyassertRaisesr   r   from_string	to_string)selfprivpubdatasigpub2s   &     rK   
test_basicECDSA.test_basicf   s    ""$$$&iio

3-.+SZZVmL''8C./rJ   c                   R p\        R^4      p\        P                  ! V\        \        P
                  4      pVP                  4       p\        P                  ! \        P                  P                  4       V\        P
                  \        P
                  ! V4      P                  4       4      pVP                  WR7      pV P                  VP                  Wa4      4       VP                  WR7      pV P                  VP                  Wq4      4       VP                  V\        P
                  4      pV P                  VP                  W4      4       V P!                  Wg4       V P!                  Wh4       R# )rb    9d0219792467d7d37b4d43298a7d0c05)kN)intr   from_secret_exponentr(   hashlibsha256rd   r@   
generate_k	generatororderdigestre   rf   rg   sign_deterministicassertEqual)	rk   rn   secexprl   rm   ru   sig1sig2sig3s	   &        rK   test_deterministicECDSA.test_deterministics   s   7<..Iw~~
 $$&%%'NNNN4 '')	
 yyy#

4./yyy#

4./&&tW^^<

4./$$rJ   c                n    V P                  \        \        4       V P                  \        \        4       R # N)rh   	TypeErrorr   r   rk   s   &rK   test_bad_usageECDSA.test_bad_usage   s"    )Z0)\2rJ   c                .   \         p\        P                  ! 4       pVP                  4       pV P	                  \        VP                  4       4      VP                  4       VP                  R 4      pV P	                  \        V4      VP                  4       R# )   dataN)
r#   r   rc   rd   r   lenrj   verifying_key_lengthre   signature_length)rk   defaultrl   rm   ro   s   &    rK   test_lengths_defaultECDSA.test_lengths_default   sl    ""$$$&S]]_-w/K/KLii S7#;#;<rJ   c                   R p\         p\        P                  ! WP                  4      p\        P                  ! WP                  4      pV P	                  W44       \
        P                  ! W24      p\
        P                  ! WB4      pV P	                  \        VP                  4       4      \        VP                  4       4      4       V P	                  VP                  4       VP                  4       4       VP                  4       pVP                  4       pRp	VP                  V	4      p
VP                  V	4      pV P                  VP                  W4      4       V P                  VP                  W4      4       V P                  VP                  W4      4       V P                  VP                  W4      4       V P	                  \        VP                  4       4      \        VP                  4       4      4       R# )s   secretr   N)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   &           rK   test_serializeECDSA.test_serialize   sd   77kkJ77kkJ*//?//?EOO%&0A(B	
 	8&&(&&(zz$zz$D/0D/0D/0D/0!12GDNN<L4MNrJ   c                  a R oV3R lp\         P                  ! VR7      p\         P                  ! VR7      pV P                  \        VP	                  4       P                  4       4      \        VP	                  4       P                  4       4      4       VP                  RVR7      pVP                  RVR7      pV P                  \        V4      \        V4      4       R# )=   all the entropy in the entire world, compressed into one linec                    < SR V  # r   rD   numbytesss   &rK   not_much_entropy.ECDSA.test_nonrandom.<locals>.not_much_entropy       Yh<rJ   entropyr   N)r   rc   r   r   rd   rj   re   )rk   r   r   r   r   r   r   s   &     @rK   test_nonrandomECDSA.test_nonrandom   s    L	  ##,<=##,<=E++-779:E++-779:	
 zz'+;z<zz'+;z<6rJ   c                   V P                  VP                  P                  VP                  P                  4       V P                  VP                  P                  P                  VP                  P                  P                  4       R # r   )r   privkeysecret_multiplier
public_keyr{   )rk   r   r   s   &&&rK   assertTruePrivkeysEqualECDSA.assertTruePrivkeysEqual   s_    MM++U]]-L-L	
 	MM$$..MM$$..	
rJ   c                  a R oV3R lp\         P                  ! 4       pV P                  VP                  \        P                  4       \         P                  ! \
        R7      pV P                  VP                  \
        P                  4       \         P                  ! VR7      pV P                  VP                  \        P                  4       \         P                  ! VR7      pV P                  VP                  \        P                  4       V P                  W#4       \         P                  ! ^R7      pV P                  VP                  \        P                  4       \         P                  ! ^R7      pV P                  W#4       \         P                  ! ^\
        R7      pV P                  VP                  \
        P                  4       R# )r   c                    < SR V  # r   rD   r   s   &rK   r   5ECDSA.test_privkey_creation.<locals>.not_much_entropy   r   rJ   r   r   )r   )r   r   N)r   rc   r   baselenr#   r$   r   rw   )rk   r   r   r   r   s   &   @rK   test_privkey_creationECDSA.test_privkey_creation   s9   L	  ##%(8(89##(3(8(89##,<=(8(89##,<=(8(89$$U2//q9(8(89//q9$$U2//qI(8(89rJ   c                L   \         P                  ! 4       pVP                  4       pV P                  \	        V4      \
        4       V P                  \        V4      \        P                  4       \         P                  ! V4      pV P                  W4       VP                  4       pV P                  \	        V4      \
        4       V P                  VP                  R 4      4       V P                  VP                  4       P                  R4      4       \         P                   ! V4      pV P                  W4       VP#                  4       pV P                  \	        V4      \
        4       \         P$                  ! V4      pV P                  W4       \         P                  ! \&        R7      pVP                  4       pV P                  \	        V4      \
        4       V P                  VP                  R 4      4       V P                  VP                  4       P                  R4      4       \         P                   ! V4      pV P                  W4       VP#                  4       pV P                  \	        V4      \
        4       \         P$                  ! V4      pV P                  W4       R# )   -----BEGIN EC PRIVATE KEY-----   -----END EC PRIVATE KEY-----r   N)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   &   rK   test_privkey_stringsECDSA.test_privkey_strings   s   ##%__b;/R("2"23&&r*$$U2\\^b;/&GHI
++,KLM##B'$$U2\\^b;/##B'$$U2##(3\\^b;/&GHI
++,KLM##B'$$U2\\^b;/##B'$$U2rJ   c                0   \         P                  ! \        R 7      pVP                  4       pV P	                  \        V4      \        4       V P                  VP                  R4      4       V P                  VP                  4       P                  R4      4       \         P                  ! V4      pV P                  W4       VP                  4       pV P	                  \        V4      \        4       \         P                  ! V4      pV P                  W4       R# )r   r   r   N)r   rc   r/   r   r   r   r   rf   r   r   r   r   r   r   r   r   s   &   rK   test_privkey_strings_brainpool$ECDSA.test_privkey_strings_brainpool  s    ##/:\\^b;/&GHI
++,KLM##B'$$U2\\^b;/##B'$$U2rJ   c                :   V P                  VP                  P                  VP                  P                  4       V P                  VP                  P                  VP                  P                  4       V P                  VP                  VP                  4       R # r   )r   pubkeypointr{   r   )rk   r   rp   s   &&&rK   assertTruePubkeysEqualECDSA.assertTruePubkeysEqual  sb    **DKK,=,=>..0E0EFTZZ0rJ   c                   \         P                  ! 4       pVP                  4       pVP                  4       pV P	                  \        V4      \        4       V P	                  \        V4      \        P                  4       \        P                  ! V4      pV P                  W$4       \         P                  ! \        R 7      pVP                  4       pVP                  4       pV P	                  \        V4      \        4       V P	                  \        V4      \        P                  4       \        P                  ! V\        R 7      pV P                  W$4       VP                  4       pV P	                  \        V4      \        4       \        P                  ! V4      pV P                  W$4       V P!                  \"        P$                  \        P                  VR,           4       \        P                  ! V4      p ! R R4      p ! R R4      p\'        RV! 4       V! 4       R
R4      p	Wn        VP                  4       p
V P!                  \*        \        P                  V
4       VP-                  4       pV P	                  \        V4      \        4       V P/                  VP1                  R4      V4       V P/                  VP3                  4       P5                  R	4      V4       \        P6                  ! V4      pV P                  W$4       R# )r      junkc                   &   a  ] tR tRt o R tRtV tR# )0ECDSA.test_pubkey_strings.<locals>.FakeGeneratori:  c                    R # )[rD   r   s   &rK   r|   6ECDSA.test_pubkey_strings.<locals>.FakeGenerator.order;  s     rJ   rD   N)rE   rF   rG   rH   r|   rI   __classdictcell____classdict__s   @rK   FakeGeneratorr   :  s     ! !rJ   r   c                   &   a  ] tR tRt o R tRtV tR# ).ECDSA.test_pubkey_strings.<locals>.FakeCurveFpi>  c                    \        R 4      # )M65255345290392407050209505469627313404541085228058844382513856749047873406763)rv   r   s   &rK   r\   0ECDSA.test_pubkey_strings.<locals>.FakeCurveFp.p?  s    ? rJ   rD   N)rE   rF   rG   rH   r\   rI   r   r   s   @rK   FakeCurveFpr   >  s      rJ   r   unknownNs   -----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   &           rK   test_pubkey_stringsECDSA.test_pubkey_strings  s3   ##%&&(^^b;/R("?"?@''+##D/##(3&&(^^b;/R("?"?@''(;##D/;;=h5$$X.##D/|44h6H	
 &&x0	! 	!	 	 {}mo7I4
  +\-B-BFKkkmcK0'DEsK		,,-HI3O$$S)##D/rJ   c                   \         P                  ! \        R 7      pVP                  4       pVP	                  4       pV P                  \        V4      \        4       V P                  \        V4      \        P                  4       \        P                  ! V\        R 7      pV P                  W$4       VP                  4       pV P                  \        V4      \        4       \        P                  ! V4      pV P                  W$4       R# r   N)r   rc   r/   rd   rj   r   r   r   r   r   r   ri   r   r   r   )rk   r   r   r   rp   r   s   &     rK   test_pubkey_strings_brainpool#ECDSA.test_pubkey_strings_brainpoolS  s    ##/:&&(^^b;/R/"F"FG''/B##D/;;=h5$$X.##D/rJ   c                    \         P                  ! 4       pVP                  pV P                  \        4      ;_uu_ 4        VP                  R 4       RRR4       R#   + '       g   i     R# ; irawN)r   rc   verifying_keyrh   
ValueErrorr   rk   skvks   &  rK   *test_vk_to_der_with_invalid_point_encoding0ECDSA.test_vk_to_der_with_invalid_point_encodinga  sG      "z**IIe +***s   AA,	c                    \         P                  ! 4       pV P                  \        4      ;_uu_ 4        VP	                  R 4       RRR4       R#   + '       g   i     R# ; ir   )r   rc   rh   r   r   rk   r   s   & rK   *test_sk_to_der_with_invalid_point_encoding0ECDSA.test_sk_to_der_with_invalid_point_encodingh  s<      "z**IIe +***s   AA 	c                   \         p\        P                  ! R!  R,           p\        P                  ! W4      p\        P                  ! RR4      p\        P                  ! W44      pV P                  \        P                  4      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)r      garbage    Nr   r   H  ='  r   r   r   	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   &     rK   (test_vk_from_der_garbage_after_curve_oid.ECDSA.test_vk_from_der_garbage_after_curve_oidn  s    .NN78:E 	 **<G((d;	''@	s0011!!), 2111   B--B>	c                   \         P                  ! R!  p\         P                  ! R!  p\         P                  ! W4      p\         P                  ! RR4      p\         P                  ! W44      pV P	                  \         P
                  4      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)r   r  Nr   r   r   r  )r?   r	  r
  r  rh   r   r   r   r  s   &     rK   !test_vk_from_der_invalid_key_type'ECDSA.test_vk_from_der_invalid_key_typez  s    ~~y1(CD**<G((d;	''@	s0011!!), 2111s   B44C	c                   \         p\        P                  ! R!  p\        P                  ! W4      p\        P                  ! RR4      R,           p\        P                  ! W44      pV P                  \        P                  4      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)r   r  Nr  r  r  r  s   &     rK   +test_vk_from_der_garbage_after_point_string1ECDSA.test_vk_from_der_garbage_after_point_string  s    .(CD**<G((d;jH	''@	s0011!!), 2111r  c                t   \         p\        P                  ! R!  p\        P                  ! W4      p\        P                  ! RR4      p\        P                  ! W44      pV P                  \        P                  4      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)r   s   Nr  r  r  s   &     rK   "test_vk_from_der_invalid_bitstring(ECDSA.test_vk_from_der_invalid_bitstring  s|    .(CD**<G((d;	''@	s0011!!), 2111   B&&B7	c                `   \         p\        P                  ! R!  p\        P                  ! W4      p\        P                  ! R^ 4      p\        P                  ! W44      pV P                  \        4      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)r   Nr  @   )	r   r?   r	  r
  r  rh   r   r   r   r  s   &     rK   0test_vk_from_der_with_invalid_length_of_encoding6ECDSA.test_vk_from_der_with_invalid_length_of_encoding  sw    .(CD**<G((q9	''@	233!!), 4333s   ;BB-	c                t   \         p\        P                  ! R!  p\        P                  ! W4      p\        P                  ! R^ 4      p\        P                  ! W44      pV P                  \        P                  4      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)r   Nr  s0   r  r  s   &     rK   "test_vk_from_der_with_raw_encoding(ECDSA.test_vk_from_der_with_raw_encoding  s|    .(CD**<G((q9	''@	s0011!!), 2111r  c                D   \         P                  ! 4       pVP                  4       pR pVP                  V4      pV P	                  \        V4      \        4       V P	                  \        V4      \        P                  4       V P                  VP                  WC4      4       VP                  V\        R7      pV P	                  \        V4      \        4       V P	                  \        V4      ^4       V P	                  \        V^ ,          4      \        4       V P	                  \        V^,          4      \        4       V P	                  \        V^ ,          4      \        P                  4       V P	                  \        V^,          4      \        P                  4       V P                  VP                  WC\        R7      4       VP                  V\         R7      pV P	                  \        V4      \        4       V P                  VP                  WS\"        R7      4       R# )r   )	sigencode)	sigdecodeN)r   rc   rd   re   r   r   r   r   r#   r   rf   rg   r   tupler   r   r   r   )rk   r   r   rn   ro   sig_ders   &     rK   test_signature_stringsECDSA.test_signature_strings  st   ##%&&(jjcK0S8#<#<=C./jj):j;cE*S1%c!f{3c!f{3SVh&6&67SVh&6&67C9JKL**T]*;g4G]KLrJ   c                    ^pRp\         P                  p\        \        WV4      V4      w  rEV P	                  W4       V P	                  W%4       R#    i  Nr   r|   r   r   r   rk   rr   r|   new_rnew_ss   &     rK   (test_sigencode_string_canonize_no_change.ECDSA.test_sigencode_string_canonize_no_change  sK    '%aE2E
 	""rJ   c                    ^p\         P                  pV^
,
          p\        \        WV4      V4      w  rEV P	                  W4       V P	                  W#,
          V4       R# r0  Nr1  rk   r3  r|   r   r4  r5  s   &     rK   test_sigencode_string_canonize$ECDSA.test_sigencode_string_canonize  sS    BJ'%aE2E
 	"E*rJ   c                    ^pRp\         P                  p\        \        WV4      V4      w  rEV P	                  W4       V P	                  W%4       R# r/  r   r|   r   r   r   r2  s   &     rK   )test_sigencode_strings_canonize_no_change/ECDSA.test_sigencode_strings_canonize_no_change  sK    (&qU3U
 	""rJ   c                    ^p\         P                  pV^
,
          p\        \        WV4      V4      w  rEV P	                  W4       V P	                  W#,
          V4       R# r9  r>  r:  s   &     rK   test_sigencode_strings_canonize%ECDSA.test_sigencode_strings_canonize  sS    BJ(&qU3U
 	"E*rJ   c                    ^p^p\         P                  p\        \        WV4      V4      w  rEV P	                  W4       V P	                  W%4       R#    Nr   r|   r   r   r   r2  s   &     rK   %test_sigencode_der_canonize_no_change+ECDSA.test_sigencode_der_canonize_no_change  sK    $"1/
 	""rJ   c                    ^p\         P                  pV^,
          p\        \        WV4      V4      w  rEV P	                  W4       V P	                  W#,
          V4       R# rE  rG  r:  s   &     rK   test_sigencode_der_canonize!ECDSA.test_sigencode_der_canonize  sS    BJ$"1/
 	"E*rJ   c                   ^p\         P                  pV^,          ^,           p\        WV4      p\        WV4      pV P	                  WE4       \        \        WV4      V4      w  rgV P                  W4       V P                  W#,
          V4       R# rE  )r   r|   r   r   assertNotEqualr   r   )rk   r3  r|   r   regular_encodecanonical_encoder4  r5  s   &       rK   4test_sigencode_der_canonize_with_close_to_half_order:ECDSA.test_sigencode_der_canonize_with_close_to_half_order  s~    QJN&qU31!>N=$"1/
 	"E*rJ   c                    V P                  \        4      ;_uu_ 4        \        . RO^4       RRR4       R#   + '       g   i     R# ; i)   oneN)rT     twos   threerh   r   r   r   s   &rK   *test_sig_decode_strings_with_invalid_count0ECDSA.test_sig_decode_strings_with_invalid_count  s.    1228$? 3222	   7A	c                    V P                  \        4      ;_uu_ 4        \        R R.^4       RRR4       R#   + '       g   i     R# ; i)rT  rU  NrV  r   s   &rK   (test_sig_decode_strings_with_wrong_r_len.ECDSA.test_sig_decode_strings_with_wrong_r_len   s2    122vv.5 3222rY  c                    V P                  \        4      ;_uu_ 4        \        R R.^4       RRR4       R#   + '       g   i     R# ; i)   s   NrV  r   s   &rK   (test_sig_decode_strings_with_wrong_s_len.ECDSA.test_sig_decode_strings_with_wrong_s_len$  s2    122w4d; 3222rY  c                    \         P                  ! 4       pVP                  pV P                  \        4      ;_uu_ 4        VP                  R R4       R R R 4       R #   + '       g   i     R # ; i)Ns                                                                                                                                   )r   rc   r   rh   r   verify_digestr   s   &  rK   test_verify_with_too_long_input%ECDSA.test_verify_with_too_long_input(  sK      "~..T=1 /...s   AA-	c                    V P                  \        4      ;_uu_ 4        \        P                  ! ^ 4       RRR4       R#   + '       g   i     R# ; ir   N)rh   r   r   rw   r   s   &rK   4test_sk_from_secret_exponent_with_wrong_sec_exponent:ECDSA.test_sk_from_secret_exponent_with_wrong_sec_exponent/  s1    233++A. 4333	   ?A	c                    V P                  \        4      ;_uu_ 4        \        P                  ! R 4       RRR4       R#   + '       g   i     R# ; i)   N)rh   r   r   ri   r   s   &rK   )test_sk_from_string_with_wrong_len_string/ECDSA.test_sk_from_string_with_wrong_len_string3  s1    233""7+ 4333ri  c                    \         P                  ! ^4      p\         P                  ! V4      R,           pV P                  \         P                  4      ;_uu_ 4        \
        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)r   r  Nr?   encode_integerr
  rh   r   r   r   rk   ver_derr  s   &  rK   )test_sk_from_der_with_junk_after_sequence/ECDSA.test_sk_from_der_with_junk_after_sequence7  s[    $$Q'''0:=	s0011	* 2111s   A<<B	c                   \         P                  ! ^ 4      p\         P                  ! V4      pV P                  \         P                  4      ;_uu_ 4        \
        P                  ! V4       RRR4       R#   + '       g   i     R# ; irf  ro  rq  s   &  rK   #test_sk_from_der_with_wrong_version)ECDSA.test_sk_from_der_with_wrong_version>  sV    $$Q'''0	s0011	* 2111s   A55B	c                   \         P                  ! ^4      p\         P                  ! R4      p\         P                  ! R!  p\         P                  ! ^V4      p\         P
                  ! WWC4      pV P                  \         P                  4      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)r   r  Nr  
r?   rp  encode_octet_stringr	  encode_constructedr
  rh   r   r   r   rk   rr  privkey_derr  	const_derr  s   &     rK   "test_sk_from_der_invalid_const_tag(ECDSA.test_sk_from_der_invalid_const_tagE  s    $$Q'--k:	2**1m<	'')
	 s0011	* 2111s   B77C	c                   \         P                  ! ^4      p\         P                  ! R4      p\         P                  ! R!  R,           p\         P                  ! ^ V4      p\         P
                  ! WWC4      pV P                  \         P                  4      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)r   r  r  Nr  ry  r|  s   &     rK   *test_sk_from_der_garbage_after_privkey_oid0ECDSA.test_sk_from_der_garbage_after_privkey_oidQ  s    $$Q'--k:	2Z?**1m<	'')
	 s0011	* 2111s   B>>C	c                Z   \         P                  ! ^4      p\         P                  ! R4      p\         P                  ! R!  p\         P                  ! ^ V4      p\         P
                  ! WWC4      p\        P                  ! V4      pV P                  VP                  P                  ^4       R# )r   r  Nr  )r?   rp  rz  r	  r{  r
  r   r   r   r   r   )rk   rr  r}  r  r~  r  r   s   &      rK   #test_sk_from_der_with_short_privkey)ECDSA.test_sk_from_der_with_short_privkey]  s    $$Q'--k:(CD**1m<	'')
	   +55s;rJ   c                N   \         P                  ! ^4      p\         P                  ! \         P                  ! ^^RR^^4      \         P                  ! ^^RR^^^4      4      p\         P                  ! \         P                  ! \         P                  ! ^4      \         P                  ! R4      4      4      p\         P                  ! WV4      pV P                  \         P                  4      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)r   r  r  r  N	r?   rp  r
  r	  rz  rh   r   r   r   rk   rr  algorithm_derr}  r  s   &    rK   &test_sk_from_p8_der_with_wrong_version,ECDSA.test_sk_from_p8_der_with_wrong_versioni  s    $$Q'++NN1aeQ2NN1aeQ15
 --""1%s'>'>{'K

 ''L	s0011	* 2111s   2DD$	c                H   \         P                  ! ^4      p\         P                  ! \         P                  ! ^^^4      \         P                  ! ^^RR^^^4      4      p\         P                  ! \         P                  ! \         P                  ! ^4      \         P                  ! R4      4      4      p\         P                  ! WV4      pV P                  \         P                  4      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)r   r  r  r  Nr  r  s   &    rK   (test_sk_from_p8_der_with_wrong_algorithm.ECDSA.test_sk_from_p8_der_with_wrong_algorithmy  s    $$Q'++NN1a#S^^Aq#uaA%N
 --""1%s'>'>{'K

 ''L	s0011	* 2111s   /DD!	c                x   \         P                  ! ^4      p\         P                  ! \         P                  ! ^^RR^^4      \         P                  ! ^^RR^^^4      \         P                  ! R4      4      p\         P                  ! \         P                  ! \         P                  ! ^4      \         P                  ! R4      4      4      p\         P                  ! WV4      pV P                  \         P                  4      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)r   r  r  r   r  Nr  r  s   &    rK   6test_sk_from_p8_der_with_trailing_junk_after_algorithm<ECDSA.test_sk_from_p8_der_with_trailing_junk_after_algorithm  s    $$Q'++NN1aeQ2NN1aeQ15##G,

 --""1%s'>'>{'K

 ''L	s0011	* 2111s   D((D9	c                   \         P                  ! ^4      p\         P                  ! \         P                  ! ^^RR^^4      \         P                  ! ^^RR^^^4      4      p\         P                  ! \         P                  ! \         P                  ! ^4      \         P                  ! R4      4      \         P                  ! R4      ,           4      p\         P                  ! VVV\         P                  ! R4      4      pV P                  \         P                  4      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)r   r  r  r  i  r   Nr  r  s   &    rK   0test_sk_from_p8_der_with_trailing_junk_after_key6ECDSA.test_sk_from_p8_der_with_trailing_junk_after_key  s    $$Q'++NN1aeQ2NN1aeQ15
 --""1%s'>'>{'K   %&
 ''##G,	
	 s0011	* 2111s   #EE	c                    \         P                  ! ^4      pV P                  \        4      ;_uu_ 4        VP	                  R4       RRR4       R#   + '       g   i     R# ; i)r0  Nr!  )r   rw   rh   r   sign_digestr   s   & rK   test_sign_with_too_long_hash"ECDSA.test_sign_with_too_long_hash  s>    ,,R0~..NN<( /...s   AA!	c                d   \         P                  ! \        \        P                  R 7      pRpVP                  V4      p\        P                  ! VP                  4       P                  4       \        \        P                  R 7      pV P                  VP                  W24      4       \         P                  ! \        R7      pVP                  V\        P                  R7      p\        P                  ! VP                  4       P                  4       \        \        P                  R 7      pV P                  VP                  Wb4      4       \        P                  ! VP                  4       P                  4       \        R7      pV P                  VP                  W2\        P                  R7      4       R# )r   hashfuncs   security level is 128 bitsr   r  N)r   rc   r%   rx   ry   re   r   ri   rd   rj   rf   rg   )	rk   r   rn   ro   r   sk2r   vk2vk3s	   &        rK   test_hashfuncECDSA.test_hashfunc  s"     x'..I,ggdm%%  ",,.^^

 			#,-!!1xxw~~x6&&!!#--/^^

 	

4./&&  ",,.h
 	

3w~~
FGrJ   c                :   \         p\        P                  ! VR 7      pVP                  4       pRpVP	                  V4      p\
        P                  ! WTV4      pV Fo  pV P                  VP                  WT4      4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       Kq  	  T P                  VP                  P                  V Uu. uF  qwP                  P                  NK  	  up4       R# u upi )r   rb   N)r)   r   rc   rd   re   r   from_public_key_recoveryrf   rg   r   r   default_hashfuncassertInr   r   rk   r   r   r   rn   	signaturerecovered_vksrecovered_vks   &       rK   test_public_key_recoveryECDSA.test_public_key_recovery  s      u-!!# GGDM	 %==U

 *LOOL//	@A RXX|'9'9:##\%B%B * 	IIOO;HI=<  &&=I	
Is   1D
c                   \         p\        P                  ! V\        P                  R 7      pVP                  4       pRpVP                  V4      p\        P                  ! VVV\        P                  RR7      pV Fs  pV P                  VP                  WT4      4       V P                  VP                  VP                  4       V P                  \        P                  VP                  4       Ku  	  T P                  VP                  P                   V Uu. uF  qwP                  P                   NK  	  up4       R# u upi )r  rb   T)r  allow_truncateN)r)   r   rc   rx   ry   rd   re   r   r  rf   rg   r   r   r  r  r   r   r  s   &       rK   )test_public_key_recovery_with_custom_hash/ECDSA.test_public_key_recovery_with_custom_hash  s      uw~~F!!# GGDM	 %==^^
 *LOOL//	@A RXX|'9'9:W^^\-J-JK * 	IIOO;HI=<  &&=I	
Is   D=
c                   \         P                  ! R 4      pVP                  pRpV P                  VP	                  4       V4       V P                  VP	                  R4      V4       V P                  VP	                  R4      RV,           4       V P                  VP	                  R4      RVR,          ,           4       V P                  VP	                  R4      R	V,           4       R
# )r   0   dSKx !ȠcĄ)z#OHQ*r   uncompressed   
compressed   N   Nhybrid   N)r   rw   r   r   rj   )rk   r   r   exps   &   rK   test_encodingECDSA.test_encoding  s    ,,Y72 	
 	-e,c2n5w}El3Ws3x5GHh/3?rJ   c                   \         P                  ! R 4      pVP                  pRp\        P                  ! V4      pV P                  VP                  P                  VP                  P                  4       \        P                  ! RV,           4      pV P                  VP                  P                  VP                  P                  4       \        P                  ! RVR,          ,           4      pV P                  VP                  P                  VP                  P                  4       \        P                  ! RV,           4      pV P                  VP                  P                  VP                  P                  4       R# )r   r  r  r  r  r  N)r   rw   r   r   ri   r   r   r   )rk   r   r   encfrom_rawfrom_uncompressedfrom_compresseds   &      rK   test_decodingECDSA.test_decoding!  s   ,,Y72 	  ++C0..		@(44Ws]C*1177I&227SX3EF//55ryyG(44Ws]C*1177IrJ   c                    R p\         P                  ! VRR7      p\        P                  ! R4      pV P	                  W#P
                  4       R# )1   dSKx !ȠcĄ)z#OHQ*valid_encodingsr   Nr  )r   ri   r   rw   r   r   )rk   r  r   r   s   &   rK   )test_uncompressed_decoding_as_only_alowed/ECDSA.test_uncompressed_decoding_as_only_alowed7  sE    2 	 %%c;LM,,Y7--.rJ   c                    R pV P                  \        4      ;_uu_ 4       p\        P                  ! VRR7       RRR4       V P	                  R\        XP                  4      4       R#   + '       g   i     L7; i)r  r  r  Nr  rh   r   r   ri   r  str	exceptionrk   r  r  s   &  rK   %test_raw_decoding_with_blocked_format+ECDSA.test_raw_decoding_with_blocked_formatC  sY    2 	
 233s$$S+F 4 	hCMM 23 43   A((A8	c                    V P                  \        4      ;_uu_ 4       p\        P                  ! R RR7       RRR4       V P	                  R\        XP                  4      4       R#   + '       g   i     L7; i)rJ   r  NzOnly uncompressed, compressed)r   foobar)rh   r   r   ri   r  r  r  )rk   es   & rK   !test_decoding_with_unknown_format'ECDSA.test_decoding_with_unknown_formatN  sN    z**a$$S:KL + 	5s1;;7GH +*s   A&&A6	c                    R pV P                  \        4      ;_uu_ 4       p\        P                  ! VRR7       RRR4       V P	                  R\        XP                  4      4       R#   + '       g   i     L7; i)r  r  NInvalid X9.62 encodingr  r  r  s   &  rK   .test_uncompressed_decoding_with_blocked_format4ECDSA.test_uncompressed_decoding_with_blocked_formatT  sZ    2 	 233s$$S+F 4 	.CMM0BC 43r  c                    R pV P                  \        4      ;_uu_ 4       p\        P                  ! VRR7       RRR4       V P	                  R\        XP                  4      4       R#   + '       g   i     L7; i)s1   dSKx !ȠcĄ)z#OHQ*r  Nr  r  r  r  s   &  rK   (test_hybrid_decoding_with_blocked_format.ECDSA.test_hybrid_decoding_with_blocked_format`  s[    2 	 233s$$S:KL 4 	.CMM0BC 43r  c                   \         P                  ! R 4      pVP                  pVP                  R4      pV P	                  VR,          R4       RVR,          ,           p\
        P                  ! VR	RR7      pV P	                  W$4       R# )
r   r  Nr   Nr     r   NNF)r  validate_pointNr  )r   rw   r   rj   r   r   ri   rk   r   r   r  bs   &    rK   Atest_hybrid_decoding_with_inconsistent_encoding_and_no_validationGECDSA.test_hybrid_decoding_with_inconsistent_encoding_and_no_validationl  sv     ,,Y7ll8$R'*B$$U
 	rJ   c                    RpV P                  \        4      ;_uu_ 4       p\        P                  ! VRR7       RRR4       V P	                  R\        XP                  4      4       R#   + '       g   i     L7; i)s1   dSKx !ȠcĄ)z#OHQ*r  Nz(hybrid, raw)s   dSKx !Ƞc)r  r   r  r  s   &  rK   ,test_compressed_decoding_with_blocked_format2ECDSA.test_compressed_decoding_with_blocked_format|  sW     233s$$S:KL 4 	os3=='9: 43r  c                    R pV P                  \        4      ;_uu_ 4        \        P                  ! RV,           4       RRR4       R#   + '       g   i     R# ; i)r  r  Nrh   r   r   ri   rk   r  s   & rK   )test_decoding_with_malformed_uncompressed/ECDSA.test_decoding_with_malformed_uncompressed  A    2 	 233$$Ws]3 4333   AA	c                    R pV P                  \        4      ;_uu_ 4        \        P                  ! RVR,          ,           4       RRR4       R#   + '       g   i     R# ; i)r  rk  r  Nr  r  s   & rK   'test_decoding_with_malformed_compressed-ECDSA.test_decoding_with_malformed_compressed  sF    2 	 233$$Ws3x%78 4333   %AA 	c                    R pV P                  \        4      ;_uu_ 4        \        P                  ! RV,           4       RRR4       R#   + '       g   i     R# ; i)r  r  Nr  r  s   & rK   &test_decoding_with_inconsistent_hybrid,ECDSA.test_decoding_with_inconsistent_hybrid  r  r  c                b   \         P                  ! R 4      pVP                  pVP                  R4      pV P	                  VR,          R4       RVR,          ,           pV P                  \        4      ;_uu_ 4        \        P                  ! VRR7      pRRR4       R#   + '       g   i     R# ; i)	i[r  r  r  r  r  r  Nr  )	r   rw   r   rj   r   rh   r   r   ri   r  s   &    rK   0test_decoding_with_inconsistent_hybrid_odd_point6ECDSA.test_decoding_with_inconsistent_hybrid_odd_point  s    ,,Y7ll8$R'*B233((kJA 4333s   :BB.	c                    R pV P                  \        4      ;_uu_ 4        \        P                  ! VR,          R,           4       RRR4       R#   + '       g   i     R# ; i)r  :N/   N    Nr  r  s   & rK   %test_decoding_with_point_not_on_curve+ECDSA.test_decoding_with_point_not_on_curve  sF    2 	 233$$SX%78 4333r  c                    V P                  \        4      ;_uu_ 4        \        P                  ! R 4       RRR4       R#   + '       g   i     R# ; i)r   Nr  r   s   &rK   $test_decoding_with_point_at_infinity*ECDSA.test_decoding_with_point_at_infinity  s1    233$$W- 4333ri  c                J   \        \        P                  P                  4       \        P                  P                  4       ^,           4      pV P	                  \
        4      ;_uu_ 4        \        P                  ! RV,           4       RRR4       R#   + '       g   i     R# ; i)r   r  N)r   r#   r   r\   rh   r   r   ri   r  s   & rK   test_not_lying_on_curveECDSA.test_not_lying_on_curve  s`    x~~//18>>3C3C3E3IJ233$$Ws]3 4333s   )BB"	c                   \        R \        P                  \        P                  R4      p^Vn        ^ Vn        V P                  \        4      ;_uu_ 4        \        P                  ! RV4       RRR4       R#   + '       g   i     R# ; itestN)r   r   s                   
r   rA   	curve_192generator_192r   r   rh   r   r   ri   rk   r   s   & rK   9test_from_string_with_invalid_curve_too_short_ver_key_len?ECDSA.test_from_string_with_invalid_curve_too_short_ver_key_len  ^     feoou/B/BFK%'"233$$\59 4333   A88B		c                   \        R \        P                  \        P                  R4      p^Vn        ^Vn        V P                  \        4      ;_uu_ 4        \        P                  ! RV4       RRR4       R#   + '       g   i     R# ; ir
  r  r  s   & rK   8test_from_string_with_invalid_curve_too_long_ver_key_len>ECDSA.test_from_string_with_invalid_curve_too_long_ver_key_len  r  r  rD   N)HrE   rF   rG   rH   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r"  r%  r,  r6  r;  r?  rB  rH  rK  rQ  rW  r[  r_  rc  rg  rl  rs  rv  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  rI   r   r   s   @rK   r`   r`   e   sb    0%83
=O.7*
:43B31
20h0
------M.
#
+
#
+
#
++"@6<2/,++
+
+
<+ ++"+,)H2
B!
F@J,
/	4I
D
D  
;494	K9.
4	:	: 	:rJ   r`   zval,even   c                     \        V \        P                  4      pV'       d   R V,           pM	RV,           p \        P                  ! V4      p\        V\        4      '       g   Q hR#   \         d     R# i ; i)r     N)r   r#   r|   r   ri   
isinstancer   )valevenr  r   s   &&  rK   *test_VerifyingKey_decode_with_small_valuesr    sc     3
/Cmm%%c*"l++++ s   .A' 'A65A6z{0}-{1})idzcurve,encodingc                     \         P                  ! V R 7      pVP                  pVP                  V4      p\        P
                  ! W@R 7      pVP                  P                  VP                  P                  8X  g   Q hR# r   )r   rc   r   rj   r   ri   r   r   )r   encodingr   r   encodedfrom_encs   &&    rK   test_VerifyingKey_encode_decoder#    s[    			5	)B			Bll8$G''=H99??hoo33333rJ   r   c                    \         P                  ! V R 7      pVP                  4       p\        P                  ! VP                  4       V 4      pVP                  4       VP                  4       8X  g   Q h\        VP                  4       4      V P                  8X  g   Q hVP                  R4      p\        V4      V P                  8X  g   Q hR# )r   r   N)
r   rc   rd   r   ri   rj   r   r   re   r   )r   rl   r   rp   ro   s   &    rK   test_lengthsr%    s    U+D!!#D##DNN$4e<D>>t~~////t~~ E$>$>>>>
))G
Cs8u-----rJ   c                   ~  a  ] tR tRt o ]! R ]! R4      P                  R4       4       4      tR t]	P                  P                  ]	P                  P                  R]9  RR7      R	 4       4       t]	P                  P                  ]	P                  P                  R
]9  RR7      R 4       4       t]	P                  P                  ]	P                  P                  R]9  RR7      R 4       4       t]	P                  P                  ]	P                  P                  R]9  RR7      R 4       4       t]	P                  P                  ]	P                  P                  R]9  RR7      R 4       4       t]	P                  P                  ]	P                  P                  R]9  RR7      R 4       4       t]	P                  P                  ]	P                  P                  R]9  RR7      R 4       4       t]	P                  P                  ]	P                  P                  R]9  RR7      R 4       4       t]	P                  P                  ]	P                  P                  R]9  RR7      R 4       4       t]	P                  P                  ]	P                  P                  R]9  RR7      R 4       4       t]	P                  P                  ]	P                  P                  R]9  R R7      R! 4       4       t]	P                  P                  ]	P                  P                  R"]9  R#R7      R$ 4       4       t]	P                  P                  ]	P                  P                  R%]9  R&R7      R' 4       4       t]	P                  P                  ]	P                  P                  R(]9  R)R7      R* 4       4       t]	P                  P                  ]	P                  P                  R+]9  R,R7      R- 4       4       t]	P                  P                  ]	P                  P                  R.]9  R/R7      R0 4       4       t]	P                  P                  ]	P                  P                  R1]9  R2R7      R3 4       4       t]	P                  P                  ]	P                  P                  R4]9  R5R7      R6 4       4       t]	P                  P                  ]	P                  P                  R7]9  R8R7      R9 4       4       t]	P                  P                  ]	P                  P                  R:]9  R;R7      R< 4       4       t ]	P                  P                  ]	P                  P                  R=]9  R>R7      R? 4       4       t!]	P                  P                  ]	P                  P                  R@]9  RAR7      RB 4       4       t"]	P                  P                  ]	P                  P                  RC]9  RDR7      RE 4       4       t#]	P                  P                  ]	P                  P                  RF]9  RGR7      RH 4       4       t$]	P                  P                  ]	P                  P                  RI]9  RJR7      RK 4       4       t%]	P                  P                  ]	P                  P                  RL]9  RMR7      RN 4       4       t&]	P                  P                  ]	P                  P                  RO]9  RPR7      RQ 4       4       t'R~RR lt(]	P                  P                  ]	P                  P                  R]9  RR7      RS 4       4       t)]	P                  P                  ]	P                  P                  R
]9  RR7      RT 4       4       t*]	P                  P                  ]	P                  P                  R]9  RR7      RU 4       4       t+]	P                  P                  ]	P                  P                  R]9  RR7      RV 4       4       t,]	P                  P                  ]	P                  P                  R]9  RR7      RW 4       4       t-]	P                  P                  ]	P                  P                  R]9  RR7      RX 4       4       t.]	P                  P                  ]	P                  P                  R]9  RR7      RY 4       4       t/]	P                  P                  ]	P                  P                  R]9  RR7      RZ 4       4       t0]	P                  P                  ]	P                  P                  R]9  RR7      R[ 4       4       t1]	P                  P                  ]	P                  P                  R]9  RR7      R\ 4       4       t2]	P                  P                  ]	P                  P                  R]9  R R7      R] 4       4       t3]	P                  P                  ]	P                  P                  R"]9  R#R7      R^ 4       4       t4]	P                  P                  ]	P                  P                  R%]9  R&R7      R_ 4       4       t5]	P                  P                  ]	P                  P                  R(]9  R)R7      R` 4       4       t6]	P                  P                  ]	P                  P                  R+]9  R,R7      Ra 4       4       t7]	P                  P                  ]	P                  P                  R.]9  R/R7      Rb 4       4       t8]	P                  P                  ]	P                  P                  R1]9  R2R7      Rc 4       4       t9]	P                  P                  ]	P                  P                  R4]9  R5R7      Rd 4       4       t:]	P                  P                  ]	P                  P                  R7]9  R8R7      Re 4       4       t;]	P                  P                  ]	P                  P                  R:]9  R;R7      Rf 4       4       t<]	P                  P                  ]	P                  P                  R=]9  R>R7      Rg 4       4       t=]	P                  P                  ]	P                  P                  R@]9  RAR7      Rh 4       4       t>]	P                  P                  ]	P                  P                  RC]9  RDR7      Ri 4       4       t?]	P                  P                  ]	P                  P                  RF]9  RGR7      Rj 4       4       t@]	P                  P                  ]	P                  P                  RI]9  RJR7      Rk 4       4       tA]	P                  P                  ]	P                  P                  RL]9  RMR7      Rl 4       4       tB]	P                  P                  ]	P                  P                  RO]9  RPR7      Rm 4       4       tCR~Rn ltD]! 4       tE Ro]! Rp4      9   d   ]! Rq R 4       4      tERr tG]	P                  P                  ]	P                  P                  Rs]E9  RtR7      Ru 4       4       tH]	P                  P                  ]	P                  P                  Rv]E9  RwR7      Rx 4       4       tIRy tJ]	P                  P                  ]	P                  P                  Rs]E9  RtR7      Rz 4       4       tK]	P                  P                  ]	P                  P                  Rv]E9  RwR7      R{ 4       4       tLR|tMT tNR}#   ]F d     ELi ; i)OpenSSLi  c              #  n   "   T F+  pVP                  R 4      ^ ,          P                  4       x  K-  	  R# 5i:NrT   r   .0cs   & rK   	<genexpr>OpenSSL.<genexpr>(  /      #@A 	
Q@   35ecparam -list_curves
c                    \        R 4      pVP                  4       ^,          P                  R4      pV. RO8  d   RP                  V4      # RP                  V4      # )version.z-{0}z-ecdsa-with-{0})10r9  )r^   rT   format)rk   	hash_namevvss   &&  rK   get_openssl_messagedigest_arg%OpenSSL.get_openssl_messagedigest_arg-  sP    	" WWYq\$ ==++$++I66rJ   	secp112r1z)system openssl does not support secp112r1reasonc                ,    V P                  \        4      # r   )do_test_from_opensslr   r   s   &rK   test_from_openssl_secp112r1#OpenSSL.test_from_openssl_secp112r1;       ((33rJ   	secp112r2z)system openssl does not support secp112r2c                ,    V P                  \        4      # r   )rD  r    r   s   &rK   test_from_openssl_secp112r2#OpenSSL.test_from_openssl_secp112r2C  rG  rJ   	secp128r1z)system openssl does not support secp128r1c                ,    V P                  \        4      # r   )rD  r!   r   s   &rK   test_from_openssl_secp128r1#OpenSSL.test_from_openssl_secp128r1K  rG  rJ   	secp160r1z)system openssl does not support secp160r1c                ,    V P                  \        4      # r   )rD  r"   r   s   &rK   test_from_openssl_secp160r1#OpenSSL.test_from_openssl_secp160r1S  rG  rJ   
prime192v1*system openssl does not support prime192v1c                ,    V P                  \        4      # r   rD  r#   r   s   &rK   test_from_openssl_nist192p"OpenSSL.test_from_openssl_nist192p[       ((22rJ   c                .    V P                  \        R 4      # )SHA256rW  r   s   &rK   !test_from_openssl_nist192p_sha256)OpenSSL.test_from_openssl_nist192p_sha256c       ((8<<rJ   	secp224r1z)system openssl does not support secp224r1c                ,    V P                  \        4      # r   )rD  r$   r   s   &rK   test_from_openssl_nist224p"OpenSSL.test_from_openssl_nist224pk  rZ  rJ   
prime256v1z*system openssl does not support prime256v1c                ,    V P                  \        4      # r   rD  r%   r   s   &rK   test_from_openssl_nist256p"OpenSSL.test_from_openssl_nist256ps  rZ  rJ   c                .    V P                  \        R 4      # )SHA384rf  r   s   &rK   !test_from_openssl_nist256p_sha384)OpenSSL.test_from_openssl_nist256p_sha384{  r_  rJ   c                .    V P                  \        R 4      # )SHA512rf  r   s   &rK   !test_from_openssl_nist256p_sha512)OpenSSL.test_from_openssl_nist256p_sha512  r_  rJ   	secp384r1z)system openssl does not support secp384r1c                ,    V P                  \        4      # r   )rD  r&   r   s   &rK   test_from_openssl_nist384p"OpenSSL.test_from_openssl_nist384p  rZ  rJ   	secp521r1z)system openssl does not support secp521r1c                ,    V P                  \        4      # r   )rD  r'   r   s   &rK   test_from_openssl_nist521p"OpenSSL.test_from_openssl_nist521p  rZ  rJ   	secp256k1z)system openssl does not support secp256k1c                ,    V P                  \        4      # r   )rD  r(   r   s   &rK   test_from_openssl_secp256k1#OpenSSL.test_from_openssl_secp256k1  rG  rJ   brainpoolP160r1z/system openssl does not support brainpoolP160r1c                ,    V P                  \        4      # r   )rD  r)   r   s   &rK   !test_from_openssl_brainpoolp160r1)OpenSSL.test_from_openssl_brainpoolp160r1       ((99rJ   brainpoolP192r1z/system openssl does not support brainpoolP192r1c                ,    V P                  \        4      # r   )rD  r*   r   s   &rK   !test_from_openssl_brainpoolp192r1)OpenSSL.test_from_openssl_brainpoolp192r1  r  rJ   brainpoolP224r1z/system openssl does not support brainpoolP224r1c                ,    V P                  \        4      # r   )rD  r+   r   s   &rK   !test_from_openssl_brainpoolp224r1)OpenSSL.test_from_openssl_brainpoolp224r1  r  rJ   brainpoolP256r1z/system openssl does not support brainpoolP256r1c                ,    V P                  \        4      # r   )rD  r,   r   s   &rK   !test_from_openssl_brainpoolp256r1)OpenSSL.test_from_openssl_brainpoolp256r1  r  rJ   brainpoolP320r1z/system openssl does not support brainpoolP320r1c                ,    V P                  \        4      # r   )rD  r-   r   s   &rK   !test_from_openssl_brainpoolp320r1)OpenSSL.test_from_openssl_brainpoolp320r1  r  rJ   brainpoolP384r1z/system openssl does not support brainpoolP384r1c                ,    V P                  \        4      # r   )rD  r.   r   s   &rK   !test_from_openssl_brainpoolp384r1)OpenSSL.test_from_openssl_brainpoolp384r1  r  rJ   brainpoolP512r1z/system openssl does not support brainpoolP512r1c                ,    V P                  \        4      # r   )rD  r/   r   s   &rK   !test_from_openssl_brainpoolp512r1)OpenSSL.test_from_openssl_brainpoolp512r1  r  rJ   brainpoolP160t1z/system openssl does not support brainpoolP160t1c                ,    V P                  \        4      # r   )rD  r0   r   s   &rK   !test_from_openssl_brainpoolp160t1)OpenSSL.test_from_openssl_brainpoolp160t1  r  rJ   brainpoolP192t1z/system openssl does not support brainpoolP192t1c                ,    V P                  \        4      # r   )rD  r1   r   s   &rK   !test_from_openssl_brainpoolp192t1)OpenSSL.test_from_openssl_brainpoolp192t1  r  rJ   brainpoolP224t1z/system openssl does not support brainpoolP224t1c                ,    V P                  \        4      # r   )rD  r2   r   s   &rK   !test_from_openssl_brainpoolp224t1)OpenSSL.test_from_openssl_brainpoolp224t1  r  rJ   brainpoolP256t1z/system openssl does not support brainpoolP256t1c                ,    V P                  \        4      # r   )rD  r3   r   s   &rK   !test_from_openssl_brainpoolp256t1)OpenSSL.test_from_openssl_brainpoolp256t1  r  rJ   brainpoolP320t1z/system openssl does not support brainpoolP320t1c                ,    V P                  \        4      # r   )rD  r4   r   s   &rK   !test_from_openssl_brainpoolp320t1)OpenSSL.test_from_openssl_brainpoolp320t1  r  rJ   brainpoolP384t1z/system openssl does not support brainpoolP384t1c                ,    V P                  \        4      # r   )rD  r5   r   s   &rK   !test_from_openssl_brainpoolp384t1)OpenSSL.test_from_openssl_brainpoolp384t1  r  rJ   brainpoolP512t1z/system openssl does not support brainpoolP512t1c                ,    V P                  \        4      # r   )rD  r6   r   s   &rK   !test_from_openssl_brainpoolp512t1)OpenSSL.test_from_openssl_brainpoolp512t1  r  rJ   c           
     
   VP                   pV'       g   Q hV P                  V4      p\        P                  P	                  R 4      '       d   \
        P                  ! R 4       \        P                  ! R 4       \        RV,          4       \        R4       Rp\        RR4      ;_uu_ 4       pVP                  V4       RRR4       \        RV,          4       \        RV,          4       \        R	R
4      ;_uu_ 4       pVP                  4       pRRR4       \        P                  ! X4      p\        RR
4      ;_uu_ 4       pVP                  4       p	RRR4       V P                  VP                  X	V\!        \"        P$                  V4      \&        R7      4       \        R4      ;_uu_ 4       pVP                  4       p
RRR4       \(        P                  ! X
4      pVP+                  V\!        \"        P$                  V4      R7      pV P                  VP                  W\!        \"        P$                  V4      R7      4       \        R4       \        RR
4      ;_uu_ 4       pVP                  4       pRRR4       \(        P                  ! X4      pV P-                  W4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL); i  + '       g   i     L; i)tz+ecparam -name %s -genkey -out t/privkey.pemz.ec -in t/privkey.pem -pubout -out t/pubkey.pemr   
t/data.txtwbNz6dgst %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)r  r)  t/privkey.pemr  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   &&&            rK   rD  OpenSSL.do_test_from_openssl  s2   &&	y 229=77==MM#
AIMNDE,%%GGDM &DuL	
 	K	
 .$''1J ("":.,%%ffhG &II i8'	  	
 /""aB #  $ggdWW[[)%DgEIIc''++y*IIJ	
 	C	
 $d++qVVXN ,((8
(M &%% ('' &%% #"" ,+s<   ,J">J6K
-K K2"J3	6K	
K	K/	2L	c                0    V P                  \        4       R # r   )do_test_to_opensslr   r   s   &rK   test_to_openssl_secp112r1!OpenSSL.test_to_openssl_secp112r1G       		*rJ   c                0    V P                  \        4       R # r   )r  r    r   s   &rK   test_to_openssl_secp112r2!OpenSSL.test_to_openssl_secp112r2O  r  rJ   c                0    V P                  \        4       R # r   )r  r!   r   s   &rK   test_to_openssl_secp128r1!OpenSSL.test_to_openssl_secp128r1W  r  rJ   c                0    V P                  \        4       R # r   )r  r"   r   s   &rK   test_to_openssl_secp160r1!OpenSSL.test_to_openssl_secp160r1_  r  rJ   c                0    V P                  \        4       R # r   r  r#   r   s   &rK   test_to_openssl_nist192p OpenSSL.test_to_openssl_nist192pg       	)rJ   c                2    V P                  \        R 4       R# )r\  Nr  r   s   &rK   test_to_openssl_nist192p_sha256'OpenSSL.test_to_openssl_nist192p_sha256o       	(3rJ   c                0    V P                  \        4       R # r   )r  r$   r   s   &rK   test_to_openssl_nist224p OpenSSL.test_to_openssl_nist224pw  r  rJ   c                0    V P                  \        4       R # r   r  r%   r   s   &rK   test_to_openssl_nist256p OpenSSL.test_to_openssl_nist256p  r  rJ   c                2    V P                  \        R 4       R# )rj  Nr  r   s   &rK   test_to_openssl_nist256p_sha384'OpenSSL.test_to_openssl_nist256p_sha384  r  rJ   c                2    V P                  \        R 4       R# )rn  Nr  r   s   &rK   test_to_openssl_nist256p_sha512'OpenSSL.test_to_openssl_nist256p_sha512  r  rJ   c                0    V P                  \        4       R # r   )r  r&   r   s   &rK   test_to_openssl_nist384p OpenSSL.test_to_openssl_nist384p  r  rJ   c                0    V P                  \        4       R # r   )r  r'   r   s   &rK   test_to_openssl_nist521p OpenSSL.test_to_openssl_nist521p  r  rJ   c                0    V P                  \        4       R # r   )r  r(   r   s   &rK   test_to_openssl_secp256k1!OpenSSL.test_to_openssl_secp256k1  r  rJ   c                0    V P                  \        4       R # r   )r  r)   r   s   &rK   test_to_openssl_brainpoolp160r1'OpenSSL.test_to_openssl_brainpoolp160r1       	0rJ   c                0    V P                  \        4       R # r   )r  r*   r   s   &rK   test_to_openssl_brainpoolp192r1'OpenSSL.test_to_openssl_brainpoolp192r1  r  rJ   c                0    V P                  \        4       R # r   )r  r+   r   s   &rK   test_to_openssl_brainpoolp224r1'OpenSSL.test_to_openssl_brainpoolp224r1  r  rJ   c                0    V P                  \        4       R # r   )r  r,   r   s   &rK   test_to_openssl_brainpoolp256r1'OpenSSL.test_to_openssl_brainpoolp256r1  r  rJ   c                0    V P                  \        4       R # r   )r  r-   r   s   &rK   test_to_openssl_brainpoolp320r1'OpenSSL.test_to_openssl_brainpoolp320r1  r  rJ   c                0    V P                  \        4       R # r   )r  r.   r   s   &rK   test_to_openssl_brainpoolp384r1'OpenSSL.test_to_openssl_brainpoolp384r1  r  rJ   c                0    V P                  \        4       R # r   )r  r/   r   s   &rK   test_to_openssl_brainpoolp512r1'OpenSSL.test_to_openssl_brainpoolp512r1  r  rJ   c                0    V P                  \        4       R # r   )r  r0   r   s   &rK   test_to_openssl_brainpoolp160t1'OpenSSL.test_to_openssl_brainpoolp160t1  r  rJ   c                0    V P                  \        4       R # r   )r  r1   r   s   &rK   test_to_openssl_brainpoolp192t1'OpenSSL.test_to_openssl_brainpoolp192t1  r  rJ   c                0    V P                  \        4       R # r   )r  r2   r   s   &rK   test_to_openssl_brainpoolp224t1'OpenSSL.test_to_openssl_brainpoolp224t1  r  rJ   c                0    V P                  \        4       R # r   )r  r3   r   s   &rK   test_to_openssl_brainpoolp256t1'OpenSSL.test_to_openssl_brainpoolp256t1  r  rJ   c                0    V P                  \        4       R # r   )r  r4   r   s   &rK   test_to_openssl_brainpoolp320t1'OpenSSL.test_to_openssl_brainpoolp320t1  r  rJ   c                0    V P                  \        4       R # r   )r  r5   r   s   &rK   test_to_openssl_brainpoolp384t1'OpenSSL.test_to_openssl_brainpoolp384t1  r  rJ   c                0    V P                  \        4       R # r   )r  r6   r   s   &rK   test_to_openssl_brainpoolp512t1'OpenSSL.test_to_openssl_brainpoolp512t1  r  rJ   c           	        VP                   pV'       g   Q hV P                  V4      p\        P                  P	                  R 4      '       d   \
        P                  ! R 4       \        P                  ! R 4       \        P                  ! VR7      pVP                  4       pRp\        RR4      ;_uu_ 4       pVP                  VP                  4       4       RRR4       \        RR4      ;_uu_ 4       pVP                  VP                  4       4       RRR4       VP                  V\!        \"        P$                  V4      \&        R7      p	\        RR4      ;_uu_ 4       pVP                  V	4       RRR4       \        R	R4      ;_uu_ 4       pVP                  V4       RRR4       \        R
R4      ;_uu_ 4       pVP                  VR,           4       RRR4       V P)                  \*        \,        RV,          4       \-        RV,          4       \        RR4      ;_uu_ 4       pVP                  VP                  4       4       RRR4       \-        RV,          4       \-        RV,          4       \        RR4      ;_uu_ 4       pVP                  VP                  RR7      4       RRR4       \-        RV,          4       \-        RV,          4       \        RR4      ;_uu_ 4       pVP                  VP                  RR7      4       RRR4       \-        RV,          4       \-        RV,          4       \        RR4      ;_uu_ 4       pVP                  VP                  RRR7      4       RRR4       \-        RV,          4       \-        RV,          4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELY; i  + '       g   i     EL?; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELt; i  + '       g   i     EL&; i  + '       g   i     L; i)r  r   r   t/pubkey.derr  Nr  )r  r(  r  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.txtr  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.txtr  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)r  r>  r  r  r  r  r  r  r   rc   rd   r  r  r   r   re   r   rx   r  r   rh   rC   r^   )
rk   r   r;  r  r  r   r   rn   r  r+  s
   &&&       rK   r  OpenSSL.do_test_to_openssl  s=   &&	y 229=77==MM#
  u-!!#.$''1GGBIIK  (.$''1GGBIIK  (''W[[)4#  
 ,%%GGG &,%%GGDM &/4((AGGD:%& ) 	[	
 	X	

 /4((AGGBIIK  )EM	
 	L	

 *D11QGGBII
ICD 2N	
 	L	

 $d++qGGBIIWI-. ,H	
 	L	

 -t44GG		J	O 5 	Q	
 	L	
I (''''' &%%%%%((( )(( 211 ,++ 54sl   6 N2 N,O O:O(# O<"P%"P$#P8N)	,N=	 O	O%	(O9	<P	P!	$P5	8Q	z-rawinzpkeyutl -helpc              #  f   "   T F'  pV\        R 4      9   g   K  VP                  4       x  K)  	  R# 5i)zlist -public-key-methodsN)r^   lowerr,  s   & rK   r/  r0  w  s/      *-A$>?? 		-s   11c                   \         P                  P                  R 4      '       d   \        P                  ! R 4       \         P
                  ! R 4       \        P                  ! VR7      pVP                  4       pRp\        RR4      ;_uu_ 4       pVP                  VP                  4       4       RRR4       \        RR4      ;_uu_ 4       pVP                  VP                  4       4       RRR4       VP                  V4      p\        RR4      ;_uu_ 4       pVP                  V4       RRR4       \        RR4      ;_uu_ 4       pVP                  V4       RRR4       \        R	R4      ;_uu_ 4       pVP                  VR
,           4       RRR4       V P                  \        4      ;_uu_ 4        \!        R4       RRR4       \!        R4       \        P                  ! R 4       R#   + '       g   i     ELC; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i)r  r   r   r*  r  Nr  r  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)r  r  r  r  r  r  r   rc   rd   r  r  r   r   re   rh   rC   r^   )rk   r   r   r   rn   r  ro   s   &&     rK   do_eddsa_test_to_openssl OpenSSL.do_eddsa_test_to_openssl  s   77==MM#
  u-!!#.$''1GGBIIK  (.$''1GGBIIK  ( ggdm,%%GGCL &,%%GGDM &/4((AGGD:%& ) //8 0
 	1	

 	c1 ('''''
 &%%%(( 0/sH    G) G=HH$4H72I
)G:	=H	H!	$H4	7I	
I	ed25519z4system openssl does not support signing with Ed25519c                ,    V P                  \        4      # r   )r4  r7   r   s   &rK   test_to_openssl_ed25519OpenSSL.test_to_openssl_ed25519  s     ,,W55rJ   ed448z2system openssl does not support signing with Ed448c                ,    V P                  \        4      # r   )r4  r8   r   s   &rK   test_to_openssl_ed448OpenSSL.test_to_openssl_ed448  s     ,,U33rJ   c                V   VP                   p\        P                  P                  R 4      '       d   \        P
                  ! R 4       \        P                  ! R 4       Rp\        RP                  V4      4       \        R4       \        RR4      ;_uu_ 4       pVP                  V4       RRR4       \        R4       \        RR	4      ;_uu_ 4       pVP                  4       pRRR4       \        R
R	4      ;_uu_ 4       p\        P                  ! VP                  4       4      pRRR4       V P                  XP                  V4       VP!                  XV4       \        P
                  ! R 4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L|; i)r  r   z6genpkey -algorithm {0} -outform PEM -out t/privkey.pemz=pkey -outform PEM -pubout -in t/privkey.pem -out t/pubkey.pemr  r  NzHpkeyutl -sign -inkey t/privkey.pem -rawin -in t/data.txt -out t/data.sigr  r  r  )namer  r  r  r  r  r  r^   r:  r  r  r  r   r   assertIsr   rg   )rk   r   r  rn   r  ro   r   s   &&     rK   do_eddsa_test_from_openssl"OpenSSL.do_eddsa_test_from_openssl  s    JJ	77==MM#
DKK	

 	K	
 ,%%GGDM &4	

 ,%%&&(C &.$''1&&qvvx0B ( 	bhh&
		#tc! &% &%''s$   E2F?%F2F	F	F(	c                ,    V P                  \        4      # r   )rA  r7   r   s   &rK   test_from_openssl_ed25519!OpenSSL.test_from_openssl_ed25519  s     ..w77rJ   c                ,    V P                  \        4      # r   )rA  r8   r   s   &rK   test_from_openssl_ed448OpenSSL.test_from_openssl_ed448  s     ..u55rJ   rD   N)SHA1)ED25519ED448)OrE   rF   rG   rH   setr^   rT   OPENSSL_SUPPORTED_CURVESr>  pytestmarkslowskipifrE  rJ  rN  rR  rX  r]  rb  rg  rk  ro  rs  rw  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rD  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  OPENSSL_SUPPORTED_TYPESrC   r4  r8  r<  rA  rD  rG  rI   r   r   s   @rK   r'  r'    ss    $  # #34::4@#  
7 [[[[33:  4	 
4 [[[[33:  4	 
4 [[[[33:  4	 
4 [[[[33:  4	 
4 [[[[44;  3	 
3 [[[[44;  =	 
= [[[[33:  3	 
3 [[[[44;  3	 
3 [[[[44;  =	 
= [[[[44;  =	 
= [[[[33:  3	 
3 [[[[33:  3	 
3 [[[[33:  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)h [[[[33:  +	 
+ [[[[33:  +	 
+ [[[[33:  +	 
+ [[[[33:  +	 
+ [[[[44;  *	 
* [[[[44;  4	 
4 [[[[33:  *	 
* [[[[44;  *	 
* [[[[44;  4	 
4 [[[[44;  4	 
4 [[[[33:  *	 
* [[[[33:  *	 
* [[[[33:  +	 
+ [[[[!99@  1	 
1 [[[[!99@  1	 
1 [[[[!99@  1	 
1 [[[[!99@  1	 
1 [[[[!99@  1	 
1 [[[[!99@  1	 
1 [[[[!99@  1	 
1 [[[[!99@  1	 
1 [[[[!99@  1	 
1 [[[[!99@  1	 
1 [[[[!99@  1	 
1 [[[[!99@  1	 
1 [[[[!99@  1	 
1 [[[[!99@  1	 
1S
j "e{?33&) *-* '#!J [[[[00E  6	 
6 [[[[..C  4	 
4"H [[[[00E  8	 
8 [[[[..C  6	 
6S  s   z1 1z<;z<r'  c                      a  ] tR tRt o ]! R ]! R4      P                  R4       4       4      t]P                  P                  R]9  RR7      R 4       t]P                  P                  R]9  RR7      R	 4       tR
tV tR# )TooSmallCurvei  c              #  n   "   T F+  pVP                  R 4      ^ ,          P                  4       x  K-  	  R# 5ir)  r+  r,  s   & rK   r/  TooSmallCurve.<genexpr>  r1  r2  r3  r4  rT  rU  rA  c           	        \         P                  ! \        R 7      pRpV P                  \        4      ;_uu_ 4        VP                  V\        \        P                  R4      \        RR7       RRR4       R#   + '       g   i     R# ; i)r   r   r\  Fr  r(  r  N)
r   rc   r#   rh   r   re   r   rx   r  r   )rk   r   rn   s   &  rK   4test_sign_too_small_curve_dont_allow_truncate_raisesBTooSmallCurve.test_sign_too_small_curve_dont_allow_truncate_raises  sa    
   x0~..GG h7'$	   /...s   2A77B	c           
        \         P                  ! \        R 7      pVP                  4       pRpVP	                  V\        \        P                  R4      \        RR7      pV P                  \        4      ;_uu_ 4        VP                  VV\        \        P                  R4      \        RR7       RRR4       R#   + '       g   i     R# ; i)r   r   r\  TrX  F)r  r)  r  N)r   rc   r#   rd   re   r   rx   r  r   rh   r   rg   r   )rk   r   r   rn   r+  s   &    rK   6test_verify_too_small_curve_dont_allow_truncate_raisesDTooSmallCurve.test_verify_too_small_curve_dont_allow_truncate_raises  s    
   x0!!#''W[[(3#	  
 ~..II h7'$   /...s   <3B99C
	rD   N)rE   rF   rG   rH   rL  r^   rT   rM  rN  rO  rQ  rY  r\  rI   r   r   s   @rK   rT  rT    s     " #34::4@#  
 [[44;  			 [[44;  	rJ   rT  c                   >   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	DERi  c                   V P                  \        P                  ! ^ 4      R4       V P                  \        P                  ! ^4      R4       V P                  \        P                  ! ^4      R4       V P                  \        P                  ! ^4      R4       V P                  \        P                  ! R4      R4       R pV P                  V! ^ 4      R
4       V P                  V! ^4      R4       V P                  V! ^4      R4       V P                  V! ^4      R4       V P                  V! R4      R4       V P                  V! R4      R4       R	# )r   s    s   s   s    r  s    c                 d    \         P                  ! \         P                  ! V 4      R ,           4      # )r   )r?   remove_integerrp  )ns   &rK   r   DER.test_integer.<locals>.s  s#    %%c&8&8&;g&EFFrJ   	   
~[~e;~pdN)r   r   )r   r   )   r   )   r   )r  r   )re  r   )r   r?   rp  )rk   r   s   & rK   test_integerDER.test_integer  s   ++A.@++A.@++C0/B++C02EF++C02EF	G 	1|,1|,30303067?	
rJ   c                   V P                  \        P                  ! ^ 4      R4       V P                  \        P                  ! ^4      R4       V P                  \        P                  ! ^4      R4       V P                  \        P                  ! R4      R4       R F]  p\        P                  ! V4      R,           p\        P                  ! V4      w  r4V P                  W14       V P                  W$R R4       K_  	  R# )	r   r      s    s      moreN  )r   r   r   rf  rg  rm  r  r  )r   r?   encode_numberread_numberrk   rc  xn1llens   &    rK   test_numberDER.test_number,  s    **1-w7**3/9**3/=**;7E >A!!!$w.Aq)HBR#QuXw/	 >rJ   c                ,   V P                  \        P                  ! ^ 4      R4       V P                  \        P                  ! ^4      R4       V P                  \        P                  ! ^4      R4       V P                  \        P                  ! ^4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! R4      R4       V P                  \        P                  ! ^4      R4       R F]  p\        P                  ! V4      R	,           p\        P                  ! V4      w  r4V P                  W14       V P                  W$R
 R	4       K_  	  R
# )r   r   rk  s   s   r  s    s   s   rl  N  s   more)   r   )	r   r   r   rf  rg     r  rw  rx  )r   r?   encode_lengthread_lengthrp  s   &    rK   test_lengthDER.test_length9  s+   **1-w7**3/9**3/=**3/=**3/A**;7I)>?J**3/=@A!!!$w.Aq)HBR#QuXw/	 ArJ   c                    \         P                  ! R R4      R,           pV P                  VR4       \         P                  ! V4      w  r#V P                  VR4       V P                  VR4       R# )s   ABCs   DEFs   GHIs   0ABCDEFGHIs   ABCDEFN)r?   r
  r   remove_sequence)rk   rq  x1rests   &   rK   test_sequenceDER.test_sequenceH  s\    /&801&&q)Y'v&rJ   c                    \         P                  ! ^ \        P                  4      pV P	                  \        V4      R4       \         P                  ! ^\        R4      4      pV P	                  \        V4      R4       R# )r   s   0102030a0b0cNs   a00706052b81040021s   a1060102030a0b0c)r?   r{  r$   encoded_oidr   r   r   )rk   rq  s   & rK   test_constructedDER.test_constructedO  s[    ""1h&:&:;%@A""1i&@A%>?rJ   rD   N)rE   rF   rG   rH   rh  rt  r|  r  r  rI   r   r   s   @rK   r_  r_    s%     
*00'@ @rJ   r_  c                      a  ] tR tRt o ]P
                  P                  R 4       tR t]	! R/ ]
B ]! ]P                  ! ^ ^
^,          R7      4      R 4       4       tR tRtV tR# )	UtiliV  c                F   \         P                  p\        R 4       FE  pRV,          pR F3  pV! W44      pT P                  ^Tu;8*  ;'       d    V8  Mu ^WT34       K5  	  KG  	  V P	                  RV! R\
        P                  4      ,          P                  4       R4       R# )i  seed-%dz%xr   s8   6fa59d73bf0446ae8743cf748fc5ac11d5585a90356417e97155c3bcN)   ry  r  i  i      )r   r   rangerf   r   r$   r|   encode)rk   ttair   r|   rc  s   &     rK   test_trytryagainUtil.test_trytryagainW  s    33tAq=D $QA>  	S0199;G	
rJ   c                    \         P                  p^pRpV! W24      p\        P                  R8  d   V P	                  V^4       R# V P	                  V^4       R# )r   s   textN)r   r   )r   r   sysversion_infor   )rk   r  r|   r   rc  s   &    rK   test_trytryagain_singleUtil.test_trytryagain_singlem  sO    33f$Q$Q#rJ   )	min_value	max_valuec                    \         P                  ! R V,          4      pR FB  p\         P                  ! W2R7      pT P                  ^Tu;8*  ;'       d    V8  Mu ^WC34       KD  	  R# )r  r   N)r  ry  r  r  r  )r   PRNG	randrangerf   )rk   r  r   r|   rc  s   &&   rK   test_randrangeUtil.test_randrangex  sN    
 ))IM*
E u6AOOANNUNQM:
rJ   c                   ^p\        \        ^V4       Uu. uF  q"^ 3NK  	  up4      p^ V9  g   Q hW9  g   Q h\        R4       F6  pRV,          p\        P                  ! WA4      pW5;;,          ^,          uu&   K8  	  V P	                  W1^,
          ,          4       \        ^V4       F+  p\        RVRW2,          ^d,          ,          3,          4       K-  	  R# u upi )r   i@B r  z%3d: %s*N)dictr  r   r   rf   print)rk   r|   r  countsr   rc  s   &     rK   OFF_test_prove_uniformityUtil.OFF_test_prove_uniformity  s    uQ7!1v78"""wAq=D55dBAINI  
 	qy)*q%A)q#c)9":;;< ! 8s   CrD   N)rE   rF   rG   rH   rN  rO  rP  r  r  r
   HYP_SETTINGSr	   stintegersr  r  rI   r   r   s   @rK   r  r  V  sh     [[
 
*	$ 
2;;b#g67; 8 ;= =rJ   r  c                      a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tRtV tR# )RFC6979i  c                t    \         P                  ! VP                  4       W$V4      pV P                  WV4       R # r   )r@   rz   r|   r   )rk   r{   r   hsh	hash_funcexpectedactuals   &&&&&& rK   _doRFC6979._do  s+    ##IOO$5v#N*rJ   c           
         V P                  \        P                  \        R^4      \        P
                  ! R4      P                  4       \        P
                  \        R^4      R7       R# )zRFC doesn't contain test vectors for SECP256k1 used in bitcoin.
This vector has been computed by Golang reference implementation instead.rt      sample@8fa1f95d514760e498f28957b824ee6ec39ed64826ff4fecc2b5739ec45b91cdr{   r   r  r  r  Nr  r(   r{   rv   rx   ry   r}   r   s   &rK   test_SECP256k1RFC6979.test_SECP256k1  sS     	))92>y)002nnR 	 		
rJ   c           
         V P                  \        P                  \        R ^4      \        P
                  ! R4      P                  4       \        P
                  \        R^4      R7       R# )@cca9fbcc1b41e5a95d369eaa6ddcff73b61a4efaa279cfc6567e8daa39cbaf50r  @2df40ca70e639d89528a6b670d9d48d9165fdc0febc0974056bdce192b8e16a3r  Nr  r   s   &rK   test_SECP256k1_2RFC6979.test_SECP256k1_2  sV    ))R y)002nnR 	 	
rJ   c                    V P                  \        P                  ^\        P                  ! R4      P                  4       \        P                  RR7       R# )r      Satoshi Nakamotol   ]iHsiNPIz$Nkxke} r  Nr  r(   r{   rx   ry   r}   r   s   &rK   test_SECP256k1_3RFC6979.test_SECP256k1_3  s?    ))23::<nnW 	 	
rJ   c                    V P                  \        P                  ^\        P                  ! R4      P                  4       \        P                  RR7       R# )r   sJ   All those moments will be lost in time, like tears in rain. Time to die...l   V1ujcCXxi
nH0G<VHk8r  Nr  r   s   &rK   test_SECP256k1_4RFC6979.test_SECP256k1_4  s?    ))]fhnnW 	 	
rJ   c                    V P                  \        P                  R \        P                  ! R4      P                  4       \        P                  RR7       R# )l   @Al 3z~i9nW~ r  l   oTP*(9LM$dhW5Dv8M3r  Nr  r   s   &rK   test_SECP256k1_5RFC6979.test_SECP256k1_5  s?    ))U23::<nnW 	 	
rJ   c                    V P                  \        P                  R \        P                  ! R4      P                  4       \        P                  RR7       R# )l   A hb+Jn p.(d0^y8Wx s   Alan Turingl   }:Anq`0=	39pC[AZRr  Nr  r   s   &rK   test_SECP256k1_6RFC6979.test_SECP256k1_6  s>    ))U~.557nnW 	 	
rJ   c                    V P                  \        R ^ ^ \        R^4      4      \        R^4      \        R4      \        P
                  \        R^4      R7       R # )N)4000000000000000000020108A2E0CC0D99F8A5EF)09A4D6792295A7F730FC3F2B49CBC0F62E862272Fs@   AF2BDBE1AA9B6EC1E2ADE1D694F41FC71A831D0268E9891562113D8A62ADD1BF)23AF4074C90A02B3FE61D286D5C87F425E6BDD81Br  )r  r>   rv   r   rx   ry   r   s   &rK   test_1RFC6979.test_1  s[    ?D	 BBGS nnDbI 	 	
rJ   c           
         V P                  \        P                  \        R ^4      \        P
                  ! R4      P                  4       \        P
                  \        R^4      R7       R# )06FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4r  037D7CA00D2C7B0E5E412AC03BD44BA837FDD5B28CD3B0021r  Nr  r#   r{   rv   rx   sha1r}   r   s   &rK   test_2RFC6979.test_2  sP    ((I2NY'..0llBB 	 	
rJ   c           
         V P                  \        P                  \        R ^4      \        P
                  ! R4      P                  4       \        P
                  \        R^4      R7       R# )r  r  032B1B6D7D42A05CB449065727A84804FB1A3E34D8F261496r  Nr  r#   r{   rv   rx   ry   r}   r   s   &rK   test_3RFC6979.test_3  P    ((I2Ny)002nnBB 	 	
rJ   c           
         V P                  \        P                  \        R ^4      \        P
                  ! R4      P                  4       \        P
                  \        R^4      R7       R# )r  r  0A2AC7AB055E4F20692D49209544C203A7D1F2C0BFBC75DB1r  Nr  r#   r{   rv   rx   sha512r}   r   s   &rK   test_4RFC6979.test_4  r  rJ   c           
         V P                  \        P                  \        R ^4      \        P
                  ! R4      P                  4       \        P
                  \        R^4      R7       R# )r     test0D9CF9C3D3297D3260773A1DA7418DB5537AB8DD93DE7FA25r  Nr  r   s   &rK   test_5RFC6979.test_5  sP    ((I2NW%,,.llBB 	 	
rJ   c           
         V P                  \        P                  \        R ^4      \        P
                  ! R4      P                  4       \        P
                  \        R^4      R7       R# )r  r  05C4CE89CF56D9E7C77C8585339B006B97B5F0680B4306C6Cr  Nr  r   s   &rK   test_6RFC6979.test_6  P    ((I2Nw'..0nnBB 	 	
rJ   c           
         V P                  \        P                  \        R ^4      \        P
                  ! R4      P                  4       \        P
                  \        R^4      R7       R# )r  r  00758753A5254759C7CFBAD2E2D9B0792EEE44136C9480527r  Nr  r   s   &rK   test_7RFC6979.test_7)  r  rJ   c           
         V P                  \        P                  \        R ^4      \        P
                  ! R4      P                  4       \        P
                  \        R^4      R7       R# )ڃ0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538r  ڃ089C071B419E1C2820962321787258469511958E80582E95D8378E0C2CCDB3CB42BEDE42F50E3FA3C71F5A76724281D31D9C89F0F91FC1BE4918DB1C03A5838D0F9r  N)r  r'   r{   rv   rx   r  r}   r   s   &rK   test_8RFC6979.test_84  s\    (( V Y'..0ll V 	 	
rJ   c           
         V P                  \        P                  \        R ^4      \        P
                  ! R4      P                  4       \        P
                  \        R^4      R7       R# )r  r  ڃ0EDF38AFCAAECAB4383358B34D67C9F2216C8382AAEA44A3DAD5FDC9C32575761793FEF24EB0FC276DFC4F6E3EC476752F043CF01415387470BCBD8678ED2C7E1A0r  N)r  r'   r{   rv   rx   ry   r}   r   s   &rK   test_9RFC6979.test_9C  s\    (( V y)002nn V 	 	
rJ   c           
         V P                  \        P                  \        R ^4      \        P
                  ! R4      P                  4       \        P
                  \        R^4      R7       R# )r  r  ڃ16200813020EC986863BEDFC1B121F605C1215645018AEA1A7B215A564DE9EB1B38A67AA1128B80CE391C4FB71187654AAA3431027BFC7F395766CA988C964DC56Dr  N)r  r'   r{   rv   rx   r  r}   r   s   &rK   test_10RFC6979.test_10R  s\    (( V w'..0nn V 	 	
rJ   rD   N)rE   rF   rG   rH   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rI   r   r   s   @rK   r  r    s_     +


	



"	
	
	
	
	
	



 
rJ   r  c                   &   a  ] tR tRt o R tRtV tR# )ECDHib  c                   W2,          pWb,          pW<,          pV P                  \        WV4      V4       V P                  \        WV4      V4       T P                  W<,          W6,          V,          u;8H  ;'       d'    Wc,          V,          u;8H  ;'       d    Wk,          8H  Mu 4       V P                  \        WV
4      V4       R # r   )r   r>   rf   )rk   r   r{   dAx_qAy_qAdBx_qBy_qBx_Zy_ZqAqBZs   &&&&&&&&&&&   rK   r  ECDH._doc  s    ^^GuD126uD126W)# )#  	
 	u3/3rJ   rD   N)rE   rF   rG   rH   r  rI   r   r   s   @rK   r  r  b  s     4 4rJ   r  c                      a  ] tR tRt o R tR t]P                  P                  R 4       t	]P                  P                  R 4       t
RtV tR# )RFC6932ir  c                    V P                  \        \        P                  \	        R ^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      R7
       R	# )
87C4B7A2C8A4BAD1FBB7D79CC0955DB7C6A4660CA64CC4778159B495E8B104A67A6F6E85E14EC1825E1539E8ECDBBF584922367DD88C6BDCF2846D782E7FDB5F60CD8404301AC5949C58EDB26BC68BA07695B750A94863976D4AAE6CD0F6DD18DEFEF55D96569D0507C03E74D6486FFA28FB82A97089A9296147B71B21A4B574E1278245B536F14D8C2B9D07A874E89B900D7C77A709A797276B8CA1BA61BB95B546FC29F862E44D59D25B8312DFD98783F9FB77B9704945A73BEB6DCCBE3B65D0F967DCAB574EB86F800811D64114B1C48C621AB3357CF93F496E4238696A2A012B3C98
r   r{   r  r  r  r  r	  r
  r  r  N)r  r:   r+   r{   rv   r   s   &rK   test_brainpoolP224r1RFC6932.test_brainpoolP224r1u  s    '%//JB JB JB JB JB JB JB JB1 	 	
rJ   c                    V P                  \        \        P                  \	        R ^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      R7
       R	# )
@041EB8B1E2BC681BCE8E39963B2E9FC415B05283313DD1A8BCC055F11AE49699@78028496B5ECAAB3C8B6C12E45DB1E02C9E4D26B4113BC4F015F60C5CCC0D206@A2AE1762A3831C1D20F03F8D1E3C0C39AFE6F09B4D44BBE80CD100987B05F92B@06F5240EACDB9837BC96D48274C8AA834B6C87BA9CC3EEDD81F99A16B8D804D3@8E07E219BA588916C5B06AA30A2F464C2F2ACFC1610A3BE2FB240B635341F0DB@148EA1D7D1E7E54B9555B6C9AC90629C18B63BEE5D7AA6949EBBF47B24FDE40D@05E940915549E9F6A4A75693716E37466ABA79B4BF2919877A16DD2CC2E23708@6BC23B6702BC5A019438CEEA107DAAD8B94232FFBBC350F3B137628FE6FD134Cr  Nr  r;   r,   r{   rv   r   s   &rK   test_brainpoolP256r1RFC6932.test_brainpoolP256r1      '%//
 
 
 
 
 
 
 M 	 +	
rJ   c                    V P                  \        \        P                  \	        R ^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      R7
       R	# )
`014EC0755B78594BA47FB0A56F6173045B4331E74BA1A6F47322E70D79D828D97E095884CA72B73FDABD5910DF0FA76A`45CB26E4384DAF6FB776885307B9A38B7AD1B5C692E0C32F0125332778F3B8D3F50CA358099B30DEB5EE69A95C058B4E`8173A1C54AFFA7E781D0E1E1D12C0DC2B74F4DF58E4A4E3AF7026C5D32DC530A2CD89C859BB4B4B768497F49AB8CC859`6B461CB79BD0EA519A87D6828815D8CE7CD9B3CAA0B5A8262CBCD550A015C90095B976F3529957506E1224A861711D54`01BF92A92EE4BE8DED1A911125C209B03F99E3161CFCC986DC7711383FC30AF9CE28CA3386D59E2C8D72CE1E7B4666E8`3289C4A3A4FEE035E39BDB885D509D224A142FF9FBCC5CFE5CCBB30268EE47487ED8044858D31D848F7A95C635A347AC`04CC4FF3DCCCB07AF24E0ACC529955B36D7C807772B92FCBE48F3AFE9A2F370A1F98D3FA73FD0C0747C632E12F1423EC`7F465F90BD69AFB8F828A214EB9716D66ABC59F17AF7C75EE7F1DE22AB5D05085F5A01A9382D05BF72D96698FE3FF64Er  Nr  r<   r.   r{   rv   r   s   &rK   test_brainpoolP384r1RFC6932.test_brainpoolP384r1      '%//8
 :
 :
 8
 :
 :
 9
 9M 	 +	
rJ   c                    V P                  \        \        P                  \	        R ^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      R7
       R	# )
ڀ636B6BE0482A6C1C41AA7AE7B245E983392DB94CECEA2660A379CFE159559E357581825391175FC195D28BAC0CF03A7841A383B95C262B983782874CCE6FE333ڀ0562E68B9AF7CBFD5565C6B16883B777FF11C199161ECC427A39D17EC2166499389571D6A994977C56AD8252658BA8A1B72AE42F4FB7532151AFC3EF0971CCDAڀA7CA2D8191E21776A89860AFBC1F582FAA308D551C1DC6133AF9F9C3CAD59998D70079548140B90B1F311AFB378AA81F51B275B2BE6B7DEE978EFC7343EA642Eڀ0AF4E7F6D52EDD52907BB8DBAB3992A0BB696EC10DF11892FF205B66D381ECE72314E6A6EA079CEA06961DBA5AE6422EF2E9EE803A1F236FB96A1799B86E5C8Bڀ5A7954E32663DFF11AE24712D87419F26B708AC2B92877D6BFEE2BFC43714D89BBDB6D24D807BBD3AEB7F0C325F862E8BADE4F74636B97EAACE739E11720D323ڀ96D14621A9283A1BED84DE8DD64836B2C0758B11441179DC0C54C0D49A47C03807D171DD544B72CAAEF7B7CE01C7753E2CAD1A861ECA55A71954EE1BA35E04BEڀ1EE8321A4BBF93B9CF8921AB209850EC9B7066D1984EF08C2BB723236208AC8F1A483E79461A00E0D5F6921CE9D360502F85C812BEDEE23AC5B210E5811B191Eڀ2632095B7B936174B41FD2FAF369B1D18DCADEED7E410A7E251F0831097C50D02CFED02607B6A2D5ADB4C0006008562208631875B58B54ECDA5A4F9FE9EAABA6r  Nr  r=   r/   r{   rv   r   s   &rK   test_brainpoolP512r1RFC6932.test_brainpoolP512r1      '%// 	 ! 	 ! 	  	 ! 	 ! 	  	  	[ 	 3	
rJ   rD   N)rE   rF   rG   rH   r  r)  rN  rO  rP  r6  rC  rI   r   r   s   @rK   r  r  r  sM     
<,
\ [[,
 ,
\ [[4
 4
rJ   r  c                      a  ] tR tRt o R t]P                  P                  R 4       t]P                  P                  R 4       t	Rt
V tR# )RFC7027i(	  c                    V P                  \        \        P                  \	        R ^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      R7
       R	# )
@81DB1EE100150FF2EA338D708271BE38300CB54241D79950F77B063039804F1D@44106E913F92BC02A1705D9953A8414DB95E1AAA49E81D9E85F929A8E3100BE5@8AB4846F11CACCB73CE49CBDD120F5A900A69FD32C272223F789EF10EB089BDC@55E40BC41E37E3E2AD25C3C6654511FFA8474A91A0032087593852D3E7D76BD3@8D2D688C6CF93E1160AD04CC4429117DC2C41825E1E9FCA0ADDD34E6F1B39F7B@990C57520812BE512641E47034832106BC7D3E8DD0E4C7F1136D7006547CEC6A@89AFC39D41D3B327814B80940B042590F96556EC91E6AE7939BCE31F3A18BF2B@49C27868F4ECA2179BFD7D59B1E3BF34C1DBDE61AE12931648F43E59632504DEr  Nr(  r   s   &rK   r)  RFC7027.test_brainpoolP256r1+	  r+  rJ   c                    V P                  \        \        P                  \	        R ^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      R7
       R	# )
`1E20F5E048A5886F1F157C74E91BDE2B98C8B52D58E5003D57053FC4B0BD65D6F15EB5D1EE1610DF870795143627D042`68B665DD91C195800650CDD363C625F4E742E8134667B767B1B476793588F885AB698C852D4A6E77A252D6380FCAF068`55BC91A39C9EC01DEE36017B7D673A931236D2F1F5C83942D049E3FA20607493E0D038FF2FD30C2AB67D15C85F7FAA59`032640BC6003C59260F7250C3DB58CE647F98E1260ACCE4ACDA3DD869F74E01F8BA5E0324309DB6A9831497ABAC96670`4D44326F269A597A5B58BBA565DA5556ED7FD9A8A9EB76C25F46DB69D19DC8CE6AD18E404B15738B2086DF37E71D1EB4`62D692136DE56CBE93BF5FA3188EF58BC8A3A0EC6C1E151A21038A42E9185329B5B275903D192F8D4E1F32FE9CC78C48`0BD9D3A7EA0B3D519D09D8E48D0785FB744A6B355E6304BC51C229FBBCE239BBADF6403715C35D4FB2A5444F575D4F42`0DF213417EBE4D8E40A5F76F66C56470C489A3478D146DECF6DF0D94BAE9E598157290F8756066975F1DB34B2324B7BDr  Nr5  r   s   &rK   r6  RFC7027.test_brainpoolP384r1Y	  r8  rJ   c                    V P                  \        \        P                  \	        R ^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      \	        R^4      R7
       R	# )
ڀ16302FF0DBBB5A8D733DAB7141C1B45ACBC8715939677F6A56850A38BD87BD59B09E80279609FF333EB9D4C061231FB26F92EEB04982A5F1D1764CAD57665422ڀ0A420517E406AAC0ACDCE90FCD71487718D3B953EFD7FBEC5F7F27E28C6149999397E91E029E06457DB2D3E640668B392C2A7E737A7F0BF04436D11640FD09FDڀ72E6882E8DB28AAD36237CD25D580DB23783961C8DC52DFA2EC138AD472A0FCEF3887CF62B623B2A87DE5C588301EA3E5FC269B373B60724F5E82A6AD147FDE7ڀ230E18E1BCC88A362FA54E4EA3902009292F7F8033624FD471B5D8ACE49D12CFABBC19963DAB8E2F1EBA00BFFB29E4D72D13F2224562F405CB80503666B25429ڀ9D45F66DE5D67E2E6DB6E93A59CE0BB48106097FF78A081DE781CDB31FCE8CCBAAEA8DD4320C4119F1E9CD437A2EAB3731FA9668AB268D871DEDA55A5473199Fڀ2FDC313095BCDD5FB3A91636F07A959C8E86B5636A1E930E8396049CB481961D365CC11453A06C719835475B12CB52FC3C383BCE35E27EF194512B71876285FAڀA7927098655F1F9976FA50A9D566865DC530331846381C87256BAF3226244B76D36403C024D7BBF0AA0803EAFF405D3D24F11A9B5C0BEF679FE1454B21C4CD1Fڀ7DB71C3DEF63212841C463E881BDCF055523BD368240E6C3143BD8DEF8B3B3223B95E0F53082FF5E412F4222537A43DF1C6D25729DDB51620A832BE6A26680A2r  NrB  r   s   &rK   rC  RFC7027.test_brainpoolP512r1	  rE  rJ   rD   N)rE   rF   rG   rH   r)  rN  rO  rP  r6  rC  rI   r   r   s   @rK   rG  rG  (	  sH     ,
\ [[,
 ,
\ [[4
 4
rJ   rG  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   \         P                  ! \        V 4      V4      p	\        P                  ! \        W,           4      V4      p
V	P                  V
8X  g   Q hV	P                  WE\        \        V^4      R7      pV\        V4      \        V4      38X  g   Q hV
P                  WV\        4      '       g   Q hR# )   )r  r(  ru   N)
r   ri   r   r   r   re   r   rv   rg   r   )wgwxgwyru   msgmdr3  r   r   r   r   ro   s   &&&&&&&&&   rK   test_RFC4754_vectorsr  	  s    x 
			!e	4B		!	!)CI"6	>Br!!!
''#.?3q":'
NC9Q<1....99Sr#45555rJ   )TF)r   r  r  r  )t
__future__r   r   r   	unittest2unittestImportErrorr  r  rR   rN  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   r9   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   rA   r:   r;   r<   r=   ellipticcurver>   r?   r@   	ExceptionrC   r  argvr^   TestCaser`   rO  parametrizer  r  paramsr   r  appendparamr:  r?  r#  r%  rP  r'  rT  r_  r  r  r  r  rG  ry   sha384r  r  )r  js   00rK   <module>r     s{   ? ?  
    
 '   & "  * H H   E D O O ,       :  !   	i 	  sxx#$L  u:H u:p sCA]Q]C" 
E>LL	(8(8S(IJ	
 ?  )624 34 sxx(FF &). *. O6h O6 O6d*H%% *Z=@(

 =@@?=8 ?=DG
h G
T48 4 s
d s
lU
d U
r *NNNNNNNN	
 	////NN//!	
$ 	 NN -	
?7:v6w:v6oO  r Ds   M M)M&%M&