aboutsummaryrefslogtreecommitdiffstats
path: root/kgpg/transactions/kgpgexport.h
diff options
context:
space:
mode:
Diffstat (limited to 'kgpg/transactions/kgpgexport.h')
-rw-r--r--kgpg/transactions/kgpgexport.h147
1 files changed, 147 insertions, 0 deletions
diff --git a/kgpg/transactions/kgpgexport.h b/kgpg/transactions/kgpgexport.h
new file mode 100644
index 0000000..63aeaac
--- /dev/null
+++ b/kgpg/transactions/kgpgexport.h
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2009 Rolf Eike Beer <[email protected]>
+ */
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KGPGEXPORT_H
+#define KGPGEXPORT_H
+
+#include <QObject>
+#include <QStringList>
+
+#include <QUrl>
+
+#include "kgpgtransaction.h"
+
+class QProcess;
+
+/**
+ * @brief export one or more keys from keyring
+ *
+ * The exported keys can be written to a file or sent to standard input of another
+ * QProcess.
+ */
+class KGpgExport: public KGpgTransaction {
+ Q_OBJECT
+
+ KGpgExport(); // = delete C++0x
+ Q_DISABLE_COPY(KGpgExport)
+public:
+ /**
+ * @brief export keys to QProcess
+ * @param parent parent object
+ * @param ids ids to export
+ * @param outp process to write into
+ * @param options additional options to pass to GnuPG (e.g. export ascii armored)
+ * @param secret if secret key exporting is allowed
+ */
+ KGpgExport(QObject *parent, const QStringList &ids, QProcess *outp, const QStringList &options = QStringList(), const bool secret = false);
+
+ /**
+ * @brief export keys to KGpgTransaction
+ * @param parent parent object
+ * @param ids ids to export
+ * @param outt transaction to write into
+ * @param options additional options to pass to GnuPG (e.g. export ascii armored)
+ * @param secret if secret key exporting is allowed
+ */
+ KGpgExport(QObject *parent, const QStringList &ids, KGpgTransaction *outt, const QStringList &options = QStringList(), const bool secret = false);
+
+ /**
+ * @brief export keys to file
+ * @param parent parent object
+ * @param ids ids to export
+ * @param file filename to write into
+ * @param options additional options to pass to GnuPG (e.g. export ascii armored)
+ * @param secret if secret key exporting is allowed
+ */
+ KGpgExport(QObject *parent, const QStringList &ids, const QString &file, const QStringList &options = QStringList(), const bool secret = false);
+
+ /**
+ * @brief export keys to standard output
+ * @param parent parent object
+ * @param ids ids to export
+ * @param options additional options to pass to GnuPG (e.g. export ascii armored)
+ * @param secret if secret key exporting is allowed
+ *
+ * Only ascii-armored export is supported in standard output mode. If it is not
+ * already set in the given option it will be added automatically.
+ */
+ KGpgExport(QObject *parent, const QStringList &ids, const QStringList &options = QStringList(), const bool secret = false);
+
+ /**
+ * @brief destructor
+ */
+ virtual ~KGpgExport();
+
+ /**
+ * @brief set key id to export
+ * @param id key fingerprint
+ */
+ void setKeyId(const QString &id);
+ /**
+ * @brief set key ids to export
+ * @param ids key fingerprints
+ */
+ void setKeyIds(const QStringList &ids);
+ /**
+ * @brief return the key ids to export
+ * @return list of key fingerprints
+ */
+ const QStringList &getKeyIds() const;
+ /**
+ * @brief set the process the output is sent to
+ * @param outp process to send output to
+ */
+ void setOutputProcess(QProcess *outp);
+ /**
+ * @brief set the transaction the output is sent to
+ * @param outd transaction to send output to
+ */
+ void setOutputTransaction(KGpgTransaction *outt);
+ /**
+ * @brief set filename to send output to
+ * @param filename file to send output to
+ */
+ void setOutputFile(const QString &filename);
+ /**
+ * @brief return the output filename currently set
+ * @return filename key will get written to
+ */
+ const QString &getOutputFile() const;
+ /**
+ * @brief return the data read from standard output
+ * @return standard output data
+ */
+ const QByteArray &getOutputData() const;
+
+protected:
+ virtual bool preStart();
+ virtual bool nextLine(const QString &line);
+
+private:
+ QStringList m_keyids;
+ QProcess *m_outp;
+ QString m_outf;
+ QByteArray m_data;
+
+ enum OutputMode {
+ ModeFile = 0,
+ ModeProcess = 1,
+ ModeStdout = 2,
+ ModeTransaction = 3
+ };
+ enum OutputMode m_outputmode;
+
+ void procSetup(const QStringList &options, const bool secret);
+};
+
+#endif // KGPGEXPORT_H