3 L]N@sddlmZmZmZddlZddlZddlmZddZGddde Z Gdd d e Z Gd d d e Z ej ejGd d d e ZeZej ejGddde Zej ejGdddeZej ejGddde ZeZdS))absolute_importdivisionprint_functionN)utilscCs |j||S)N)Zgenerate_dh_parameters) generatorkey_sizebackendr V/tmp/pip-install-wfra5znf/cryptography/cryptography/hazmat/primitives/asymmetric/dh.pygenerate_parameterssr c@s@eZdZddZddZddZddZejd Z ejd Z d S) DHPrivateNumberscCs6t|tjstdt|ts&td||_||_dS)Nzx must be an integer.z6public_numbers must be an instance of DHPublicNumbers.) isinstancesix integer_types TypeErrorDHPublicNumbers_x_public_numbers)selfxpublic_numbersr r r __init__s   zDHPrivateNumbers.__init__cCs&t|tstS|j|jko$|j|jkS)N)r r NotImplementedrr)rotherr r r __eq__s  zDHPrivateNumbers.__eq__cCs ||k S)Nr )rrr r r __ne__'szDHPrivateNumbers.__ne__cCs |j|S)N)Zload_dh_private_numbers)rrr r r private_key*szDHPrivateNumbers.private_keyrrN) __name__ __module__ __qualname__rrrrrread_only_propertyrrr r r r r s    r c@s@eZdZddZddZddZddZejd Z ejd Z d S) rcCs6t|tjstdt|ts&td||_||_dS)Nzy must be an integer.z5parameters must be an instance of DHParameterNumbers.)r rrrDHParameterNumbers_y_parameter_numbers)ryparameter_numbersr r r r2s  zDHPublicNumbers.__init__cCs&t|tstS|j|jko$|j|jkS)N)r rrr"r#)rrr r r r=s  zDHPublicNumbers.__eq__cCs ||k S)Nr )rrr r r rFszDHPublicNumbers.__ne__cCs |j|S)N)Zload_dh_public_numbers)rrr r r public_keyIszDHPublicNumbers.public_keyr"r#N) rrrrrrr&rr r$r%r r r r r1s    rc@sLeZdZd ddZddZddZdd Zejd Z ejd Z ejd Z dS)r!NcCsht|tj st|tj r$td|dk rBt|tj rBtd|dkrRtd||_||_||_dS)Nzp and g must be integerszq must be integer or Nonez!DH generator must be 2 or greater)r rrr ValueError_p_g_q)rpgqr r r rQszDHParameterNumbers.__init__cCs2t|tstS|j|jko0|j|jko0|j|jkS)N)r r!rr)r*r+)rrr r r ras    zDHParameterNumbers.__eq__cCs ||k S)Nr )rrr r r rkszDHParameterNumbers.__ne__cCs |j|S)N)Zload_dh_parameter_numbers)rrr r r parametersnszDHParameterNumbers.parametersr)r*r+)N) rrrrrrr/rr r,r-r.r r r r r!Ps    r!c@s6eZdZejddZejddZejddZdS) DHParameterscCsdS)z7 Generates and returns a DHPrivateKey. Nr )rr r r generate_private_keyxsz!DHParameters.generate_private_keycCsdS)z= Returns the parameters serialized as bytes. Nr )rencodingformatr r r parameter_bytes~szDHParameters.parameter_bytescCsdS)z/ Returns a DHParameterNumbers. Nr )rr r r r%szDHParameters.parameter_numbersN)rrrabcabstractmethodr1r4r%r r r r r0vsr0c@sDeZdZejddZejddZejddZejddZ d S) DHPrivateKeycCsdS)z6 The bit length of the prime modulus. Nr )rr r r rszDHPrivateKey.key_sizecCsdS)zC The DHPublicKey associated with this private key. Nr )rr r r r&szDHPrivateKey.public_keycCsdS)zK The DHParameters object associated with this private key. Nr )rr r r r/szDHPrivateKey.parameterscCsdS)zn Given peer's DHPublicKey, carry out the key exchange and return shared key as bytes. Nr )rZpeer_public_keyr r r exchangeszDHPrivateKey.exchangeN) rrrr5abstractpropertyrr6r&r/r8r r r r r7sr7c@s(eZdZejddZejddZdS)DHPrivateKeyWithSerializationcCsdS)z- Returns a DHPrivateNumbers. Nr )rr r r private_numberssz-DHPrivateKeyWithSerialization.private_numberscCsdS)z6 Returns the key serialized as bytes. Nr )rr2r3Zencryption_algorithmr r r private_bytessz+DHPrivateKeyWithSerialization.private_bytesN)rrrr5r6r;r<r r r r r:sr:c@sDeZdZejddZejddZejddZejddZ d S) DHPublicKeycCsdS)z6 The bit length of the prime modulus. Nr )rr r r rszDHPublicKey.key_sizecCsdS)zJ The DHParameters object associated with this public key. Nr )rr r r r/szDHPublicKey.parameterscCsdS)z, Returns a DHPublicNumbers. Nr )rr r r rszDHPublicKey.public_numberscCsdS)z6 Returns the key serialized as bytes. Nr )rr2r3r r r public_bytesszDHPublicKey.public_bytesN) rrrr5r9rr6r/rr>r r r r r=sr=) __future__rrrr5rZ cryptographyrr objectr rr! add_metaclassABCMetar0ZDHParametersWithSerializationr7r:r=ZDHPublicKeyWithSerializationr r r r s" &