o )%a@sddlZddlZddlmZddlmZddlmZdZdddd Z Gd d d e Z Gd d d e Z Gddde Z GdddejdZeZGdddejdZeZGdddejdZeZdS)N)utils) _get_backend) serializationireturn DHParameterscCst|}|||SN)rgenerate_dh_parameters) generatorkey_sizebackendr N/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/asymmetric/dh.pygenerate_parameterss rc@sbeZdZddededejefddZddZd d Zdd d Z e d Z e dZ e dZdS)DHParameterNumbersNpgqcCsvt|tr t|tstd|durt|tstd|dkr#td|tkr0tdt||_||_||_ dS)Nzp and g must be integerszq must be integer or Nonez!DH generator must be 2 or greaterz#p (modulus) must be at least {}-bit) isinstanceint TypeError ValueError bit_length_MIN_MODULUS_SIZEformat_p_g_q)selfrrrr r r __init__s  zDHParameterNumbers.__init__cCs2t|tstS|j|jko|j|jko|j|jkSr)rrNotImplementedrrrrotherr r r __eq__)s "zDHParameterNumbers.__eq__cC ||k Srr r!r r r __ne__1 zDHParameterNumbers.__ne__cCt|}||Sr)rload_dh_parameter_numbersrr r r r parameters4 zDHParameterNumbers.parametersrrrr)__name__ __module__ __qualname__rtypingOptionalrr#r%r*rread_only_propertyrrrr r r r rs   rc@JeZdZdefddZddZddZddd d Ze d Z e dZ dS)DHPublicNumbersparameter_numberscC4t|ts tdt|tstd||_||_dS)Nzy must be an integer.z5parameters must be an instance of DHParameterNumbers.)rrrr_y_parameter_numbers)ryr4r r r r>   zDHPublicNumbers.__init__cC&t|tstS|j|jko|j|jkSr)rr3r r6r7r!r r r r#J   zDHPublicNumbers.__eq__cCr$rr r!r r r r%Sr&zDHPublicNumbers.__ne__Nr DHPublicKeycCr'r)rload_dh_public_numbersr)r r r public_keyVr+zDHPublicNumbers.public_keyr6r7r)rr<) r,r-r.rrr#r%r>rr1r8r4r r r r r3=   r3c@r2)DHPrivateNumberspublic_numberscCr5)Nzx must be an integer.z6public_numbers must be an instance of DHPublicNumbers.)rrrr3_x_public_numbers)rxrAr r r r_r9zDHPrivateNumbers.__init__cCr:r)rr@r rBrCr!r r r r#kr;zDHPrivateNumbers.__eq__cCr$rr r!r r r r%tr&zDHPrivateNumbers.__ne__Nr DHPrivateKeycCr'r)rload_dh_private_numbersr)r r r private_keywr+zDHPrivateNumbers.private_keyrCrBrrrE) r,r-r.r3rr#r%rGrr1rArDr r r r r@^r?r@c@sLeZdZejdddZejdddddefd d Zejdefd d Z d S)rrrEcCdS)z7 Generates and returns a DHPrivateKey. Nr rr r r generate_private_keyz!DHParameters.generate_private_keyencodingserialization.Encodingrzserialization.ParameterFormatcCrI)z= Returns the parameters serialized as bytes. Nr rrMrr r r parameter_bytesrLzDHParameters.parameter_bytescCrI)z/ Returns a DHParameterNumbers. Nr rJr r r r4rLzDHParameters.parameter_numbersNrH) r,r-r.abcabstractmethodrKbytesrPrr4r r r r rs   ) metaclassc@sdeZdZejdefddZejdefddZ ejde fddZ ejdd d d de fd d Z dS)r<rcCrIz6 The bit length of the prime modulus. Nr rJr r r r rLzDHPublicKey.key_sizecCrI)zJ The DHParameters object associated with this public key. Nr rJr r r r*rLzDHPublicKey.parameterscCrI)z, Returns a DHPublicNumbers. Nr rJr r r rArLzDHPublicKey.public_numbersrMrNrzserialization.PublicFormatcCrIz6 Returns the key serialized as bytes. Nr rOr r r public_bytesrLzDHPublicKey.public_bytesN)r,r-r.rQabstractpropertyrr rRrr*r3rArSrWr r r r r<sr<c @seZdZejdefddZejdefddZ ejde fddZ ejdede fd d Z ejdefd d Zejd dddddde fddZdS)rErcCrIrUr rJr r r r rLzDHPrivateKey.key_sizecCrI)zC The DHPublicKey associated with this private key. Nr rJr r r r>rLzDHPrivateKey.public_keycCrI)zK The DHParameters object associated with this private key. Nr rJr r r r*rLzDHPrivateKey.parameterspeer_public_keycCrI)zn Given peer's DHPublicKey, carry out the key exchange and return shared key as bytes. Nr )rrYr r r exchangerLzDHPrivateKey.exchangecCrI)z- Returns a DHPrivateNumbers. Nr rJr r r private_numbersrLzDHPrivateKey.private_numbersrMrNrzserialization.PrivateFormatencryption_algorithmz(serialization.KeySerializationEncryptioncCrIrVr )rrMrr\r r r private_bytesrLzDHPrivateKey.private_bytesN)r,r-r.rQrXrr rRr<r>rr*rSrZr@r[r]r r r r rEs*rEr)rr)rQr/ cryptographyrcryptography.hazmat.backendsrcryptography.hazmat.primitivesrrrobjectrr3r@ABCMetarDHParametersWithSerializationr<DHPublicKeyWithSerializationrEDHPrivateKeyWithSerializationr r r r s     '!!,