





import os
import random
import sys

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





def     _UpperCamelCase     ():






       """simple docstring"""





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





def     _UpperCamelCase     (a__   :Tuple       ):






       """simple docstring"""





       print("""Generating prime p..."""       )
       UpperCamelCase__				     =			rabinMiller.generate_large_prime(__lowerCAmelCase       )
       print("""Generating prime q..."""       )
       UpperCamelCase__				     =			rabinMiller.generate_large_prime(__lowerCAmelCase       )
       UpperCamelCase__				     =			p * q

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

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





def     _UpperCamelCase     (a__   :Tuple   ,			a__   :List[str]       ):






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

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











from argparse import ArgumentParser

from .env import EnvironmentCommand





def     _UpperCamelCase     ():






							"""simple docstring"""





							UpperCamelCase__				     =			ArgumentParser("""Diffusers CLI tool"""   ,			usage="""diffusers-cli <command> [<args>]"""       )
							UpperCamelCase__				     =			parser.add_subparsers(help="""diffusers-cli command helpers"""       )

							# Register commands
							EnvironmentCommand.register_subcommand(a__       )

							# Let's go
							UpperCamelCase__				     =			parser.parse_args()

							if not hasattr(a__   ,			"""func"""       ):
														parser.print_help()
														exit(1       )

							# Run
							UpperCamelCase__				     =			args.func(a__       )
							service.run()


if __name__ == "__main__":
					main()




