Я думаю, что вы используете не ту программу; pgpsm
используется для подписи, проверки, шифрования или дешифрования с использованием протокола S/MIME.
У меня нет pgp4win
под рукой, но согласно man-странице, это должно экспортировать ваш открытый и секретный ключ:
gpg -o XXXXXXX_private.p12 --export [key id] --export-format pkcs12 --cert
Информация о pkcs12
следующая,
pkcs12
только двоичные блоки; расширение файла по умолчанию .p12; подписанный ключ должен быть парным; и ввод должен соответствовать ровно одной клавише. В этом случае --cert требуется.
поэтому я включил параметр --cert
, не задумываясь об этом:
--cert
Этот параметр является длинным именем издателя X.509 или 32-разрядным или 64-разрядным идентификатором ключа, если ключ подписи доступен.
Я сделал еще несколько тестов (теперь с gpg4win), и частично должен был противоречить сам себе. Инструмент gpgsm
в gpg4win описывает себя как
gpgsm - это инструмент, аналогичный gpg, для предоставления услуг цифрового шифрования и подписи на сертификатах X.509 и протоколе CMS. Он в основном используется в качестве бэкэнда для обработки почты S/MIME.
что действительно звучит правильно.
Итак, ваша команда, опубликованная в вопросе, кажется совершенно разумной, у меня есть только две подсказки:
- Вы можете попробовать использовать бронированный выход ASCII через опцию
-a
- И есть опция, касающаяся кодировки экспортируемого ключа, которая часто является проблемой для (особенно старых) программ Windows:
--p12-charset name
gpgsm использует кодировку UTF-8 при кодировании парольных фраз для файлов PKCS # 12. Эта опция может использоваться для принудительного кодирования ключевой фразы с указанным именем кодировки. Это полезно, если приложение, используемое для импорта ключа, использует другую кодировку и, следовательно, не сможет импортировать файл, сгенерированный gpgsm.
Обычно используемые значения для имени - Latin1 и CP850. Обратите внимание, что сам gpgsm автоматически импортирует любой файл с парольной фразой, закодированной в наиболее часто используемые кодировки.