



import os
import random
import sys

from . import cryptomath_module as cryptoMath  # noqa: N812
from . import rabin_miller as rabinMiller  # noqa: N812






def      lowerCAmelCase__		(   ):





				'''simple docstring'''

				print('''Making key files...''')
				make_key_files('''rsa'''	,1024)
				print('''Key files generation successful.''')






def      lowerCAmelCase__		(   lowerCamelCase_		:		int):





				'''simple docstring'''

				print('''Generating prime p...''')
				lowerCAmelCase__					:    Optional[int]												=					rabinMiller.generate_large_prime(lowerCamelCase_)
				print('''Generating prime q...''')
				lowerCAmelCase__					:    List[str]												=					rabinMiller.generate_large_prime(lowerCamelCase_)
				lowerCAmelCase__					:    str												=					p * q

				print('''Generating e that is relatively prime to (p - 1) * (q - 1)...''')
				while True:
								lowerCAmelCase__					:    str												=					random.randrange(2 ** (key_size - 1)	,2 ** (key_size))
								if cryptoMath.gcd(lowerCamelCase_	,(p - 1) * (q - 1)) == 1:
												break

				print('''Calculating d that is mod inverse of e...''')
				lowerCAmelCase__					:    Any												=					cryptoMath.find_mod_inverse(lowerCamelCase_	,(p - 1) * (q - 1))

				lowerCAmelCase__					:    Union[str, Any]												=					(n, e)
				lowerCAmelCase__					:    List[Any]												=					(n, d)
				return (public_key, private_key)






def      lowerCAmelCase__		(   lowerCamelCase_		:		str	,lowerCamelCase_		:		int):





				'''simple docstring'''

				if os.path.exists(f"""{name}_pubkey.txt""") or os.path.exists(f"""{name}_privkey.txt"""):
								print('''\nWARNING:''')
								print(
								    f"""\"{name}_pubkey.txt\" or \"{name}_privkey.txt\" already exists. \n"""
								    '''Use a different name or delete these files and re-run this program.''')
								sys.exit()

				lowerCAmelCase__					:    Tuple												=					generate_key(lowerCamelCase_)
				print(f"""\nWriting public key to file {name}_pubkey.txt...""")
				with open(f"""{name}_pubkey.txt"""	,'''w''') as out_file:
								out_file.write(f"""{key_size},{public_key[0]},{public_key[1]}""")

				print(f"""Writing private key to file {name}_privkey.txt...""")
				with open(f"""{name}_privkey.txt"""	,'''w''') as out_file:
								out_file.write(f"""{key_size},{private_key[0]},{private_key[1]}""")


if __name__ == "__main__":
							main()






__snake_case    :		Any  ='\n# Transformers installation\n! pip install transformers datasets\n# To install from source instead of the last release, comment the command above and uncomment the following one.\n# ! pip install git+https://github.com/huggingface/transformers.git\n'

__snake_case    :		Tuple  =[{'type': 'code', 'content': INSTALL_CONTENT}]
__snake_case    :		Tuple  ={
    '{processor_class}': 'FakeProcessorClass',
    '{model_class}': 'FakeModelClass',
    '{object_class}': 'FakeObjectClass',
}

