def encrypt_file(gpg: gnupg.GPG,
                 targer_folder: str):
    configuration_kwargs = utils.get_configuratation(
        path=os.path.join(
            targer_folder,
            'configuration'
        )
    )
    value = _get_decryption(configuration_kwargs=configuration_kwargs)

    gpg.import_keys(value)
    keys = gpg.list_keys()

    gpg.trust_keys(
        keys.fingerprints,
        'TRUST_ULTIMATE'
    )

    decrypted_filepaths = utils.get_files(
        path=os.path.join(
            targer_folder,
            'decrypted_files'
        )
    )

    encrypted_path = os.path.join(
        targer_folder,
        'encrypted_files'
    )

    for decryped_file in decrypted_filepaths:
        base_name = __set_file_name(path=decryped_file)

        logger.info(f'encrypting file {base_name}')

        output_file = os.path.join(
            encrypted_path,
            base_name
        )

        with open(decryped_file, 'rb') as connection:
            status = gpg.encrypt_file(
                file=connection,
                recipients=keys.fingerprints,
                output=output_file,
            )

            logger.info(f'encrypting done')

        if not status.ok:
            logger.info(f'{status.stderr}')
        else:
            logger.info(f'Status [{status.status}]')
Exemple #2
0
def key_edit(key, password, path_to_user_folder):

	try:
		gpg = GPG()
		gpg.delete_keys(key, True, passphrase=password)
		gpg.delete_keys(key)
		key_data = open(path_to_user_folder+'/main/gpg_private_key.asc').read()
		new_key = gpg.import_keys(key_data)
		new_key = new_key.results[0]['fingerprint']
		gpg.trust_keys(new_key, "TRUST_ULTIMATE")
		system('echo RELOADAGENT | gpg-connect-agent')
		copy2(path_to_user_folder+'/main/gpg_private_key.asc', path_to_user_folder+'/user_data/gpg_private_key.asc')
		return new_key

	except:
		msg = bot.send_message(message.chat.id, 'Произошла ошибка.', reply_markup = types.ReplyKeyboardRemove(selective=False))
		del_mess(msg, bot, 6)
		return key
Exemple #3
0
def _get_decryption(gpg: gnupg.GPG, configuration_kwargs: Dict) -> gnupg.GPG:
    ssm_name = '{environment}.{name}-{company_name}'.format(
        environment=settings.ENVIRONMENT,
        name=configuration_kwargs.get('secret_name'),
        company_name=configuration_kwargs.get('company_name'))
    secret_key = []
    for key in ['public', 'private']:
        logger.info(f'Handling {key} for decryption')

        ssm_name_extended = f'{ssm_name}-{key}'
        value = parameter_store.get_keys(profile_name='ssm',
                                         name=ssm_name_extended)

        secret_key.append(value)

    secret_keys = ''.join(secret_key)
    gpg.import_keys(secret_keys)
    keys = gpg.list_keys(True)

    gpg.trust_keys(keys.fingerprints, 'TRUST_ULTIMATE')

    return gpg