Генерация открытых / закрытых ключей в 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: [email protected] \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 ++.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]