Использование вывода ключа gpg --list-packages для получения значений mpi для генерации s-выражений - PullRequest
4 голосов
/ 01 июня 2011

Я пытаюсь использовать сгенерированные gpg открытые ключи для шифрования с использованием libgcrypt. Я использовал команду list packages на ключе, чтобы получить содержимое ключа и преобразовал значения mpi в s-выражение. Поэтому, когда я пытаюсь закодировать мой сеансовый ключ своим открытым ключом, я получаю ошибку «Нечетные шестнадцатеричные числа в S-выражении»? Я думаю, что список пакетов, возможно, дает мне шестнадцатеричные числа без начального нуля? Если да, что мне нужно сделать, чтобы получить значения mpi, которые я могу использовать в libgcrypt?

Ответы [ 3 ]

0 голосов
/ 28 марта 2013

вы можете использовать это для экспорта секретного ключа:

gpg2 --homedir . --export-options export-sexp-format --export-secret-key $KEYID

и для экспорта открытого ключа:

gpg --homedir . --export | openpgp2ssh $KEYID | ssh-conv | sexp-conv --syntax=hex

вам могут понадобиться следующие пакеты для инструментов:

sudo apt-get install monkeysphere lsh-utils nettle-bin
0 голосов
/ 12 января 2015

Я смог получить все нужные мне значения mpi, используя pgpdump .Убедитесь, что вы используете -i, что говорит о необходимости печати всех целочисленных значений.Единственное, что любопытно, - то, что команда открытого ключа, которую отправила Аттилла, в начале имела два нуля, которых не было в выводе pgpdump.Я не уверен, нужны ли они еще.

0 голосов
/ 17 июня 2011

После проб и ошибок, а также советов из списков рассылки gpg и libgcrypt, команда list packages обрезает начальные нули по значению mpi, и в результате вам придется предварительно ожидать значения mpi с нулем (-ами), когда :

  • длина шестнадцатеричной строки - нечетное число (предварительно ожидаемое с одним нулем) или
  • mpi является отрицательным значением (предварительно с двумя нулями).

В качестве дальнейшего примечания нецелесообразно использовать списочные пакеты для получения значений mpi, поскольку он не дает надежных значений mpi, так как предполагается, что это команда отладки, которая может быть изменена. Лучший способ получить значения mpi для открытого и закрытого ключей, который я нашел, - это непосредственно проанализировать двоичный экспорт ключа с помощью команды export key с RFC4880 для его декодирования.

...