pghddlZddlZddlmZmZddlmZGddejZ e Z GddejZ e Z Gd d ejZ e ZGd d ZGd dZGddZ ddedejde fdZ ddedejde fdZdeddfdZdeddfdZdS)N)_serializationhashes)utilscReZdZejddZejddZdS) DSAParametersreturn DSAPrivateKeycdS)z8 Generates and returns a DSAPrivateKey. Nselfs O/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/asymmetric/dsa.pygenerate_private_keyz"DSAParameters.generate_private_keyDSAParameterNumberscdS)z0 Returns a DSAParameterNumbers. Nr r s rparameter_numberszDSAParameters.parameter_numbersrrN)rr )rr)__name__ __module__ __qualname__abcabstractmethodrrr rrrrsZ           rr) metaclassc JeZdZejdefdZejddZejde fdZ ejde de j ejejfde fdZejdd Zejd ejd ejd ejde fdZdS)r rcdSz6 The bit length of the prime modulus. Nr r s rkey_sizezDSAPrivateKey.key_size!rr DSAPublicKeycdS)zD The DSAPublicKey associated with this private key. Nr r s r public_keyzDSAPrivateKey.public_key'rrcdS)zL The DSAParameters object associated with this private key. Nr r s r parameterszDSAPrivateKey.parameters-rrdata algorithmcdS)z Signs the data Nr )r r$r%s rsignzDSAPrivateKey.sign3rrDSAPrivateNumberscdS)z. Returns a DSAPrivateNumbers. Nr r s rprivate_numberszDSAPrivateKey.private_numbers=rrencodingformatencryption_algorithmcdSz6 Returns the key serialized as bytes. Nr )r r+r,r-s r private_byteszDSAPrivateKey.private_bytesCrrN)rr)rr()rrrrabstractpropertyintrrr!rr#bytestypingUnion asym_utils Prehashedr HashAlgorithmr'r*rEncoding PrivateFormatKeySerializationEncryptionr0r rrr r sU #           M       < 4f6J JK               ) , -G         rr c eZdZejdefdZejdefdZ ejddZ ejde j de j defdZejd ed ed ejejejfdd fd Zd S)rrcdSrr r s rrzDSAPublicKey.key_sizeSrrcdS)zK The DSAParameters object associated with this public key. Nr r s rr#zDSAPublicKey.parametersYrrDSAPublicNumberscdS)z- Returns a DSAPublicNumbers. Nr r s rpublic_numberszDSAPublicKey.public_numbers_rrr+r,cdSr/r )r r+r,s r public_byteszDSAPublicKey.public_byteserr signaturer$r%NcdS)z5 Verifies the signature of the data. Nr )r rDr$r%s rverifyzDSAPublicKey.verifyorr)rr?)rrrrr1r2rrrr#rArr9 PublicFormatr3rCr4r5r6r7rr8rFr rrrrRs. #      M            ) +           < 4f6J JK         rrceZdZdededefdZedefdZedefdZedefdZdd e j de fd Z d e defd ZdefdZd S)rpqgct|tr*t|trt|tstd||_||_||_dS)Nz;DSAParameterNumbers p, q, and g arguments must be integers.) isinstancer2 TypeError_p_q_g)r rIrJrKs r__init__zDSAParameterNumbers.__init__sl1c"" a%% a%%  M rrc|jSN)rOr s rrIzDSAParameterNumbers.p wrc|jSrT)rPr s rrJzDSAParameterNumbers.qrUrc|jSrT)rQr s rrKzDSAParameterNumbers.grUrNbackendc8ddlm}||SNr)rX),cryptography.hazmat.backends.openssl.backendrXload_dsa_parameter_numbersr rXossls rr#zDSAParameterNumbers.parameterss6      ..t444rotherct|tstS|j|jko|j|jko|j|jkSrT)rMrNotImplementedrIrJrKr r_s r__eq__zDSAParameterNumbers.__eq__sF%!455 "! !v LTVuw%6L46UW;LLrc.d|S)Nz9r r,r s r__repr__zDSAParameterNumbers.__repr__s !6t6,, rrT)rrrr2rRpropertyrIrJrKr4Anyrr#objectboolrcstrrfr rrrr~s # # #    3X3X3X55&*5 5555MFMtMMMM  #      rrceZdZdedefdZedefdZedefdZd de j de fd Z d e defd Zdefd ZdS)r?yrct|tstdt|tstd||_||_dS)Nz/DSAPublicNumbers y argument must be an integer.z9parameter_numbers must be a DSAParameterNumbers instance.)rMr2rNr_y_parameter_numbers)r rmrs rrRzDSAPublicNumbers.__init__sd!S!! OMNN N+-@AA K "3rrc|jSrT)ror s rrmzDSAPublicNumbers.yrUrc|jSrT)rpr s rrz"DSAPublicNumbers.parameter_numberss &&rNrXc8ddlm}||SrZ)r[rXload_dsa_public_numbersr]s rr!zDSAPublicNumbers.public_keys6      ++D111rr_czt|tstS|j|jko|j|jkSrT)rMr?rarmrrbs rrczDSAPublicNumbers.__eq__sB%!122 "! ! Feg  B&%*AA rc.d|S)NzJr rer s rrfzDSAPublicNumbers.__repr__s ;;A6t6;L;L rrT)rrrr2rrRrgrmrr4rhrr!rirjrcrkrfr rrr?r?s 4# 42E 4 4 4 43X'#6'''X'22&*2 2222 F t     #      rr?ceZdZdedefdZedefdZedefdZd de j de fd Z d e defd ZdS) r(xrAct|tstdt|tstd||_||_dS)Nz0DSAPrivateNumbers x argument must be an integer.z3public_numbers must be a DSAPublicNumbers instance.)rMr2rNr?_public_numbers_x)r rxrAs rrRzDSAPrivateNumbers.__init__sa!S!! PNOO O.*:;; E  .rrc|jSrT)r{r s rrxzDSAPrivateNumbers.xrUrc|jSrT)rzr s rrAz DSAPrivateNumbers.public_numberss ##rNrXc8ddlm}||SrZ)r[rXload_dsa_private_numbersr]s r private_keyzDSAPrivateNumbers.private_keys6      ,,T222rr_czt|tstS|j|jko|j|jkSrT)rMr(rarxrArbs rrczDSAPrivateNumbers.__eq__s>%!233 "! ! Feg  M$"59M"M rrT)rrrr2r?rRrgrxrAr4rhr rrirjrcr rrr(r(s # /?    3X$ 0$$$X$336:33333 F t      rr(rrXrc8ddlm}||SrZ)r[rXgenerate_dsa_parametersrrXr^s rgenerate_parametersrs+MLLLLL  ' ' 1 11rc8ddlm}||SrZ)r[rX'generate_dsa_private_key_and_parametersrs rrrs+MLLLLL  7 7 A AArr#c|jdvrtd|jdvrtdd|jcxkr |jksntddS)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.)rI bit_length ValueErrorrJrK)r#s r_check_dsa_parametersr s|  (@@@ C   |  77GHHH + + + +z| + + + +8999 , +rnumbersc |jj}t||jdks|j|jkrt d|jjt|j|j|j krt ddS)Nrzx must be > 0 and < q.z y must be equal to (g ** x % p).) rArrrxrJrrmpowrKrI)rr#s r_check_dsa_private_numbersrs~'9J*%%%yA~~jl2212223z|WY #M#MMM;<<<NMrrT)rr4cryptography.hazmat.primitivesrr)cryptography.hazmat.primitives.asymmetricrr6ABCMetarDSAParametersWithNumbersr DSAPrivateKeyWithSerializationrDSAPublicKeyWithSerializationrr?r(r2rhrrrrr rrrs?  AAAAAAAA      ck     ), , , , , ck, , , , ^"/& & & & & S[& & & & R!-, , , , , , , , ^) ) ) ) ) ) ) ) X! ! ! ! ! ! ! ! J*.222"J22222*.BBB"JBBBBB :&9 :d : : : :=(9=d======r