a a @sddlZddlZddlmZmZddlmZmZmZ Gdddej dZ e Z Gdddej dZ e ZGd d d ej dZeZGd d d eZGd ddeZGdddeZdeeje dddZdeeje dddZeddddZeddddZdS)N)_serializationhashes)AsymmetricSignatureContextAsymmetricVerificationContextutilsc@s4eZdZejddddZejddddZdS) DSAParameters DSAPrivateKeyreturncCsdS)z8 Generates and returns a DSAPrivateKey. Nselfr r S/usr/lib64/python3.9/site-packages/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)rr 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 parameters/szDSAPrivateKey.parameters)signature_algorithmr cCsdS)zN Returns an AsymmetricSignatureContext used for signing data. Nr )r rr r rsigner5szDSAPrivateKey.signer)data algorithmr cCsdS)z Signs the data Nr )r rr r r rsign>szDSAPrivateKey.signDSAPrivateNumberscCsdS)z. Returns a DSAPrivateNumbers. Nr r r r rprivate_numbersHszDSAPrivateKey.private_numbers)encodingformatencryption_algorithmr cCsdSz6 Returns the key serialized as bytes. Nr )r r$r%r&r r r private_bytesNszDSAPrivateKey.private_bytesN)rrrrabstractpropertyintrrrrrr HashAlgorithmrrbytestypingUnion asym_utils Prehashedr!r#rEncodingZ PrivateFormatZKeySerializationEncryptionr(r r r rr"s. rc@seZdZejedddZejedddZ eje e j e dddZejd dd d Zejejeje d d dZeje e ejeje j fddddZdS)rr cCsdSrr r r r rr^szDSAPublicKey.key_sizecCsdS)zK The DSAParameters object associated with this public key. Nr r r r rrdszDSAPublicKey.parameters) signaturerr cCsdS)zQ Returns an AsymmetricVerificationContext used for signing data. Nr )r r2rr r rverifierjszDSAPublicKey.verifierDSAPublicNumberscCsdS)z- Returns a DSAPublicNumbers. Nr r r r rpublic_numberstszDSAPublicKey.public_numbers)r$r%r cCsdSr'r )r r$r%r r r public_byteszszDSAPublicKey.public_bytesN)r2rr r cCsdS)z5 Verifies the signature of the data. Nr )r r2rr r r rverifyszDSAPublicKey.verify)rrrrr)r*rrrrr,rr+rr3r5rr1Z PublicFormatr6r-r.r/r0r7r r r rr]s,  rc@sneZdZeeedddZeddZeddZeddZde j e d d d Z d d Z ddZddZdS)r)pqgcCs<t|trt|trt|ts&td||_||_||_dS)Nz;DSAParameterNumbers p, q, and g arguments must be integers.) isinstancer* TypeError_p_q_g)r r8r9r:r r r__init__szDSAParameterNumbers.__init__cCs|jSN)r=r r r rzDSAParameterNumbers.cCs|jSrA)r>r r r rrBrCcCs|jSrA)r?r r r rrBrCNbackendr cCsddlm}||SNr)rE),cryptography.hazmat.backends.openssl.backendrEZload_dsa_parameter_numbersr rEosslr r rrs zDSAParameterNumbers.parameterscCs2t|tstS|j|jko0|j|jko0|j|jkSrA)r;rNotImplementedr8r9r:r otherr r r__eq__s zDSAParameterNumbers.__eq__cCs ||k SrAr rKr r r__ne__szDSAParameterNumbers.__ne__cCs dj|dS)Nz9r r%r r r r__repr__szDSAParameterNumbers.__repr__)N)rrrr*r@propertyr8r9r:r-AnyrrrMrNrPr r r rrs   rc@s`eZdZeedddZeddZeddZde j e dd d Z d d Z d dZddZdS)r4)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)r rSrr r rr@s  zDSAPublicNumbers.__init__cCs|jSrA)rTr r r rrBrCzDSAPublicNumbers.cCs|jSrA)rUr r r rrBrCNrDcCsddlm}||SrF)rGrEZload_dsa_public_numbersrHr r rrs zDSAPublicNumbers.public_keycCs&t|tstS|j|jko$|j|jkSrA)r;r4rJrSrrKr r rrMs    zDSAPublicNumbers.__eq__cCs ||k SrAr rKr r rrNszDSAPublicNumbers.__ne__cCs dj|dS)NzJr rOr r r rrPszDSAPublicNumbers.__repr__)N)rrrr*rr@rQrSrr-rRrrrMrNrPr r r rr4s   r4c@sXeZdZeedddZeddZeddZde j e dd d Z d d Z d dZdS)r")xr5cCs4t|tstdt|ts$td||_||_dS)Nz0DSAPrivateNumbers x argument must be an integer.z3public_numbers must be a DSAPublicNumbers instance.)r;r*r<r4_public_numbers_x)r rVr5r r rr@s  zDSAPrivateNumbers.__init__cCs|jSrA)rXr r r rrBrCzDSAPrivateNumbers.cCs|jSrA)rWr r r rrBrCNrDcCsddlm}||SrF)rGrEZload_dsa_private_numbersrHr r r private_keys zDSAPrivateNumbers.private_keycCs&t|tstS|j|jko$|j|jkSrA)r;r"rJrVr5rKr r rrMs zDSAPrivateNumbers.__eq__cCs ||k SrAr rKr r rrNszDSAPrivateNumbers.__ne__)N)rrrr*r4r@rQrVr5r-rRrrYrMrNr r r rr"s   r")rrEr cCsddlm}||SrF)rGrEZgenerate_dsa_parametersrrErIr r rgenerate_parameters s r[cCsddlm}||SrF)rGrEZ'generate_dsa_private_key_and_parametersrZr r rrs r)rr cCsR|jdvrtd|jdvr,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.)r8 bit_length ValueErrorr9r:)rr r r_check_dsa_parameterssrb)numbersr cCsT|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).) r5rrbrVr9rarSpowr:r8)rcrr r r_check_dsa_private_numbers%s re)N)N)rr-Zcryptography.hazmat.primitivesrrZ)cryptography.hazmat.primitives.asymmetricrrrr/ABCMetarZDSAParametersWithNumbersrZDSAPrivateKeyWithSerializationrZDSAPublicKeyWithSerializationobjectrr4r"r*rRr[rrbrer r r rs083**#