diff options
Diffstat (limited to 'context.cpp')
-rw-r--r-- | context.cpp | 27 |
1 files changed, 27 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(); +} + } |