a a@sddlZddlZddlmZdZdeeejddddZGdd d eZ Gd d d eZ Gd d d eZ Gdddej dZ e ZGdddej dZeZGdddej dZeZdS)N) serializationi DHParameters) generatorkey_sizebackendreturncCsddlm}|||SNr)r),cryptography.hazmat.backends.openssl.backendrZgenerate_dh_parameters)rrrosslr R/usr/lib64/python3.9/site-packages/cryptography/hazmat/primitives/asymmetric/dh.pygenerate_parameterss r c@speZdZdeeejeddddZddZddZdej d d d d Z e d dZ e ddZ e ddZdS)DHParameterNumbersN)pgqrcCsvt|trt|tstd|dur6t|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|jkSN)rrNotImplementedrrrrotherr r r __eq__*s "zDHParameterNumbers.__eq__cCs ||k Srr r!r r r __ne__2szDHParameterNumbers.__ne__rrrcCsddlm}||Sr)r rZload_dh_parameter_numbersrrr r r r parameters5s zDHParameterNumbers.parameterscCs|jSr)rrr r r <zDHParameterNumbers.cCs|jSr)rr(r r r r)=r*cCs|jSr)rr(r r r r)>r*)N)N)__name__ __module__ __qualname__rtypingOptionalrr#r$Anyr'propertyrrrr r r r rs  rc@sZeZdZeeddddZddZddZdej d d d d Z e d dZ e ddZ dS)DHPublicNumbersN)yparameter_numbersrcCs4t|tstdt|ts$td||_||_dS)Nzy must be an integer.z5parameters must be an instance of DHParameterNumbers.)rrrr_y_parameter_numbers)rr3r4r r r rBs  zDHPublicNumbers.__init__cCs&t|tstS|j|jko$|j|jkSr)rr2r r5r6r!r r r r#Ns    zDHPublicNumbers.__eq__cCs ||k Srr r!r r r r$WszDHPublicNumbers.__ne__ DHPublicKeyr%cCsddlm}||Sr)r rZload_dh_public_numbersr&r r r public_keyZs zDHPublicNumbers.public_keycCs|jSr)r5r(r r r r)ar*zDHPublicNumbers.cCs|jSr)r6r(r r r r)br*)N)r+r,r-rrrr#r$r.r0r8r1r3r4r r r r r2As    r2c@sZeZdZeeddddZddZddZdej d d d d Z e d dZ e ddZ dS)DHPrivateNumbersN)xpublic_numbersrcCs4t|tstdt|ts$td||_||_dS)Nzx must be an integer.z6public_numbers must be an instance of DHPublicNumbers.)rrrr2_x_public_numbers)rr:r;r r r rfs  zDHPrivateNumbers.__init__cCs&t|tstS|j|jko$|j|jkSr)rr9r r<r=r!r r r r#rs    zDHPrivateNumbers.__eq__cCs ||k Srr r!r r r r${szDHPrivateNumbers.__ne__ DHPrivateKeyr%cCsddlm}||Sr)r rZload_dh_private_numbersr&r r r private_key~s zDHPrivateNumbers.private_keycCs|jSr)r=r(r r r r)r*zDHPrivateNumbers.cCs|jSr)r<r(r r r r)r*)N)r+r,r-rr2rr#r$r.r0r?r1r;r:r r r r r9es    r9c@sLeZdZejddddZejddeddd Zejedd d Z d S) rr>rcCsdS)z7 Generates and returns a DHPrivateKey. Nr r(r r r generate_private_keysz!DHParameters.generate_private_keyserialization.Encodingzserialization.ParameterFormatencodingrrcCsdS)z= Returns the parameters serialized as bytes. Nr rrDrr r r parameter_bytesszDHParameters.parameter_bytescCsdS)z/ Returns a DHParameterNumbers. Nr r(r r r r4szDHParameters.parameter_numbersN) r+r,r-abcabstractmethodrAbytesrFrr4r r r r rs ) metaclassc@s`eZdZejedddZejedddZ eje dddZ ejdd e d d d Z d S)r7r@cCsdSz6 The bit length of the prime modulus. Nr r(r r r rszDHPublicKey.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 r;szDHPublicKey.public_numbersrBzserialization.PublicFormatrCcCsdSz6 Returns the key serialized as bytes. Nr rEr r r public_bytesszDHPublicKey.public_bytesN)r+r,r-rGabstractpropertyrrrHrr'r2r;rIrMr r r r r7sr7c@seZdZejedddZejedddZ eje dddZ ejee dd d Z ejedd d Zejd dde dddZdS)r>r@cCsdSrKr r(r r r rszDHPrivateKey.key_sizecCsdS)zC The DHPublicKey associated with this private key. Nr r(r r r r8szDHPrivateKey.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 )rrOr r r exchangeszDHPrivateKey.exchangecCsdS)z- Returns a DHPrivateNumbers. Nr r(r r r private_numbersszDHPrivateKey.private_numbersrBzserialization.PrivateFormatz(serialization.KeySerializationEncryption)rDrencryption_algorithmrcCsdSrLr )rrDrrRr r r private_bytesszDHPrivateKey.private_bytesN)r+r,r-rGrNrrrHr7r8rr'rIrPr9rQrSr r r r r>s r>)N)rGr.Zcryptography.hazmat.primitivesrrrr0r objectrr2r9ABCMetarZDHParametersWithSerializationr7ZDHPublicKeyWithSerializationr>ZDHPrivateKeyWithSerializationr r r r s"  *$$,