





'''simple docstring'''


import os
import random
import sys

from . import cryptomath_module as cryptoMath  # noqa: N812
from . import rabin_miller as rabinMiller  # noqa: N812
def 							UpperCAmelCase_  (						):
   print("Making key files..." )
   make_key_files("rsa"	,10_24 )
   print("Key files generation successful." )
def 							UpperCAmelCase_  (						__lowerCamelCase					:					int ):
   print("Generating prime p..." )
   lowercase_			:Any    			= rabinMiller.generate_large_prime(__lowerCamelCase )
   print("Generating prime q..." )
   lowercase_			:Tuple    			= rabinMiller.generate_large_prime(__lowerCamelCase )
   lowercase_			:int    			= p * q

   print("Generating e that is relatively prime to (p - 1) * (q - 1)..." )
   while True:
      lowercase_			:Optional[Any]    			= 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..." )
   lowercase_			:Optional[int]    			= cryptoMath.find_mod_inverse(__lowerCamelCase	,(p - 1) * (q - 1) )

   lowercase_			:Optional[Any]    			= (n, e)
   lowercase_			:Optional[int]    			= (n, d)
   return (public_key, private_key)
def 							UpperCAmelCase_  (						__lowerCamelCase					:					str	,__lowerCamelCase					:					int ):
   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()

   lowercase_			,							lowercase_			:int    			= 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()









'''simple docstring'''


from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


lowerCAmelCase					:     Optional[Any]												={
    '''configuration_x_clip''': [
        '''XCLIP_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''XCLIPConfig''',
        '''XCLIPTextConfig''',
        '''XCLIPVisionConfig''',
    ],
    '''processing_x_clip''': ['''XCLIPProcessor'''],
}

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 lowerCAmelCase					:     Tuple												=[
     '''XCLIP_PRETRAINED_MODEL_ARCHIVE_LIST''',
     '''XCLIPModel''',
     '''XCLIPPreTrainedModel''',
     '''XCLIPTextModel''',
     '''XCLIPVisionModel''',
 ]

if TYPE_CHECKING:
 from .configuration_x_clip import (
     XCLIP_PRETRAINED_CONFIG_ARCHIVE_MAP,
     XCLIPConfig,
     XCLIPTextConfig,
     XCLIPVisionConfig,
 )
 from .processing_x_clip import XCLIPProcessor

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_x_clip import (
      XCLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
      XCLIPModel,
      XCLIPPreTrainedModel,
      XCLIPTextModel,
      XCLIPVisionModel,
  )

else:
 import sys

 lowerCAmelCase					:     str												=_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)


