def create_credentials(): """Create ecdsa keypair for authenticating with server. Save these to a config file in the home directory.""" print("Config file is : {config_path}".format( config_path=CLIENT_CONFIG_PATH)) # Check for cluster name: config = ConfigParser.RawConfigParser() config.read(CLIENT_CONFIG_PATH) if not config.has_section("cluster"): config.add_section("cluster") if config.has_option('cluster', 'name'): cluster_name = config.get('cluster', 'name') else: while True: cluster_name = raw_input('Enter a name for this cluster: ') if not re.match(r'^[a-zA-Z0-9_-]+$', cluster_name): print( "Cluster name must be of the characters a-z, A-Z, 0-9, _ and -" ) continue break config.set('cluster', 'name', cluster_name) with open(CLIENT_CONFIG_PATH, "wb") as f: config.write(f) os.chmod(CLIENT_CONFIG_PATH, 0600) print( "Cluster name is: {cluster_name}\n".format(cluster_name=cluster_name)) # Check for existing client key: try: # Load existing config: apikey = APIKey.load() except BadConfigFileException: apikey = APIKey.new() apikey.save() print("Your public key is: {key}\n".format(key=apikey.get_pub_key())) # Check for existing server key: try: # Load existing config: apikey = APIKey.load(key_type='server') except BadConfigFileException: server_key = raw_input("Input the server's public key:") try: apikey = APIKey(server_key) except: print("Invalid server key, does not decode to a valid ecdsa key.") exit(1) # Verify server key: verify_code = raw_input("Input the server verify code: ") token, sig = base64.decodestring(verify_code).split("|") apikey.verify_message(token, sig) apikey.save(key_type='server') print("Server public key is: {key}".format(key=apikey.get_pub_key()))
def create_credentials(): """Create ecdsa keypair for authenticating with server. Save these to a config file in the home directory.""" print("Config file is : {config_path}".format(config_path=CLIENT_CONFIG_PATH)) # Check for cluster name: config = ConfigParser.RawConfigParser() config.read(CLIENT_CONFIG_PATH) if not config.has_section("cluster"): config.add_section("cluster") if config.has_option('cluster', 'name'): cluster_name = config.get('cluster', 'name') else: while True: cluster_name = raw_input('Enter a name for this cluster: ') if not re.match(r'^[a-zA-Z0-9_-]+$', cluster_name): print("Cluster name must be of the characters a-z, A-Z, 0-9, _ and -") continue break config.set('cluster', 'name', cluster_name) with open(CLIENT_CONFIG_PATH, "wb") as f: config.write(f) os.chmod(CLIENT_CONFIG_PATH, 0600) print("Cluster name is: {cluster_name}\n".format(cluster_name=cluster_name)) # Check for existing client key: try: # Load existing config: apikey = APIKey.load() except BadConfigFileException: apikey = APIKey.new() apikey.save() print("Your public key is: {key}\n".format(key=apikey.get_pub_key())) # Check for existing server key: try: # Load existing config: apikey = APIKey.load(key_type='server') except BadConfigFileException: server_key = raw_input("Input the server's public key:") try: apikey = APIKey(server_key) except: print("Invalid server key, does not decode to a valid ecdsa key.") exit(1) # Verify server key: verify_code = raw_input("Input the server verify code: ") token, sig = base64.decodestring(verify_code).split("|") apikey.verify_message(token, sig) apikey.save(key_type='server') print("Server public key is: {key}".format(key=apikey.get_pub_key()))