




import os
import random
import sys

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

def  SCREAMING_SNAKE_CASE							(       )      ->					None:
					print("Making key files...")
					make_key_files("rsa"		, 10_24)
					print("Key files generation successful.")

def  SCREAMING_SNAKE_CASE							(       __UpperCamelCase)      ->					tuple[tuple[int, int], tuple[int, int]]:
					print("Generating prime p...")
					a     =				rabinMiller.generate_large_prime(_lowerCamelCase)
					print("Generating prime q...")
					a     =				rabinMiller.generate_large_prime(_lowerCamelCase)
					a     =				p * q

					print("Generating e that is relatively prime to (p - 1) * (q - 1)...")
					while True:
										a     =				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...")
					a     =				cryptoMath.find_mod_inverse(_lowerCamelCase		, (p - 1) * (q - 1))

					a     =				(n, e)
					a     =				(n, d)
					return (public_key, private_key)

def  SCREAMING_SNAKE_CASE							(       __UpperCamelCase		, __UpperCamelCase)      ->					None:


					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()

					a     =				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()







lowercase__				:      str	   = "\n# Installazione di Transformers\n! pip install transformers datasets\n# Per installare dalla fonte invece dell'ultima versione rilasciata, commenta il comando sopra e\n# rimuovi la modalità commento al comando seguente.\n# ! pip install git+https://github.com/huggingface/transformers.git\n"

lowercase__				:      Any	   = [{"type": "code", "content": INSTALL_CONTENT}]
lowercase__				:      Any	   = {
    "{processor_class}": "FakeProcessorClass",
    "{model_class}": "FakeModelClass",
    "{object_class}": "FakeObjectClass",
}

