pg" ddlZddlmZddlmZddlmZmZddlm Z m Z ej rddl mZddd d d ed efd Zddddded ed df dZGdde jZGdd e jZGdde jZdS)N)InvalidSignature)_calculate_digest_and_algorithm)hashes serialization)dsautils)Backendbackendr private_key_DSAPrivateKeydatareturnc|j|j}|jd|}|jd}|jd|t ||||j}||dk||d|j|d|dS)Nzunsigned char[]zunsigned int *r) _libDSA_size _dsa_cdata_ffinewDSA_signlenopenssl_assertbuffer)r r r sig_buf_lensig_bufbuflenress J/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/dsa.py _dsa_sig_signrs,'' (>??Kl0+>>G \  . / /F ,   4TGV[-C  C 3!8$$$ 6!9%%% <  w ' ' &) 44 public_key _DSAPublicKey signaturec |jd|t||t||j}|dkr|t dS)Nrr)r DSA_verifyrr_consume_errorsr)r r!r#r rs r_dsa_sig_verifyr')sa , ! ! 4TIs9~~z7L  C axx!!!xr cBeZdZddZdejfdZdejfdZdS) _DSAParametersr r c"||_||_dSN)_backendr)selfr dsa_cdatas r__init__z_DSAParameters.__init__;s #r rc|jjd}|jjd}|jjd}|jj|j||||j|d|jjjk|j|d|jjjk|j|d|jjjktj |j |d|j |d|j |dS)N BIGNUM **rpqg) r,rrr DSA_get0_pqgrrNULLrDSAParameterNumbers _bn_to_int)r-r3r4r5s rparameter_numbersz _DSAParameters.parameter_numbers?s? M  " "; / / M  " "; / / M  " "; / / ''AqAAA $$QqTT]-?-D%DEEE $$QqTT]-?-D%DEEE $$QqTT]-?-D%DEEE&m&&qt,,m&&qt,,m&&qt,,    r c6|j|Sr+)r,generate_dsa_private_keyr-s rgenerate_private_keyz#_DSAParameters.generate_private_keyMs}55d;;;r Nr r ) __name__ __module__ __qualname__r/rr8r: DSAPrivateKeyr>r rr)r):sd$$$$  3#:     %>???+77!==r rc|jSr+rFr=s rkey_sizez_DSAPrivateKey.key_size` ~r c z|jjd}|jjd}|jjd}|jjd}|jjd}|jj|j||||j|d|jjjk|j|d|jjjk|j|d|jjjk|jj|j|||j|d|jjjk|j|d|jjjktj tj tj |j |d|j |d|j |d|j |d|j |dS)Nr1rr2r:y)public_numbersx)r,rrrr6rrr7 DSA_get0_keyrDSAPrivateNumbersDSAPublicNumbersr8r9)r-r3r4r5pub_keypriv_keys rprivate_numbersz_DSAPrivateKey.private_numbersds8 M  " "; / / M  " "; / / M  " "; / /-$((55=%))+66 ''AqAAA $$QqTT]-?-D%DEEE $$QqTT]-?-D%DEEE $$QqTT]-?-D%DEEE ''(KKK $$WQZ4=3E3J%JKKK $$Xa[DM4F4K%KLLL$/"%"9m..qt44m..qt44m..qt44### -**71:66 m&&x{33    r cV|jj|j}|j||jjjk|jj||jjj}|jj d}|jj |j||jjj|j|d|jjjk|jj |d}|jj |||jjj}|j|dk|j |}t|j||S)Nr1rr)r,r DSAparams_duprrrr7gcDSA_freerrWBN_dup DSA_set0_key_dsa_cdata_to_evp_pkeyr")r-r.rZ pub_key_duprrMs rr!z_DSAPrivateKey.public_key}saM&44T_EE  $$Y$-2D2I%IJJJM&)) t})2  -$((55 '' OWdm&8&=    $$WQZ4=3E3J%JKKKm(// ;; m -- {DM$6$;   $$SAX...=77 BBT]Ix@@@r c,|jj|j}|j||jjjk|jj||jjj}t|j|Sr+) r,rr^rrrr7r_r`r)r-r.s r parametersz_DSAPrivateKey.parametersszM&44T_EE  $$Y$-2D2I%IJJJM&)) t})2  dmY777r encodingformatencryption_algorithmcT|j|||||j|jSr+)r,_private_key_bytesrJr)r-rhrirjs r private_bytesz_DSAPrivateKey.private_bytess4 }//    N O    r r algorithmcTt||\}}t|j||Sr+)rrr,)r-r rn_s rsignz_DSAPrivateKey.signs+ 2$ BBaT]D$777r Nr?)r@rArBint__annotations__r/propertyrPrrXr\ DSAPublicKeyr! DSAParametersrgrEncoding PrivateFormatKeySerializationEncryptionbytesrmtypingUnion asym_utils Prehashedr HashAlgorithmrqrDr rr r Qs>NNN > > > >#X !6    2AC,AAAA&8C-8888  (  +  ,F       88< 4f6J JK8  888888r ceZdZUeed<ddZedefdZdej fdZ dej fdZ d e jd e jdefd Zd ed edejejejfddfdZdS)r"rFr r c||_||_||_|jjd}|jj|||jjj|jjj|j|d|jjk|jj |d|_ dSrHrIrLs rr/z_DSAPublicKey.__init__s #! M  " "; / / '' q$-,14=3E3J    $$QqTW\->%>???+77!==r rc|jSr+rOr=s rrPz_DSAPublicKey.key_sizerQr c |jjd}|jjd}|jjd}|jjd}|jj|j||||j|d|jjjk|j|d|jjjk|j|d|jjjk|jj|j||jjj|j|d|jjjktj tj |j |d|j |d|j |d|j |dS)Nr1rr2rS) r,rrrr6rrr7rWrrYr8r9)r-r3r4r5rZs rrUz_DSAPublicKey.public_numberss M  " "; / / M  " "; / / M  " "; / /-$((55 ''AqAAA $$QqTT]-?-D%DEEE $$QqTT]-?-D%DEEE $$QqTT]-?-D%DEEE '' OWdm&8&=    $$WQZ4=3E3J%JKKK#!5-**1Q400-**1Q400-**1Q400 m&&wqz22     r c|jj|j}|jj||jjj}t|j|Sr+)r,rr^rrr_r`r)rfs rrgz_DSAPublicKey.parameterssWM&44T_EE M&)) t})2  dmY777r rhricH|j||||jdSr+)r,_public_key_bytesrJ)r-rhris r public_bytesz_DSAPublicKey.public_bytess+ }.. fdDND   r r#r rnNcVt||\}}t|j|||Sr+)rr'r,)r-r#r rnrps rverifyz_DSAPublicKey.verifys- 2$ BBat}dItDDDr r?)r@rArBrrrsr/rtrPrrYrUrvrgrrw PublicFormatrzrr{r|r}r~rrrrDr rr"r"s"NNN > > > >#X  4    ,8C-8888 ( *       EEE< 4f6J JK E  EEEEEEr )r{cryptography.exceptionsr*cryptography.hazmat.backends.openssl.utilsrcryptography.hazmat.primitivesrr)cryptography.hazmat.primitives.asymmetricrrr} TYPE_CHECKING,cryptography.hazmat.backends.openssl.backendr rzrr'rvr)rCr rur"rDr rrs  444444A@@@@@@@  EDDDDDD5 5%55=B5 5555$     "<<<<