3Tfg-nddlmZddlZddlZddlmZddlmZmZddl m Z ddl m Z Gddej ZeZGd d ej ZeZ d dd Zdd Z ddZddZddZd dZd!dZd"dZdZ d#dZGddZGddZy)$) annotationsN)gcd)_serializationhashes)AsymmetricPadding)utilsceZdZejddZeejd dZejd dZej d dZ ejd dZ ej d dZ y) RSAPrivateKeycy)z3 Decrypts the provided ciphertext. N)self ciphertextpaddings O/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/asymmetric/rsa.pydecryptzRSAPrivateKey.decryptcyz7 The bit length of the public modulus. Nr r s rkey_sizezRSAPrivateKey.key_sizerrcy)zD The RSAPublicKey associated with this private key. Nr rs r public_keyzRSAPrivateKey.public_keyrrcy)z! Signs the data. Nr )r datar algorithms rsignzRSAPrivateKey.sign$rrcy)z/ Returns an RSAPrivateNumbers. Nr rs rprivate_numberszRSAPrivateKey.private_numbers/rrcyz6 Returns the key serialized as bytes. Nr )r encodingformatencryption_algorithms r private_byteszRSAPrivateKey.private_bytes5rrN)rbytesrrreturnr&r'int)r' RSAPublicKey)rr&rrr8typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm]r'r&)r'RSAPrivateNumbers)r"_serialization.Encodingr#z_serialization.PrivateFormatr$z)_serialization.KeySerializationEncryptionr'r&) __name__ __module__ __qualname__abcabstractmethodrpropertyrrrrr%r rrr r s          # L          ) - H     rr ) metaclasscPeZdZejd dZeejd dZejd dZej d dZ ej d dZ ej ddZ ejddZ y)r*cy)z/ Encrypts the given plaintext. Nr )r plaintextrs rencryptzRSAPublicKey.encryptErrcyrr rs rrzRSAPublicKey.key_sizeKrrcy)z- Returns an RSAPublicNumbers Nr rs rpublic_numberszRSAPublicKey.public_numbersRrrcyr!r )r r"r#s r public_byteszRSAPublicKey.public_bytesXrrcy)z5 Verifies the signature of the data. Nr )r signaturerrrs rverifyzRSAPublicKey.verifybrrcy)z@ Recovers the original data from the signature. Nr )r r?rrs rrecover_data_from_signaturez(RSAPublicKey.recover_data_from_signaturenrrcy)z" Checks equality. Nr r others r__eq__zRSAPublicKey.__eq__yrrN)r7r&rrr'r&r(r'RSAPublicNumbers)r"r-r#z_serialization.PublicFormatr'r&) r?r&rr&rrrr+r'None)r?r&rrrz%typing.Optional[hashes.HashAlgorithm]r'r&rEobjectr'bool) r.r/r0r1r2r8r3rr;r=r@rBrFr rrr*r*Ds1         ) ,            #  L         # 9        rr*cJddlm}t|||j||SNr)backend),cryptography.hazmat.backends.openssl.backendrO_verify_rsa_parametersgenerate_rsa_private_key)public_exponentrrOossls rgenerate_private_keyrUs% M?H5  ( (( CCrcB|dvr td|dkr tdy)N)izopublic_exponent must be either 3 (for legacy compatibility) or 65537. Almost everyone should choose 65537 here!iz#key_size must be at least 512-bits. ValueError)rSrs rrQrQs6j( ?  #~>??rc|dkr td||k\r td||k\r td||k\r td||k\r td||k\r td||k\r td|dks||k\r td |d zd k(r td |d zd k(r td |d zd k(r td||z|k7r tdy)NrWzmodulus must be >= 3.zp must be < modulus.zq must be < modulus.zdmp1 must be < modulus.zdmq1 must be < modulus.ziqmp must be < modulus.z#private_exponent must be < modulus.z+public_exponent must be >= 3 and < modulus.rzpublic_exponent must be odd.zdmp1 must be odd.zdmq1 must be odd.zp*q must equal modulus.rX)pqprivate_exponentdmp1dmq1iqmprSmoduluss r_check_private_key_componentsrcs {011G|/00G|/00 w233 w233 w2337">??o8FGGa788 ax1},-- ax1},--1u233rct|dkr td|dks||k\r td|dzdk(r tdy)NrWzn must be >= 3.ze must be >= 3 and < n.r[rze must be odd.rX)ens r_check_public_key_componentsrgsJ1u*++1uQ2331uz)**rcxd\}}||}}|dkDr(t||\}}|||zz }||||f\}}}}|dkDr(||zS)zO Modular Multiplicative Inverse. Returns x such that: (x*e) mod m == 1 )r[rr)divmod) remx1x2abr]rxns r_modinvrqsbFB aqA a%a|1 !b&[!R| 1b" a% 6Mrct||S)zF Compute the CRT (q ** -1) % p value from RSA primes p and q. )rq)r\r]s r rsa_crt_iqmprss 1a=rc||dz zS)zg Compute the CRT private_exponent % (p - 1) value from the RSA private_exponent (d) and p. r[r )r^r\s r rsa_crt_dmp1ru q1u %%rc||dz zS)zg Compute the CRT private_exponent % (q - 1) value from the RSA private_exponent (d) and q. r[r )r^r]s r rsa_crt_dmq1rxrvric||zdz }|}|dzdk(r|dz}|dzdk(rd}d}|sh|tkr_|}||krGt|||}|dk7r*||dz k7r"t|d|dk(rt|dz|} d}n |dz}||krG|dz }|s |tkr_|s tdt | \} } | dk(sJt | | fd\} } | | fS)z Compute factors p and q from the private exponent d. We assume that n has no more than two factors. This function is adapted from code in PyCrypto. r[rFTz2Unable to compute factors p and q from exponent d.)reverse)_MAX_RECOVERY_ATTEMPTSpowrrYrisorted) rfredktottspottedrmkcandr\r]ros rrsa_recover_prime_factorsrs q519D A a%1* F a%1*G A!44 $hq!Q)r#rs r__repr__zRSAPublicNumbers.__repr__s5<rsA # AHI. ckk. b"/9 S[[9 x!- DDDD D@,4 ,4 ,4,4  ,4  ,4  ,4,4,4 ,4^+ &&* ****Zi i X!&!&r