σ 9(Zc@`sbddlmZmZmZddlmZddlmZddlm Z m Z m Z ddl m Z mZddlmZmZmZd„Zd„Zejeƒd efd „ƒYƒZejeƒd efd „ƒYƒZejejƒd efd„ƒYƒZejejƒdefd„ƒYƒZejejƒdefd„ƒYƒZdS(i(tabsolute_importtdivisiontprint_function(tutils(tInvalidSignature(t_calculate_digest_and_algorithmt_check_not_prehashedt_warn_sign_verify_deprecated(thashest serialization(tAsymmetricSignatureContexttAsymmetricVerificationContexttdsacC`s’|jj|jƒ}|jjd|ƒ}|jjdƒ}|jjd|t|ƒ|||jƒ}|j|dkƒ|j|dƒ|jj|ƒ|d S(Nsunsigned char[]sunsigned int *ii( t_libtDSA_sizet _dsa_cdatat_ffitnewtDSA_signtlentopenssl_asserttbuffer(tbackendt private_keytdatat sig_buf_lentsig_buftbuflentres((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyt _dsa_sig_signs !cC`sS|jjd|t|ƒ|t|ƒ|jƒ}|dkrO|jƒt‚ndS(Nii(R t DSA_verifyRRt_consume_errorsR(Rt public_keyt signatureRR((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyt_dsa_sig_verify#s  '  t_DSAVerificationContextcB`s#eZd„Zd„Zd„ZRS(cC`sC||_||_||_||_tj|j|jƒ|_dS(N(t_backendt _public_keyt _signaturet _algorithmRtHasht _hash_ctx(tselfRR R!t algorithm((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyt__init__1s     cC`s|jj|ƒdS(N(R)tupdate(R*R((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyR-9scC`s/|jjƒ}t|j|j|j|ƒdS(N(R)tfinalizeR"R$R%R&(R*tdata_to_verify((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pytverify<s(t__name__t __module__R,R-R0(((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyR#/s  t_DSASignatureContextcB`s#eZd„Zd„Zd„ZRS(cC`s:||_||_||_tj|j|jƒ|_dS(N(R$t _private_keyR'RR(R)(R*RRR+((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyR,Fs   cC`s|jj|ƒdS(N(R)R-(R*R((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyR-LscC`s%|jjƒ}t|j|j|ƒS(N(R)R.RR$R4(R*t data_to_sign((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyR.Os(R1R2R,R-R.(((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyR3Ds  t_DSAParameterscB`s#eZd„Zd„Zd„ZRS(cC`s||_||_dS(N(R$R(R*Rt dsa_cdata((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyR,Vs c C`s|jjjdƒ}|jjjdƒ}|jjjdƒ}|jjj|j|||ƒ|jj|d|jjjkƒ|jj|d|jjjkƒ|jj|d|jjjkƒtj d|jj |dƒd|jj |dƒd|jj |dƒƒS(Ns BIGNUM **itptqtg( R$RRR t DSA_get0_pqgRRtNULLR tDSAParameterNumberst _bn_to_int(R*R8R9R:((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pytparameter_numbersZs### cC`s|jj|ƒS(N(R$tgenerate_dsa_private_key(R*((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pytgenerate_private_keyhs(R1R2R,R?RA(((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyR6Ts  t_DSAPrivateKeycB`sVeZd„ZejdƒZd„Zd„Zd„Zd„Z d„Z d„Z RS(cC`sž||_||_||_|jjjdƒ}|jjj|||jjj|jjjƒ|jj|d|jjkƒ|jjj |dƒ|_ dS(Ns BIGNUM **i( R$Rt _evp_pkeyRRR R;R<Rt BN_num_bitst _key_size(R*RR7tevp_pkeyR8((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyR,ns    " REcC`s$tƒt|ƒt|j||ƒS(N(RRR3R$(R*tsignature_algorithm((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pytsigner|s c C`sγ|jjjdƒ}|jjjdƒ}|jjjdƒ}|jjjdƒ}|jjjdƒ}|jjj|j|||ƒ|jj|d|jjjkƒ|jj|d|jjjkƒ|jj|d|jjjkƒ|jjj|j||ƒ|jj|d|jjjkƒ|jj|d|jjjkƒt j dt j dt j d|jj |dƒd|jj |dƒd|jj |dƒƒd|jj |dƒƒd |jj |dƒƒS( Ns BIGNUM **itpublic_numbersR?R8R9R:tytx(R$RRR R;RRR<t DSA_get0_keyR tDSAPrivateNumberstDSAPublicNumbersR=R>(R*R8R9R:tpub_keytpriv_key((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pytprivate_numberss(#####   cC`s-|jjj|jƒ}|jj||jjjkƒ|jjj||jjjƒ}|jjj dƒ}|jjj |j||jjjƒ|jj|d|jjjkƒ|jjj |dƒ}|jjj |||jjjƒ}|jj|dkƒ|jj |ƒ}t|j||ƒS(Ns BIGNUM **ii(R$R t DSAparams_dupRRRR<tgctDSA_freeRRLtBN_dupt DSA_set0_keyt_dsa_cdata_to_evp_pkeyt _DSAPublicKey(R*R7ROt pub_key_dupRRF((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyR šs  # cC`sh|jjj|jƒ}|jj||jjjkƒ|jjj||jjjƒ}t |j|ƒS(N( R$R RRRRRR<RSRTR6(R*R7((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyt parameters­s  cC`s"|jj||||j|jƒS(N(R$t_private_key_bytesRCR(R*tencodingtformattencryption_algorithm((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyt private_bytes΅s  cC`s.t|j||ƒ\}}t|j||ƒS(N(RR$R(R*RR+((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pytsignΎs( R1R2R,Rtread_only_propertytkey_sizeRHRQR RZR_R`(((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyRBls      RXcB`sMeZd„ZejdƒZd„Zd„Zd„Zd„Z d„Z RS(cC`sž||_||_||_|jjjdƒ}|jjj|||jjj|jjjƒ|jj|d|jjkƒ|jjj |dƒ|_ dS(Ns BIGNUM **i( R$RRCRRR R;R<RRDRE(R*RR7RFR8((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyR,Ηs    " REcC`sEtƒt|tƒs%tdƒ‚nt|ƒt|j|||ƒS(Nssignature must be bytes.(Rt isinstancetbytest TypeErrorRR#R$(R*R!RG((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pytverifierΤs  c C`s’|jjjdƒ}|jjjdƒ}|jjjdƒ}|jjjdƒ}|jjj|j|||ƒ|jj|d|jjjkƒ|jj|d|jjjkƒ|jj|d|jjjkƒ|jjj|j||jjjƒ|jj|d|jjjkƒt j dt j d|jj |dƒd|jj |dƒd|jj |dƒƒd|jj |dƒƒS(Ns BIGNUM **iR?R8R9R:RJ( R$RRR R;RRR<RLR RNR=R>(R*R8R9R:RO((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyRIήs"### #  cC`sI|jjj|jƒ}|jjj||jjjƒ}t|j|ƒS(N(R$R RRRRRSRTR6(R*R7((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyRZτs cC`s@|tjjkr!tdƒ‚n|jj||||jdƒS(Ns2DSA public keys do not support PKCS1 serialization(R t PublicFormattPKCS1t ValueErrorR$t_public_key_bytesRCtNone(R*R\R]((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyt public_bytesϋs  cC`s1t|j||ƒ\}}t|j|||ƒS(N(RR$R"(R*R!RR+((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyR0 s( R1R2R,RRaRbRfRIRZRlR0(((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyRXΕs    N(t __future__RRRt cryptographyRtcryptography.exceptionsRt*cryptography.hazmat.backends.openssl.utilsRRRtcryptography.hazmat.primitivesRR t)cryptography.hazmat.primitives.asymmetricR R R RR"tregister_interfacetobjectR#R3tDSAParametersWithNumbersR6tDSAPrivateKeyWithSerializationRBtDSAPublicKeyWithSerializationRX(((sN/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/backends/openssl/dsa.pyts"  X