3 L]@sddlmZmZmZddlZddlZddlmZejej Gddde Z ejej Gddde Z ejej Gdd d e Z ejej Gd d d e Zejej Gd d d e ZeZddZddZddZddZGddde ZGddde ZGddde ZdS))absolute_importdivisionprint_functionN)utilsc@seZdZejddZdS) DSAParameterscCsdS)z8 Generates and returns a DSAPrivateKey. N)selfrrW/tmp/pip-install-wfra5znf/cryptography/cryptography/hazmat/primitives/asymmetric/dsa.pygenerate_private_keysz"DSAParameters.generate_private_keyN)__name__ __module__ __qualname__abcabstractmethodr rrrr rsrc@seZdZejddZdS)DSAParametersWithNumberscCsdS)z0 Returns a DSAParameterNumbers. Nr)rrrr parameter_numberssz*DSAParametersWithNumbers.parameter_numbersN)r r r rrrrrrr rsrc@sReZdZejddZejddZejddZejddZ ejd d Z d S) DSAPrivateKeycCsdS)z6 The bit length of the prime modulus. Nr)rrrr key_size"szDSAPrivateKey.key_sizecCsdS)zD The DSAPublicKey associated with this private key. Nr)rrrr public_key(szDSAPrivateKey.public_keycCsdS)zL The DSAParameters object associated with this private key. Nr)rrrr parameters.szDSAPrivateKey.parameterscCsdS)zN Returns an AsymmetricSignatureContext used for signing data. Nr)rsignature_algorithmrrr signer4szDSAPrivateKey.signercCsdS)z Signs the data Nr)rdata algorithmrrr sign:szDSAPrivateKey.signN) r r r rabstractpropertyrrrrrrrrrr r s rc@s(eZdZejddZejddZdS)DSAPrivateKeyWithSerializationcCsdS)z. Returns a DSAPrivateNumbers. Nr)rrrr private_numbersCsz.DSAPrivateKeyWithSerialization.private_numberscCsdS)z6 Returns the key serialized as bytes. Nr)rencodingformatZencryption_algorithmrrr private_bytesIsz,DSAPrivateKeyWithSerialization.private_bytesN)r r r rrrr rrrr rAsrc@s`eZdZejddZejddZejddZejddZ ejd d Z ejd d Z d S) DSAPublicKeycCsdS)z6 The bit length of the prime modulus. Nr)rrrr rRszDSAPublicKey.key_sizecCsdS)zK The DSAParameters object associated with this public key. Nr)rrrr rXszDSAPublicKey.parameterscCsdS)zQ Returns an AsymmetricVerificationContext used for signing data. Nr)r signaturerrrr verifier^szDSAPublicKey.verifiercCsdS)z- Returns a DSAPublicNumbers. Nr)rrrr public_numbersdszDSAPublicKey.public_numberscCsdS)z6 Returns the key serialized as bytes. Nr)rrrrrr public_bytesjszDSAPublicKey.public_bytescCsdS)z5 Verifies the signature of the data. Nr)rr"rrrrr verifypszDSAPublicKey.verifyN) r r r rrrrrr#r$r%r&rrrr r!Ps r!cCs |j|S)N)Zgenerate_dsa_parameters)rbackendrrr generate_parameterszsr(cCs |j|S)N)Z'generate_dsa_private_key_and_parameters)rr'rrr r ~sr cCsT|jjd krtd|jjd kr,tdd |jkoB|jknsPtd dS) N z/p must be exactly 1024, 2048, or 3072 bits longz,q must be exactly 160, 224, or 256 bits longzg, p don't satisfy 1 < g < p.)r)r*r+)r,r-r.)p bit_length ValueErrorqg)rrrr _check_dsa_parameterss r5cCsT|jj}t||jdks&|j|jkr.td|jjt|j|j|j krPtddS)Nrzx must be > 0 and < q.z y must be equal to (g ** x % p).) r$rr5xr3r2ypowr4r0)Znumbersrrrr _check_dsa_private_numberss r9c@sReZdZddZejdZejdZejdZddZ dd Z d d Z d d Z dS)DSAParameterNumberscCsHt|tj s*t|tj s*t|tj r2td||_||_||_dS)Nz;DSAParameterNumbers p, q, and g arguments must be integers.) isinstancesix integer_types TypeError_p_q_g)rr0r3r4rrr __init__szDSAParameterNumbers.__init__r?r@rAcCs |j|S)N)Zload_dsa_parameter_numbers)rr'rrr rszDSAParameterNumbers.parameterscCs2t|tstS|j|jko0|j|jko0|j|jkS)N)r;r:NotImplementedr0r3r4)rotherrrr __eq__s zDSAParameterNumbers.__eq__cCs ||k S)Nr)rrDrrr __ne__szDSAParameterNumbers.__ne__cCs dj|dS)Nz9)r)r)rrrr __repr__szDSAParameterNumbers.__repr__N) r r r rBrread_only_propertyr0r3r4rrErFrGrrrr r:s   r:c@sHeZdZddZejdZejdZddZddZ d d Z d d Z d S)DSAPublicNumberscCs6t|tjstdt|ts&td||_||_dS)Nz/DSAPublicNumbers y argument must be an integer.z9parameter_numbers must be a DSAParameterNumbers instance.)r;r<r=r>r:_y_parameter_numbers)rr7rrrr rBs  zDSAPublicNumbers.__init__rJrKcCs |j|S)N)Zload_dsa_public_numbers)rr'rrr rszDSAPublicNumbers.public_keycCs&t|tstS|j|jko$|j|jkS)N)r;rIrCr7r)rrDrrr rEs  zDSAPublicNumbers.__eq__cCs ||k S)Nr)rrDrrr rFszDSAPublicNumbers.__ne__cCs dj|dS)NzJ)r)r)rrrr rGszDSAPublicNumbers.__repr__N) r r r rBrrHr7rrrErFrGrrrr rIs   rIc@s@eZdZddZejdZejdZddZddZ d d Z d S) DSAPrivateNumberscCs6t|tjstdt|ts&td||_||_dS)Nz0DSAPrivateNumbers x argument must be an integer.z3public_numbers must be a DSAPublicNumbers instance.)r;r<r=r>rI_public_numbers_x)rr6r$rrr rBs  zDSAPrivateNumbers.__init__rNrMcCs |j|S)N)Zload_dsa_private_numbers)rr'rrr private_keyszDSAPrivateNumbers.private_keycCs&t|tstS|j|jko$|j|jkS)N)r;rLrCr6r$)rrDrrr rEs zDSAPrivateNumbers.__eq__cCs ||k S)Nr)rrDrrr rFszDSAPrivateNumbers.__ne__N) r r r rBrrHr6r$rOrErFrrrr rLs   rL) __future__rrrrr<Z cryptographyr add_metaclassABCMetaobjectrrrrr!ZDSAPublicKeyWithSerializationr(r r5r9r:rIrLrrrr s*  &  '&