2016-01-21 8 views
1

Для указания preferenced порядок алгоритмов шифрования в GPG Я используюПроверьте конфигурационный файл был успешно установлен для GnuPG в GPGME

gpgme_set_engine_info(GPGME_PROTOCOL_OpenPGP, NULL, CONFIG_DIR); 

установить пользовательский файл конфигурации. Однако как я могу проверить, была ли эта операция успешной? home_dir установлено на заданное значение, но это также происходит, если я передаю директорию без файла конфигурации. Я не вижу никакой функции или вызова в документации, чтобы оценить, был ли загружен файл конфигурации или какой текущий порядок предпочтений.

ответ

1

Функция возвращает значение ошибки, если возникла проблема. Из documentation:

Эта функция возвращает код ошибки GPG_ERR_NO_ERROR в случае успеха, или код EROR на провал.

Вы наблюдали неожиданное поведение с установкой домашнего каталога без файла конфигурации:

home_dir устанавливается в заданное значение, но это также произойдет, если я прохожу каталог без файла конфигурации.

Ожидаемое поведение в GnuPG. Пустой файл конфигурации не является ошибкой, а просто означает отсутствие другой конфигурации, но значения по умолчанию на месте. Подобные вещи случаются, если вы передаете --homedir к GnuPG со ссылкой на пустую папку: GnuPG будет пытаться инициализировать эту папку в качестве домашней директории, но печать информационного сообщения:

$ LANG=C gpg --homedir /tmp 
gpg: keyring `/tmp/secring.gpg' created 
gpg: keyring `/tmp/pubring.gpg' created 
gpg: Go ahead and type your message ... 

Если вы хотите проверить, папка уже настроенный, я бы предложил проверить некоторые параметры, которые вы ожидали, или проверить файл конфигурации (или то, что вы ожидаете получить) самостоятельно.

+0

Как я могу проверить, что предпочтительный порядок шифров соответствует ожиданиям? Я могу получить доступ к 'home_dir',' protocol', 'file_name',' version' и 'req_version' в' gpgme_engine_info_t'. –

+1

GPGME напрямую не предоставляет интерфейс для конфигурации GnuPG. Вы можете использовать встроенную функцию ['gpgme_op_spawn'] (https://www.gnupg.org/documentation/manuals/gpgme/Running-other-Programs.html#Running-other-Programs) для запуска [' gpgconf'] (https://www.gnupg.org/documentation/manuals/gnupg/gpgconf.html) (или просто выполнить его так же, как и с другими системными процессами). –