Использование GPG с C? - PullRequest
       24

Использование GPG с C?

5 голосов
/ 05 января 2012

Я пишу коммуникационную программу на C и ищу лучший способ использовать шифрование GnuPG. Я уже использую алгоритмы симметричного шифрования через библиотеку mcrypt, но хочу включить некоторые возможности с открытым ключом, предпочтительно используя GnuPG, если это возможно. Есть ли хорошая библиотека для этого? Было бы лучше попытаться взаимодействовать с самой GPG непосредственно через программу для достижения этой цели? Буду признателен за любую информацию, так как я хотел бы сохранить эту реализацию как можно более чистой. Спасибо.

Ответы [ 2 ]

5 голосов
/ 13 июня 2012

К сожалению, GnuPG предназначен для интерактивного использования, а не в качестве API.

Вы упоминаете, что хотите включить некоторые возможности открытых ключей. SSL и TLS являются альтернативами GPG, которые встречаются гораздо чаще.

Если в целом вам нужны возможности открытого ключа, GnuTLS - это API для использования в сетевых программах, который обеспечивает именно то, что вам нужно. Он пользуется большой поддержкой и предоставляет возможности шифрования с открытым ключом SSL и TLS.

Однако, если вы не можете использовать GPG, GPGME - это проект, который существует, чтобы обернуть API вокруг GPG. Я не использовал его и не могу дать совет по его использованию, но подозреваю, что это может быть несколько вынужденным.

4 голосов
/ 29 июля 2015

GPGme - это действительно официальный API для GPG , он прост в использовании и хорошо документирован (примеры в tests / gpg очень полезны)Смит:

gpgme_data_t clear_text, encrypted_text;
gpgme_key_t recipients[2] = {NULL, NULL}; 
       /* The array must be NULL-terminated */
...
error = gpgme_op_keylist_start(context, "John Smith", 1);
error = gpgme_op_keylist_next(context, &recipients[0]);
...
error = gpgme_op_encrypt(context, recipients, 
               GPGME_ENCRYPT_ALWAYS_TRUST, 
                           clear_text, encrypted_text);
...