Esempio n. 1
0
    def save_to_file(self, file_name="password_file.pswd"):
        """Save the file to disk after encrypting it.

        Args:
            file_name (str): path to created file
        """
        with open(file_name, "wb") as file:
            pickle.dump(self, file)

        encrypt_file(file_name, load_key(self.master_key))
def get_secrets(options):
    ''' Retrieves the secrets from the user specified file '''

    secretsFile = options.secretsFile
    tempFile = tempfile.NamedTemporaryFile(delete=False)
    if options.secretsEncrypted.lower() == 'true':
        decrypt(load_key(options.keyFile), secretsFile, tempFile.name)
        secretsFile = tempFile.name

    secrets = read_json_file(secretsFile)
    tempFile.close()

    return secrets
Esempio n. 3
0
def open_password_file(password_file: str = None,
                       key_path: str = None) -> None:
    """Open a Password File if the right key file is given.

    Args:
        password_file (str): Path to Password File
        key_path (str): Path to Key file

    """
    if password_file is None:
        password_file = input("Path to password file: ")

    if key_path is None:
        key_path = input("Path to key file: ")

    decrypt_file(password_file, load_key(key_path))

    with open(password_file, "rb") as file:
        password_object = pickle.load(file)
    password_object.master_key = key_path

    password_object.menu()
    def initiate(self):
        # Load first shard from disk
        shard_0 = load_key("../keys/shard_0.pkl")
        key_shard_list = [shard_0]

        initiation_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        initiation_socket.bind(("0.0.0.0", self.initiation_port))
        initiation_socket.listen(5)

        print "\nServer awaiting key initialization..."
        connection, address = initiation_socket.accept()

        # Receiving twice, as key shards are larger than 8k causing serialization(pickling) issues over the network
        key_shard_1 = receive_object(connection)
        key_shard_list.append(key_shard_1.key_shard)
        key_shard_2 = receive_object(connection)
        key_shard_list.append(key_shard_2.key_shard)

        initiation_socket.close()

        # Generate Paillier keys
        secret = recover_secret(key_shard_list)
        self.paillier_keys = recover_paillier_keys_from_secret(secret)
def run_setup(options, secrets, package_version):
    ''' Runs a sequence of tsm commands to perform setup '''

    tsm_path = os.path.join(options.installDir, 'packages',
                            'bin.' + str(package_version), 'tsm.cmd')
    tabcmd_path = os.path.join(options.installDir, 'packages',
                               'bin.' + str(package_version), 'tabcmd.exe')

    port = options.controllerPort

    # activate a trial and/or any license keys specified in the secrets file
    product_keys = secrets.get('product_keys')
    if (isinstance(product_keys, list)):
        if ('trial' in product_keys):
            run_tsm_command(tsm_path, secrets,
                            ['licenses', 'activate', '--trial'], port)
            print('Activated trial')
        for productKey in product_keys:
            if (len(productKey) > 0 and productKey != 'trial'):
                run_tsm_command(
                    tsm_path, secrets,
                    ['licenses', 'activate', '--license-key', productKey],
                    port)
                print('Activated license key: ' + productKey)

    run_tsm_command(tsm_path, secrets,
                    ['register', '--file', options.registrationFile], port)
    if options.saveNodeConfiguration == 'yes':
        run_tsm_command(tsm_path, secrets, [
            'topology', 'nodes', 'get-bootstrap-file', '--file',
            options.nodeConfigurationDirectory
        ], port)
        print('Node configuration file saved.')

    configFile = options.configFile
    tempFile = tempfile.NamedTemporaryFile(delete=False)
    if options.configEncrypted.lower() == 'true':
        decrypt(load_key(options.keyFile), options.configFile, tempFile.name)
        configFile = tempFile.name

    run_tsm_command(tsm_path, secrets,
                    ['settings', 'import', '--config-only', '-f', configFile],
                    port)
    print('Configuration settings imported')

    # set config keys
    if 'configKeys' in configFile:
        config = read_json_file(configFile)
        for key, value in config:
            run_tsm_command(tsm_path, secrets,
                            ['configuration', 'set', '-k', key, '-v', value],
                            port)
    print('config keys set')

    run_tsm_command(
        tsm_path, secrets,
        ['pending-changes', 'apply', '--ignore-prompt', '--ignore-warnings'],
        port)
    print('Configuration applied')
    run_tsm_command(tsm_path, secrets,
                    ['initialize', '--request-timeout', '7200'], port)
    print('Initialization completed')
    get_nodes_and_apply_topology(configFile, tsm_path, secrets, port)
    run_tsm_command(
        tsm_path, secrets,
        ['pending-changes', 'apply', '--ignore-prompt', '--ignore-warnings'],
        port)
    print('Topology applied')
    if options.start == 'yes':
        run_tsm_command(tsm_path, secrets,
                        ['start', '--request-timeout', '1800'], port)
        print('Server is installed and running')
        run_tabcmd_command(tabcmd_path, [
            'initialuser', '--server',
            'localhost:' + str(getGatewayPort(configFile)), '--username',
            secrets['content_admin_user'], '--password',
            secrets['content_admin_pass']
        ])
        print('Initial admin created')
    print('Installation complete')

    if options.configEncrypted.lower() == 'true':
        tempFile.close()
Esempio n. 6
0
from communication_objects import KeyShard
from crypto import load_key
import socket
from network_interface import send_object
import time

if __name__ == "__main__":
    # Fetch key shards(shard 1 & shard 2)
    shard_1 = load_key("../keys/shard_1.pkl")
    shard_2 = load_key("../keys/shard_2.pkl")

    # Create objects to be sent to server
    key_shard_1 = KeyShard(shard_1)
    key_shard_2 = KeyShard(shard_2)

    # Create socket
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect(("127.0.0.1", 5001))

    # Send it on port 5001(server initiation port)
    send_object(sock, key_shard_1)
    # FIX: For invalid and under constructed pickle
    # Time delay allows enough time to pickle the new object cleanly
    time.sleep(1)
    send_object(sock, key_shard_2)

    sock.close()