aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--context.cpp27
-rw-r--r--context.h5
2 files changed, 32 insertions, 0 deletions
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