U q`@sddlZddlZddlmZddlmZddlmZmZddl m Z m Z mZ Gdddej dZeZGd d d ej dZeZGd d d ej dZeZGd ddeZGdddeZGdddeZdeedddZdeedddZedddZedddZdS) N)utils) _get_backend)_serializationhashes)AsymmetricSignatureContextAsymmetricVerificationContextrc@s4eZdZejddddZejddddZdS) DSAParameters DSAPrivateKeyreturncCsdS)z8 Generates and returns a DSAPrivateKey. Nselfr r T/tmp/pip-target-nv4zd3e_/lib/python/cryptography/hazmat/primitives/asymmetric/dsa.pygenerate_private_keysz"DSAParameters.generate_private_keyDSAParameterNumberscCsdS)z0 Returns a DSAParameterNumbers. Nr r r r rparameter_numbersszDSAParameters.parameter_numbersN)__name__ __module__ __qualname__abcabstractmethodrrr r r rrsr) metaclassc@seZdZejedddZejddddZeje dddZ eje j e d d d Zejeejeje j fed d dZejddddZejejejejedddZdS)r r cCsdSz6 The bit length of the prime modulus. Nr r r r rkey_size%szDSAPrivateKey.key_size DSAPublicKeycCsdS)zD The DSAPublicKey associated with this private key. Nr r r r r public_key+szDSAPrivateKey.public_keycCsdS)zL The DSAParameters object associated with this private key. Nr r r r r parameters1szDSAPrivateKey.parameters)signature_algorithmr cCsdS)zN Returns an AsymmetricSignatureContext used for signing data. Nr )rrr r rsigner7szDSAPrivateKey.signer)data algorithmr cCsdS)z Signs the data Nr )rr r!r r rsign@szDSAPrivateKey.signDSAPrivateNumberscCsdS)z. Returns a DSAPrivateNumbers. Nr r r r rprivate_numbersJszDSAPrivateKey.private_numbers)encodingformatencryption_algorithmr cCsdSz6 Returns the key serialized as bytes. Nr )rr%r&r'r r r private_bytesPszDSAPrivateKey.private_bytesN)rrrrabstractpropertyintrrrrrr HashAlgorithmrrbytestypingUnion asym_utils Prehashedr"r$rEncodingZ PrivateFormatZKeySerializationEncryptionr)r r r rr $s. r c@seZdZejedddZejedddZ eje e j e dddZejd dd d Zejejeje d d dZeje e ejeje j fdddZdS)rr cCsdSrr r r r rr`szDSAPublicKey.key_sizecCsdS)zK The DSAParameters object associated with this public key. Nr r r r rrfszDSAPublicKey.parameters) signaturerr cCsdS)zQ Returns an AsymmetricVerificationContext used for signing data. Nr )rr3rr r rverifierlszDSAPublicKey.verifierDSAPublicNumberscCsdS)z- Returns a DSAPublicNumbers. Nr r r r rpublic_numbersvszDSAPublicKey.public_numbers)r%r&r cCsdSr(r )rr%r&r r r public_bytes|szDSAPublicKey.public_bytes)r3r r!cCsdS)z5 Verifies the signature of the data. Nr )rr3r r!r r rverifyszDSAPublicKey.verifyN)rrrrr*r+rrrrr-rr,rr4r6rr2Z PublicFormatr7r.r/r0r1r8r r r rr_s*  rc@sdeZdZeeedddZedZedZedZ de dd d Z d d Z d dZ ddZdS)r)pqgcCs<t|trt|trt|ts&td||_||_||_dS)Nz;DSAParameterNumbers p, q, and g arguments must be integers.) isinstancer+ TypeError_p_q_g)rr9r:r;r r r__init__szDSAParameterNumbers.__init__r>r?r@Nr cCst|}||SN)rZload_dsa_parameter_numbersrbackendr r rrszDSAParameterNumbers.parameterscCs2t|tstS|j|jko0|j|jko0|j|jkSrB)r<rNotImplementedr9r:r;rotherr r r__eq__s zDSAParameterNumbers.__eq__cCs ||k SrBr rFr r r__ne__szDSAParameterNumbers.__ne__cCs dj|dS)Nz9r r&r r r r__repr__szDSAParameterNumbers.__repr__)N)rrrr+rArread_only_propertyr9r:r;rrrHrIrKr r r rrs   rc@sXeZdZeedddZedZedZ de ddd Z d d Z d d Z ddZdS)r5)yrcCs4t|tstdt|ts$td||_||_dS)Nz/DSAPublicNumbers y argument must be an integer.z9parameter_numbers must be a DSAParameterNumbers instance.)r<r+r=r_y_parameter_numbers)rrMrr r rrAs  zDSAPublicNumbers.__init__rNrONr cCst|}||SrB)rZload_dsa_public_numbersrCr r rrszDSAPublicNumbers.public_keycCs&t|tstS|j|jko$|j|jkSrB)r<r5rErMrrFr r rrHs    zDSAPublicNumbers.__eq__cCs ||k SrBr rFr r rrIszDSAPublicNumbers.__ne__cCs dj|dS)NzJr rJr r r rrKszDSAPublicNumbers.__repr__)N)rrrr+rrArrLrMrrrrHrIrKr r r rr5s   r5c@sPeZdZeedddZedZedZ de ddd Z d d Z d d Z dS)r#)xr6cCs4t|tstdt|ts$td||_||_dS)Nz0DSAPrivateNumbers x argument must be an integer.z3public_numbers must be a DSAPublicNumbers instance.)r<r+r=r5_public_numbers_x)rrPr6r r rrAs  zDSAPrivateNumbers.__init__rRrQNr cCst|}||SrB)rZload_dsa_private_numbersrCr r r private_keyszDSAPrivateNumbers.private_keycCs&t|tstS|j|jko$|j|jkSrB)r<r#rErPr6rFr r rrHs zDSAPrivateNumbers.__eq__cCs ||k SrBr rFr r rrIszDSAPrivateNumbers.__ne__)N)rrrr+r5rArrLrPr6r rSrHrIr r r rr#s   r#)rr cCst|}||SrB)rZgenerate_dsa_parametersrrDr r rgenerate_parameterssrUcCst|}||SrB)rZ'generate_dsa_private_key_and_parametersrTr r rrsrrcCsR|jdkrtd|jdkr,tdd|jkrD|jksNntddS)N)iii iz5p must be exactly 1024, 2048, 3072, or 4096 bits long)z,q must be exactly 160, 224, or 256 bits longzg, p don't satisfy 1 < g < p.)r9 bit_length ValueErrorr:r;rVr r r_check_dsa_parameters sr])numberscCsT|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).) r6rr]rPr:r\rMpowr;r9)r^rr r r_check_dsa_private_numberss r`)N)N)rr.Z cryptographyrZcryptography.hazmat.backendsrZcryptography.hazmat.primitivesrrZ)cryptography.hazmat.primitives.asymmetricrrr0ABCMetarZDSAParametersWithNumbersr ZDSAPrivateKeyWithSerializationrZDSAPublicKeyWithSerializationobjectrr5r#r+rUrr]r`r r r rs$  83''