From 11d720efd34559125bbc01111a7b428c5a4ae83e Mon Sep 17 00:00:00 2001 From: ubbo Date: Sat, 19 Sep 2009 23:02:45 +0000 Subject: add method for private-key export to context git-svn-id: http://cpunk.de/svn/src/gpg4usb/trunk@222 34ebc366-c3a9-4b3c-9f84-69acf7962910 --- context.cpp | 27 +++++++++++++++++++++++++++ context.h | 5 +++++ 2 files changed, 32 insertions(+) diff --git a/context.cpp b/context.cpp index 947aacb..1d32000 100644 --- a/context.cpp +++ b/context.cpp @@ -429,6 +429,33 @@ void Context::checkErr(gpgme_error_t err) const } } + +/** export private key, TODO errohandling, e.g. like in seahorse (seahorse-gpg-op.c) **/ + +void Context::exportSecretKey(QString uid, QByteArray *outBuffer) +{ + QStringList arguments; + arguments << "--armor" << "--export-secret-key" << uid; + QByteArray *err = new QByteArray(); + executeGpgCommand(arguments, outBuffer, err); +} + +/** return type should be gpgme_error_t*/ +void Context::executeGpgCommand(QStringList arguments, QByteArray *stdOut, QByteArray *stdErr) +{ + gpgme_engine_info_t engine = gpgme_ctx_get_engine_info(mCtx); + + QStringList args; + args << "--homedir" << engine->home_dir << "--batch" << arguments; + + QProcess gpg; + gpg.start(engine->file_name, args); + gpg.waitForFinished(); + + *stdOut = gpg.readAllStandardOutput(); + *stdErr = gpg.readAllStandardError(); +} + } diff --git a/context.h b/context.h index 5826692..c3397e4 100644 --- a/context.h +++ b/context.h @@ -68,6 +68,7 @@ public: QByteArray *outBuffer); bool decrypt(const QByteArray &inBuffer, QByteArray *outBuffer); void clearCache(); + void exportSecretKey(QString uid, QByteArray *outBuffer); signals: void keyDBChanged(); @@ -88,6 +89,10 @@ private: gpgme_error_t passphrase(const char *uid_hint, const char *passphrase_info, int last_was_bad, int fd); + + void executeGpgCommand(QStringList arguments, + QByteArray *stdOut, + QByteArray *stdErr); }; } // namespace GpgME -- cgit v1.2.3