3TfG .ddlmZddlZddlZddlmZddlmZm Z ddl m Z GddejZeZej!ej"jGd d ejZeZej!ej"j$Gd d ejZeZej!ej"j(Gd dZGddZGddZ d ddZ d ddZddZddZy)) annotationsN)openssl)_serializationhashes)utilscXeZdZejddZejddZy) DSAParameterscy)z8 Generates and returns a DSAPrivateKey. Nselfs O/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/asymmetric/dsa.pygenerate_private_keyz"DSAParameters.generate_private_keycy)z0 Returns a DSAParameterNumbers. Nr r s rparameter_numberszDSAParameters.parameter_numbersrrN)return DSAPrivateKeyrDSAParameterNumbers)__name__ __module__ __qualname__abcabstractmethodrrr rrr r s4     rr ) metaclassceZdZeej ddZej d dZej d dZej d dZ ej d dZ ej d dZ y)rcyz6 The bit length of the prime modulus. Nr r s rkey_sizezDSAPrivateKey.key_size"rrcy)zD The DSAPublicKey associated with this private key. Nr r s r public_keyzDSAPrivateKey.public_key)rrcy)zL The DSAParameters object associated with this private key. Nr r s r parameterszDSAPrivateKey.parameters/rrcy)z Signs the data Nr )r data algorithms rsignzDSAPrivateKey.sign5rrcy)z. Returns a DSAPrivateNumbers. Nr r s rprivate_numberszDSAPrivateKey.private_numbers?rrcyz6 Returns the key serialized as bytes. Nr )r encodingformatencryption_algorithms r private_byteszDSAPrivateKey.private_bytesErrNrint)r DSAPublicKeyrr )r'bytesr(8typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm]rr6)rDSAPrivateNumbers)r._serialization.Encodingr/z_serialization.PrivateFormatr0z)_serialization.KeySerializationEncryptionrr6) rrrpropertyrrr!r#r%r)r+r1r rrrr!s            L          ) - H     rrceZdZeej ddZej d dZej d dZej d dZ ej d dZ ej d dZ y)r4cyr r r s rr!zDSAPublicKey.key_sizeVrrcy)zK The DSAParameters object associated with this public key. Nr r s rr%zDSAPublicKey.parameters]rrcy)z- Returns a DSAPublicNumbers. Nr r s rpublic_numberszDSAPublicKey.public_numberscrrcyr-r )r r.r/s r public_byteszDSAPublicKey.public_bytesirrcy)z5 Verifies the signature of the data. Nr )r signaturer'r(s rverifyzDSAPublicKey.verifysrrcy)z" Checks equality. Nr r others r__eq__zDSAPublicKey.__eq__~rrNr2r5rDSAPublicNumbers)r.r9r/z_serialization.PublicFormatrr6)rCr6r'r6r(r7rNonerGobjectrbool) rrrr:rrr!r%r?rArDrHr rrr4r4Us           ) ,         L        rr4cdeZdZd dZed dZed dZed dZd d dZd dZ ddZ y)rct|tr t|trt|ts td||_||_||_y)Nz;DSAParameterNumbers p, q, and g arguments must be integers.) isinstancer3 TypeError_p_q_g)r pqgs r__init__zDSAParameterNumbers.__init__sG1c"a%a%M rc|jSN)rSr s rrVzDSAParameterNumbers.p wwrc|jSr[)rTr s rrWzDSAParameterNumbers.qr\rc|jSr[)rUr s rrXzDSAParameterNumbers.gr\rNc0ddlm}|j|SNr)backend),cryptography.hazmat.backends.openssl.backendraload_dsa_parameter_numbersr raossls rr%zDSAParameterNumbers.parameterss ..t44rct|tstS|j|jk(xr4|j|jk(xr|j |j k(Sr[)rQrNotImplementedrVrWrXrFs rrHzDSAParameterNumbers.__eq__sJ%!45! !vv LTVVuww%6L466UWW;LLrc&dj|S)Nz9r r/r s r__repr__zDSAParameterNumbers.__repr__s !6t6, r)rVr3rWr3rXr3r2r[)ra typing.Anyrr rLrstr) rrrrYr:rVrWrXr%rHrjr rrrrsS 5M  rrcReZdZddZed dZed dZd d dZd dZddZ y)rJct|ts tdt|ts td||_||_y)Nz/DSAPublicNumbers y argument must be an integer.z9parameter_numbers must be a DSAParameterNumbers instance.)rQr3rRr_y_parameter_numbers)r yrs rrYzDSAPublicNumbers.__init__sE!S!MN N+-@AK "3rc|jSr[)rpr s rrrzDSAPublicNumbers.yr\rc|jSr[)rqr s rrz"DSAPublicNumbers.parameter_numberss&&&rNc0ddlm}|j|Sr`)rbraload_dsa_public_numbersrds rr#zDSAPublicNumbers.public_keys ++D11rct|tstS|j|jk(xr|j|jk(Sr[)rQrJrgrrrrFs rrHzDSAPublicNumbers.__eq__sD%!12! ! FFegg  B&&%*A*AA rc&dj|S)NzJr rir s rrjzDSAPublicNumbers.__repr__s ;;A6t6;L r)rrr3rrr2rr[)rarkrr4rLrl) rrrrYr:rrrr#rHrjr rrrJrJs> 4''2  rrJcJeZdZddZeddZed dZd d dZd dZy) r8ct|ts tdt|ts td||_||_y)Nz0DSAPrivateNumbers x argument must be an integer.z3public_numbers must be a DSAPublicNumbers instance.)rQr3rRrJ_public_numbers_x)r xr?s rrYzDSAPrivateNumbers.__init__sD!S!NO O.*:;E  .rc|jSr[)r|r s rr}zDSAPrivateNumbers.xr\rc|jSr[)r{r s rr?z DSAPrivateNumbers.public_numberss###rNc0ddlm}|j|Sr`)rbraload_dsa_private_numbersrds r private_keyzDSAPrivateNumbers.private_keys ,,T22rct|tstS|j|jk(xr|j|jk(Sr[)rQr8rgr}r?rFs rrHzDSAPrivateNumbers.__eq__s@%!23! ! FFegg  M$"5"59M9M"M r)r}r3r?rJr2rIr[)rarkrrrL) rrrrYr:r}r?rrHr rrr8r8s9 $$3 rr8c0ddlm}|j|Sr`)rbragenerate_dsa_parametersr!rares rgenerate_parametersrsM  ' ' 11rc0ddlm}|j|Sr`)rbra'generate_dsa_private_key_and_parametersrs rrrsM  7 7 AArc |jjdvr td|jjdvr tdd|jcxkr|jkstdtdy)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.)rV bit_length ValueErrorrWrX)r%s r_check_dsa_parametersrs|| (@@ C  || 7GHH +z|| +899 ,899 ,rcF|jj}t||jdks|j|jk\r t d|jj t|j|j|jk7r t dy)Nrzx must be > 0 and < q.z y must be equal to (g ** x % p).) r?rrr}rWrrrpowrXrV)numbersr%s r_check_dsa_private_numbersr$s|''99J*%yyA~jll21223z||WYY #MM;<<Nrr[)r!r3rarkrr )r!r3rarkrr)r%rrrK)rr8rrK) __future__rrtyping"cryptography.hazmat.bindings._rustr rust_opensslcryptography.hazmat.primitivesrr)cryptography.hazmat.primitives.asymmetricr asym_utilsABCMetar DSAParametersWithNumbersregisterdsarDSAPrivateKeyWithSerializationr4DSAPublicKeyWithSerializationrrJr8rrrrr rrrs$ # FAI  ckk  ) |''556- ckk- `"/ |''556- S[[- `!- l&&334, , ^) ) X! ! J*.22&22*.BB&BB :=r