U q`@sddlZddlZddlmZddlmZddlmZdZddddd Z Gd d d e Z Gd d d e Z Gddde Z GdddejdZeZGdddejdZeZGdddejdZeZdS)N)utils) _get_backend) serializationi DHParametersreturncCst|}|||SN)rZgenerate_dh_parameters) generatorkey_sizebackendr S/tmp/pip-target-nv4zd3e_/lib/python/cryptography/hazmat/primitives/asymmetric/dh.pygenerate_parameterssrc@s^eZdZdeeejedddZddZddZdd d Z e d Z e d Z e d ZdS)DHParameterNumbersN)pgqcCsvt|trt|tstd|dk r6t|ts6td|dkrFtd|tkr`tdt||_||_||_ 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|jko0|j|jko0|j|jkSr)rrNotImplementedrrrrotherr r r __eq__)s "zDHParameterNumbers.__eq__cCs ||k Srr r!r r r __ne__1szDHParameterNumbers.__ne__cCst|}||Sr)rZload_dh_parameter_numbersrr r r r parameters4szDHParameterNumbers.parametersrrr)N)N)__name__ __module__ __qualname__rtypingOptionalrr#r$r&rread_only_propertyrrrr r r r rs   rc@sNeZdZedddZddZddZdd d d d Ze d Z e dZ dS)DHPublicNumbers)parameter_numberscCs4t|tstdt|ts$td||_||_dS)Nzy must be an integer.z5parameters must be an instance of DHParameterNumbers.)rrrr_y_parameter_numbers)ryr.r r r r>s  zDHPublicNumbers.__init__cCs&t|tstS|j|jko$|j|jkSr)rr-r r/r0r!r r r r#Js    zDHPublicNumbers.__eq__cCs ||k Srr r!r r r r$SszDHPublicNumbers.__ne__N DHPublicKeyrcCst|}||Sr)rZload_dh_public_numbersr%r r r public_keyVszDHPublicNumbers.public_keyr/r0)N) r'r(r)rrr#r$r3rr,r1r.r r r r r-=s    r-c@sNeZdZedddZddZddZdd d d d Ze d Z e dZ dS)DHPrivateNumbers)public_numberscCs4t|tstdt|ts$td||_||_dS)Nzx must be an integer.z6public_numbers must be an instance of DHPublicNumbers.)rrrr-_x_public_numbers)rxr5r r r r_s  zDHPrivateNumbers.__init__cCs&t|tstS|j|jko$|j|jkSr)rr4r r6r7r!r r r r#ks    zDHPrivateNumbers.__eq__cCs ||k Srr r!r r r r$tszDHPrivateNumbers.__ne__N DHPrivateKeyrcCst|}||Sr)rZload_dh_private_numbersr%r r r private_keywszDHPrivateNumbers.private_keyr7r6)N) r'r(r)r-rr#r$r:rr,r5r8r r r r r4^s    r4c@sLeZdZejddddZejddeddd Zejedd d Z d S) rr9rcCsdS)z7 Generates and returns a DHPrivateKey. Nr rr r r generate_private_keysz!DHParameters.generate_private_keyserialization.Encodingzserialization.ParameterFormatencodingrrcCsdS)z= Returns the parameters serialized as bytes. Nr rr?rr r r parameter_bytesszDHParameters.parameter_bytescCsdS)z/ Returns a DHParameterNumbers. Nr r;r r r r.szDHParameters.parameter_numbersN) r'r(r)abcabstractmethodr<bytesrArr.r r r r rs ) metaclassc@s`eZdZejedddZejedddZ eje dddZ ejdd e d d d Z d S)r2rcCsdSz6 The bit length of the prime modulus. Nr r;r r r r szDHPublicKey.key_sizecCsdS)zJ The DHParameters object associated with this public key. Nr r;r r r r&szDHPublicKey.parameterscCsdS)z, Returns a DHPublicNumbers. Nr r;r r r r5szDHPublicKey.public_numbersr=zserialization.PublicFormatr>cCsdSz6 Returns the key serialized as bytes. Nr r@r r r public_bytesszDHPublicKey.public_bytesN)r'r(r)rBabstractpropertyrr rCrr&r-r5rDrHr r r r r2sr2c@seZdZejedddZejedddZ eje dddZ ejee dd d Z ejedd d Zejd dde dddZdS)r9rcCsdSrFr r;r r r r szDHPrivateKey.key_sizecCsdS)zC The DHPublicKey associated with this private key. Nr r;r r r r3szDHPrivateKey.public_keycCsdS)zK The DHParameters object associated with this private key. Nr r;r r r r&szDHPrivateKey.parameters)peer_public_keyrcCsdS)zn Given peer's DHPublicKey, carry out the key exchange and return shared key as bytes. Nr )rrJr r r exchangeszDHPrivateKey.exchangecCsdS)z- Returns a DHPrivateNumbers. Nr r;r r r private_numbersszDHPrivateKey.private_numbersr=zserialization.PrivateFormatz(serialization.KeySerializationEncryption)r?rencryption_algorithmrcCsdSrGr )rr?rrMr r r private_bytesszDHPrivateKey.private_bytesN)r'r(r)rBrIrr rCr2r3rr&rDrKr4rLrNr r r r r9s r9)N)rBr*Z cryptographyrZcryptography.hazmat.backendsrZcryptography.hazmat.primitivesrrrobjectrr-r4ABCMetarZDHParametersWithSerializationr2ZDHPublicKeyWithSerializationr9ZDHPrivateKeyWithSerializationr r r r s   '!!,