B \Úæ`&(ã@sddlmZmZmZddlmZddlmZddlm Z m Z m Z ddl m Z mZddlmZmZmZdd„Zd d „Ze e¡Gd d „d eƒƒZe e¡Gd d„deƒƒZe ej¡Gdd„deƒƒZe ej¡Gdd„deƒƒZe ej¡Gdd„deƒƒZdS)é)Úabsolute_importÚdivisionÚprint_function)Úutils)ÚInvalidSignature)Ú_calculate_digest_and_algorithmÚ_check_not_prehashedÚ_warn_sign_verify_deprecated)ÚhashesÚ serialization)ÚAsymmetricSignatureContextÚAsymmetricVerificationContextÚdsacCsx|j |j¡}|j d|¡}|j d¡}|j d|t|ƒ|||j¡}| |dk¡| |d¡|j |¡d|d…S)Nzunsigned char[]zunsigned int *ré) Ú_libZDSA_sizeÚ _dsa_cdataÚ_ffiÚnewZDSA_signÚlenÚopenssl_assertÚbuffer)ÚbackendÚ private_keyÚdataZ sig_buf_lenZsig_bufZbuflenÚres©rú[/opt/alt/python37/lib64/python3.7/site-packages/cryptography/hazmat/backends/openssl/dsa.pyÚ _dsa_sig_signs rcCs8|j d|t|ƒ|t|ƒ|j¡}|dkr4| ¡t‚dS)Nrr)rZ DSA_verifyrrZ_consume_errorsr)rÚ public_keyÚ signaturerrrrrÚ_dsa_sig_verify#s r c@s$eZdZdd„Zdd„Zdd„ZdS)Ú_DSAVerificationContextcCs.||_||_||_||_t |j|j¡|_dS)N)Ú_backendÚ _public_keyÚ _signatureÚ _algorithmr ÚHashÚ _hash_ctx)ÚselfrrrÚ algorithmrrrÚ__init__1s z _DSAVerificationContext.__init__cCs|j |¡dS)N)r'Úupdate)r(rrrrr+9sz_DSAVerificationContext.updatecCs"|j ¡}t|j|j|j|ƒdS)N)r'Úfinalizer r"r#r$)r(Zdata_to_verifyrrrÚverify<s z_DSAVerificationContext.verifyN)Ú__name__Ú __module__Ú __qualname__r*r+r-rrrrr!/sr!c@s$eZdZdd„Zdd„Zdd„ZdS)Ú_DSASignatureContextcCs(||_||_||_t |j|j¡|_dS)N)r"Ú _private_keyr%r r&r')r(rrr)rrrr*Fsz_DSASignatureContext.__init__cCs|j |¡dS)N)r'r+)r(rrrrr+Lsz_DSASignatureContext.updatecCs|j ¡}t|j|j|ƒS)N)r'r,rr"r2)r(Z data_to_signrrrr,Os z_DSASignatureContext.finalizeN)r.r/r0r*r+r,rrrrr1Dsr1c@s$eZdZdd„Zdd„Zdd„ZdS)Ú_DSAParameterscCs||_||_dS)N)r"r)r(rÚ dsa_cdatarrrr*Vsz_DSAParameters.__init__cCsÂ|jj d¡}|jj d¡}|jj d¡}|jj |j|||¡|j |d|jjjk¡|j |d|jjjk¡|j |d|jjjk¡tj |j  |d¡|j  |d¡|j  |d¡dS)Nz BIGNUM **r)ÚpÚqÚg) r"rrrÚ DSA_get0_pqgrrÚNULLrÚDSAParameterNumbersÚ _bn_to_int)r(r5r6r7rrrÚparameter_numbersZsz _DSAParameters.parameter_numberscCs |j |¡S)N)r"Zgenerate_dsa_private_key)r(rrrÚgenerate_private_keyhsz#_DSAParameters.generate_private_keyN)r.r/r0r*r<r=rrrrr3Tsr3c@sNeZdZdd„Ze d¡Zdd„Zdd„Zdd „Z d d „Z d d „Z dd„Z dS)Ú_DSAPrivateKeycCsp||_||_||_|jj d¡}|jj |||jjj|jjj¡|j |d|jjk¡|jj  |d¡|_ dS)Nz BIGNUM **r) r"rÚ _evp_pkeyrrrr8r9rÚ BN_num_bitsÚ _key_size)r(rr4Úevp_pkeyr5rrrr*nsz_DSAPrivateKey.__init__rAcCstƒt|ƒt|j||ƒS)N)r rr1r")r(Úsignature_algorithmrrrÚsigner|sz_DSAPrivateKey.signerc CsR|jj d¡}|jj d¡}|jj d¡}|jj d¡}|jj d¡}|jj |j|||¡|j |d|jjjk¡|j |d|jjjk¡|j |d|jjjk¡|jj |j||¡|j |d|jjjk¡|j |d|jjjk¡t j t j t j |j  |d¡|j  |d¡|j  |d¡d|j  |d¡d|j  |d¡dS)Nz BIGNUM **r)r5r6r7)r<Úy)Úpublic_numbersÚx)r"rrrr8rrr9Ú DSA_get0_keyrZDSAPrivateNumbersÚDSAPublicNumbersr:r;)r(r5r6r7Úpub_keyZpriv_keyrrrÚprivate_numberss(z_DSAPrivateKey.private_numberscCsÒ|jj |j¡}|j ||jjjk¡|jj ||jjj¡}|jj  d¡}|jj  |j||jjj¡|j |d|jjjk¡|jj  |d¡}|jj  |||jjj¡}|j |dk¡|j  |¡}t|j||ƒS)Nz BIGNUM **rr)r"rÚ DSAparams_duprrrr9ÚgcÚDSA_freerrHZBN_dupZ DSA_set0_keyZ_dsa_cdata_to_evp_pkeyÚ _DSAPublicKey)r(r4rJZ pub_key_duprrBrrrršs z_DSAPrivateKey.public_keycCsH|jj |j¡}|j ||jjjk¡|jj ||jjj¡}t |j|ƒS)N) r"rrLrrrr9rMrNr3)r(r4rrrÚ parameters­s z_DSAPrivateKey.parameterscCs|j ||||j|j¡S)N)r"Z_private_key_bytesr?r)r(ÚencodingÚformatZencryption_algorithmrrrÚ private_bytesµs z_DSAPrivateKey.private_bytescCs t|j||ƒ\}}t|j||ƒS)N)rr"r)r(rr)rrrÚsign¾sz_DSAPrivateKey.signN) r.r/r0r*rÚread_only_propertyÚkey_sizerDrKrrPrSrTrrrrr>ls  r>c@sFeZdZdd„Ze d¡Zdd„Zdd„Zdd „Z d d „Z d d „Z dS)rOcCsp||_||_||_|jj d¡}|jj |||jjj|jjj¡|j |d|jjk¡|jj  |d¡|_ dS)Nz BIGNUM **r) r"rr?rrrr8r9rr@rA)r(rr4rBr5rrrr*Çsz_DSAPublicKey.__init__rAcCs0tƒt|tƒstdƒ‚t|ƒt|j|||ƒS)Nzsignature must be bytes.)r Ú isinstanceÚbytesÚ TypeErrorrr!r")r(rrCrrrÚverifierÔs  z_DSAPublicKey.verifiercCs|jj d¡}|jj d¡}|jj d¡}|jj d¡}|jj |j|||¡|j |d|jjjk¡|j |d|jjjk¡|j |d|jjjk¡|jj |j||jjj¡|j |d|jjjk¡t j t j |j  |d¡|j  |d¡|j  |d¡d|j  |d¡dS)Nz BIGNUM **r)r5r6r7)r<rE) r"rrrr8rrr9rHrrIr:r;)r(r5r6r7rJrrrrFÞs"z_DSAPublicKey.public_numberscCs2|jj |j¡}|jj ||jjj¡}t|j|ƒS)N)r"rrLrrrMrNr3)r(r4rrrrPôsz_DSAPublicKey.parameterscCs*|tjjkrtdƒ‚|j ||||jd¡S)Nz2DSA public keys do not support PKCS1 serialization)r Z PublicFormatZPKCS1Ú ValueErrorr"Z_public_key_bytesr?)r(rQrRrrrÚ public_bytesûs z_DSAPublicKey.public_bytescCs"t|j||ƒ\}}t|j|||ƒS)N)rr"r )r(rrr)rrrr- sz_DSAPublicKey.verifyN) r.r/r0r*rrUrVrZrFrPr\r-rrrrrOÅs  rON)Z __future__rrrZ cryptographyrZcryptography.exceptionsrZ*cryptography.hazmat.backends.openssl.utilsrrr Zcryptography.hazmat.primitivesr r Z)cryptography.hazmat.primitives.asymmetricr r rrr Zregister_interfaceÚobjectr!r1ZDSAParametersWithNumbersr3ZDSAPrivateKeyWithSerializationr>ZDSAPublicKeyWithSerializationrOrrrrÚs"   X