3 L]'@sddlmZmZmZddlmZddlmZddlm Z m Z m Z ddl m Z mZddlmZmZmZddZd d ZejeGd d d eZejeGd ddeZejejGdddeZejejGdddeZejejGdddeZdS))absolute_importdivisionprint_function)utils)InvalidSignature)_calculate_digest_and_algorithm_check_not_prehashed_warn_sign_verify_deprecated)hashes serialization)AsymmetricSignatureContextAsymmetricVerificationContextdsacCsx|jj|j}|jjd|}|jjd}|jjd|t||||j}|j|dk|j|d|jj|d|dS)Nzunsigned char[]zunsigned int *r) _libZDSA_size _dsa_cdata_ffinewZDSA_signlenopenssl_assertbuffer)backend private_keydataZ sig_buf_lenZsig_bufbuflenresrR/tmp/pip-install-wfra5znf/cryptography/cryptography/hazmat/backends/openssl/dsa.py _dsa_sig_signs rcCs8|jjd|t||t||j}|dkr4|jtdS)Nrr)rZ DSA_verifyrrZ_consume_errorsr)r public_key signaturerrrrr_dsa_sig_verify#s r!c@s$eZdZddZddZddZdS)_DSAVerificationContextcCs.||_||_||_||_tj|j|j|_dS)N)_backend _public_key _signature _algorithmr Hash _hash_ctx)selfrrr algorithmrrr__init__1s z _DSAVerificationContext.__init__cCs|jj|dS)N)r(update)r)rrrrr,9sz_DSAVerificationContext.updatecCs"|jj}t|j|j|j|dS)N)r(finalizer!r#r$r%)r)Zdata_to_verifyrrrverify<s z_DSAVerificationContext.verifyN)__name__ __module__ __qualname__r+r,r.rrrrr"/sr"c@s$eZdZddZddZddZdS)_DSASignatureContextcCs(||_||_||_tj|j|j|_dS)N)r# _private_keyr&r r'r()r)rrr*rrrr+Fsz_DSASignatureContext.__init__cCs|jj|dS)N)r(r,)r)rrrrr,Lsz_DSASignatureContext.updatecCs|jj}t|j|j|S)N)r(r-rr#r3)r)Z data_to_signrrrr-Os z_DSASignatureContext.finalizeN)r/r0r1r+r,r-rrrrr2Dsr2c@s$eZdZddZddZddZdS)_DSAParameterscCs||_||_dS)N)r#r)r)r dsa_cdatarrrr+Vsz_DSAParameters.__init__cCs|jjjd}|jjjd}|jjjd}|jjj|j||||jj|d|jjjk|jj|d|jjjk|jj|d|jjjktj |jj |d|jj |d|jj |ddS)Nz BIGNUM **r)pqg) r#rrr DSA_get0_pqgrrNULLrDSAParameterNumbers _bn_to_int)r)r6r7r8rrrparameter_numbersZsz _DSAParameters.parameter_numberscCs |jj|S)N)r#Zgenerate_dsa_private_key)r)rrrgenerate_private_keyhsz#_DSAParameters.generate_private_keyN)r/r0r1r+r=r>rrrrr4Tsr4c@sNeZdZddZejdZddZddZdd Z d d Z d d Z ddZ dS)_DSAPrivateKeycCsp||_||_||_|jjjd}|jjj|||jjj|jjj|jj|d|jjk|jjj |d|_ dS)Nz BIGNUM **r) r#r _evp_pkeyrrrr9r:r BN_num_bits _key_size)r)rr5evp_pkeyr6rrrr+nsz_DSAPrivateKey.__init__rBcCstt|t|j||S)N)r rr2r#)r)signature_algorithmrrrsigner|sz_DSAPrivateKey.signercCsR|jjjd}|jjjd}|jjjd}|jjjd}|jjjd}|jjj|j||||jj|d|jjjk|jj|d|jjjk|jj|d|jjjk|jjj|j|||jj|d|jjjk|jj|d|jjjkt j t j t j |jj |d|jj |d|jj |dd|jj |dd|jj |ddS)Nz BIGNUM **r)r6r7r8)r=y)public_numbersx)r#rrrr9rrr: DSA_get0_keyrZDSAPrivateNumbersDSAPublicNumbersr;r<)r)r6r7r8pub_keyZpriv_keyrrrprivate_numberss(z_DSAPrivateKey.private_numberscCs|jjj|j}|jj||jjjk|jjj||jjj}|jjj d}|jjj |j||jjj|jj|d|jjjk|jjj |d}|jjj |||jjj}|jj|dk|jj |}t|j||S)Nz BIGNUM **rr)r#r DSAparams_duprrrr:gcDSA_freerrIZBN_dupZ DSA_set0_keyZ_dsa_cdata_to_evp_pkey _DSAPublicKey)r)r5rKZ pub_key_duprrCrrrrs z_DSAPrivateKey.public_keycCsH|jjj|j}|jj||jjjk|jjj||jjj}t |j|S)N) r#rrMrrrr:rNrOr4)r)r5rrr parameterss z_DSAPrivateKey.parameterscCs|jj||||j|jS)N)r#Z_private_key_bytesr@r)r)encodingformatZencryption_algorithmrrr private_bytess z_DSAPrivateKey.private_bytescCs t|j||\}}t|j||S)N)rr#r)r)rr*rrrsignsz_DSAPrivateKey.signN) r/r0r1r+rread_only_propertykey_sizerErLrrQrTrUrrrrr?ls  r?c@sFeZdZddZejdZddZddZdd Z d d Z d d Z dS)rPcCsp||_||_||_|jjjd}|jjj|||jjj|jjj|jj|d|jjk|jjj |d|_ dS)Nz BIGNUM **r) r#rr@rrrr9r:rrArB)r)rr5rCr6rrrr+sz_DSAPublicKey.__init__rBcCs*ttjd|t|t|j|||S)Nr )r r _check_bytesrr"r#)r)r rDrrrverifiers  z_DSAPublicKey.verifiercCs|jjjd}|jjjd}|jjjd}|jjjd}|jjj|j||||jj|d|jjjk|jj|d|jjjk|jj|d|jjjk|jjj|j||jjj|jj|d|jjjkt j t j |jj |d|jj |d|jj |dd|jj |ddS)Nz BIGNUM **r)r6r7r8)r=rF) r#rrrr9rrr:rIrrJr;r<)r)r6r7r8rKrrrrGs"z_DSAPublicKey.public_numberscCs2|jjj|j}|jjj||jjj}t|j|S)N)r#rrMrrrNrOr4)r)r5rrrrQsz_DSAPublicKey.parameterscCs*|tjjkrtd|jj||||jdS)Nz2DSA public keys do not support PKCS1 serialization)r Z PublicFormatZPKCS1 ValueErrorr#Z_public_key_bytesr@)r)rRrSrrr public_bytess z_DSAPublicKey.public_bytescCs"t|j||\}}t|j|||S)N)rr#r!)r)r rr*rrrr.sz_DSAPublicKey.verifyN) r/r0r1r+rrVrWrYrGrQr[r.rrrrrPs  rPN) __future__rrrZ cryptographyrZcryptography.exceptionsrZ*cryptography.hazmat.backends.openssl.utilsrrr Zcryptography.hazmat.primitivesr r Z)cryptography.hazmat.primitives.asymmetricr r rrr!Zregister_interfaceobjectr"r2ZDSAParametersWithNumbersr4ZDSAPrivateKeyWithSerializationr?ZDSAPublicKeyWithSerializationrPrrrrs"   X