2016-01-01 2 views
1

Je prévois d'écrire une petite application avec l'idée de base que les utilisateurs sont capables de partager des informations cryptées entre eux. Oui, similaire à PGP. Par conséquent, je voudrais réutiliser les fonctionnalités existantes comme dans GnuPG.Comment utiliser GnuPG dans une application C++ (pas comme un outil de ligne de commande)?

Le scénario est le suivant (très court): Alice écrit une liste de choses à faire. L'application crypte cette liste avec une clé symétrique, la clé symétrique avec la clé publique d'Alice et enregistre la liste sur le serveur d'application. Maintenant Alice veut partager cette information avec Bob. Par conséquent, Alice utilise l'application pour ajouter Bob aux lecteurs de la liste de choses à faire. L'application chiffre également la clé symétrique de la liste de tâches avec la clé publique de Bob et met à jour les données du serveur. Comme déjà dit, je sais que c'est très similaire à PGP et je voudrais utiliser GnuPG dans mon application C++ (comme on le ferait avec OpenSSL, comme on peut le voir here). Mais GnuPG est documented comme un outil de ligne de commande. Existe-t-il une documentation sur l'API pour savoir comment utiliser cette fonctionnalité dans une application C++? Est-ce seulement possible?

+0

L'utilisation de [gpgme] (https://www.gnupg.org/documentation/manuals/gpgme/) serait-elle une option? – fvu

+0

Je vais examiner cela. Je vous remercie. –

Répondre

2

Si vous voulez utiliser une librairie pour interfacer GnuPG, GPGME est le chemin à parcourir sans les soucis de l'analyse de la sortie de GnuPG. Il y a plusieurs language bindings pour l'interfaçage. Si GPGME ne correspond pas aux opérations requises ou si vous préférez ne pas utiliser la bibliothèque (ce qui devrait être recommandé, cependant), utilisez les options --with-colons et --batch pour obtenir une sortie beaucoup plus facile à analyser. Avec gpg-agent, vous pouvez également demander à votre application de saisir la phrase secrète de l'utilisateur via des implémentations déjà existantes, en activant également les invites GUI pour la phrase secrète.