def destroy_configuration(emitter: StdoutEmitter, character_config: CharacterConfiguration, force: bool = False) -> None: """Destroy a character configuration and report rhe result with an emitter.""" if not force: confirm_destroy_configuration(config=character_config) character_config.destroy() emitter.message(SUCCESSFUL_DESTRUCTION, color='green') character_config.log.debug(SUCCESSFUL_DESTRUCTION)
def unlock_nucypher_keyring(emitter: StdoutEmitter, password: str, character_configuration: CharacterConfiguration) -> bool: """Unlocks a nucypher keyring and attaches it to the supplied configuration if successful.""" emitter.message(DECRYPTING_CHARACTER_KEYRING.format(name=character_configuration.NAME.capitalize()), color='yellow') # precondition if character_configuration.dev_mode: return True # Dev accounts are always unlocked # unlock try: character_configuration.attach_keyring() character_configuration.keyring.unlock(password=password) # Takes ~3 seconds, ~1GB Ram except CryptoError: raise NucypherKeyring.AuthenticationFailed else: return True
def forget(emitter: StdoutEmitter, configuration: CharacterConfiguration) -> None: """Forget all known nodes via storage""" click.confirm(CONFIRM_FORGET_NODES, abort=True) configuration.forget_nodes() emitter.message(SUCCESSFUL_FORGET_NODES, color='red')