Генерация открытых / закрытых ключей в GnuPG из C/C++ и аргументов

Более новая версия GnuPG версии 2.1 имеет функцию "gpgme_op_createkey" в библиотеке GPGme. Старшее это:

gpgme_op_genkey(mContext, def.c_str(), NULL, NULL);

Который принимает данные в этом формате:

char *def = "<GnupgKeyParms format=\"internal\"> \n"
                " Key-Type: default \n"
                " Subkey-Type: default \n"
                " Name-Real: Joe Tester3 \n"
                " Name-Comment: with stupid passphrase \n"
                " Name-Email: joe3@foo.bar \n"
                " Expire-Date: 0 \n"
                " Passphrase: abc \n"
                " </GnupgKeyParms>";

Тем не менее, более новая версия GnuPG принимает меньше аргументов:

  gpgme_op_createkey(gpgme_ctx_t ctx, const char *userid, const char *algo, unsigned long reserved, unsigned long expires,
                        gpgme_key_t certkey, unsigned int flags);

Как я могу предоставить более новую функцию "gpgme_op_createkey", скажем, фразу-пароль? Подраздел типа?

Кроме того, если это ECC, как я могу выбрать, какую кривую использовать? Например "ed25519"?

1 ответ

Вы можете установить пароль только через механизм обратного вызова. Вы должны установить pinentry-mode на loopback, а затем установить обратный вызов парольной фразы.

Что касается типа подключа, это не выставлено. GnuPG будет принимать решение в зависимости от возможностей. Если вы хотите управлять им, сгенерируйте ключ только с возможностью "Сертифицировать", а затем используйте "gpgme_op_createsubkey", чтобы добавить подключи к экспликации.

Кривая может быть установлена ​​через имя алгоритма. Если вы хотите ECC, вы можете просто использовать "future-default" в качестве имени алгоритма. Это создаст ключ cv25519 / ed25519.

gpgme_op_createkey заканчивается использованием "gpg --quick-gen-key", так что вы можете прочитать man-страницу этой команды.

Обратите внимание, что для C++ вы также можете использовать привязки языка C++ GPGME, которые помогают в управлении памятью и более приятны для использования хакерами C++.

Другие вопросы по тегам