将GPG与C一起使用?

将GPG与C一起使用?,c,gnupg,C,Gnupg,我正在用C编写一个通信程序,我正在寻找使用GnuPG加密的最佳方法。我已经通过mcrypt库使用了对称加密算法,但希望结合一些公钥功能,如果可能,最好使用GnuPG。是否有一个好的库可以实现这一点?尝试通过程序直接与GPG进行交互是否更好?如果您有任何见解,我将不胜感激,因为我希望保持此实现尽可能干净。谢谢。不幸的是,它的设计目的是交互使用,而不是作为API 您提到您正在考虑合并一些公钥功能。SSL和TLS是GPG的替代品,GPG的使用频率更高 如果公钥功能通常是您所寻求的,那么它就是一个用于基

我正在用C编写一个通信程序,我正在寻找使用GnuPG加密的最佳方法。我已经通过mcrypt库使用了对称加密算法,但希望结合一些公钥功能,如果可能,最好使用GnuPG。是否有一个好的库可以实现这一点?尝试通过程序直接与GPG进行交互是否更好?如果您有任何见解,我将不胜感激,因为我希望保持此实现尽可能干净。谢谢。

不幸的是,它的设计目的是交互使用,而不是作为API

您提到您正在考虑合并一些公钥功能。SSL和TLS是GPG的替代品,GPG的使用频率更高

如果公钥功能通常是您所寻求的,那么它就是一个用于基于网络的程序的API,它提供的正是您想要的。它享有大量支持,并提供SSL和TLS公钥加密功能

然而,如果您死心塌地地使用GPG,那么这个项目就是围绕GPG包装API的。我没有使用过它,也不能就它的使用提出建议,但我怀疑它可能有点强迫性。

GPGme确实是最好的,并且易于使用,并且有很好的文档记录(tests/gpg中的示例非常有用)

以下是John Smith的加密示例:

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);