aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gpgwin.cpp17
-rw-r--r--gpgwin.h1
-rw-r--r--release/keydb/pubring.gpgbin1166 -> 2093 bytes
3 files changed, 17 insertions, 1 deletions
diff --git a/gpgwin.cpp b/gpgwin.cpp
index f7b83f1..0126fe5 100644
--- a/gpgwin.cpp
+++ b/gpgwin.cpp
@@ -384,13 +384,28 @@ void GpgWin::encrypt()
void GpgWin::decrypt()
{
QByteArray *tmp = new QByteArray();
- myCtx->decrypt(edit->toPlainText().toAscii(), tmp);
+ QByteArray text = edit->toPlainText().toAscii();
+ preventNoDataErr(&text);
+ myCtx->decrypt(text, tmp);
if (!tmp->isEmpty()) {
QString *tmp2 = new QString(*tmp);
edit->setPlainText(*tmp2);
}
}
+/**
+ * if there is no '\n' before the PGP-Begin-Block, but for example a whitespace,
+ * GPGME doesn't recognise the Message as encrypted. This function adds '\n'
+ * before the PGP-Begin-Block, if missing.
+ */
+void GpgWin::preventNoDataErr(QByteArray *in)
+{
+ int block_start = in->indexOf("-----BEGIN PGP MESSAGE-----");
+ if(block_start > 0 && in->at(block_start - 1) != '\n') {
+ in->insert(block_start, '\n');
+ }
+}
+
void GpgWin::importKeyFromEdit()
{
myCtx->importKey(edit->toPlainText().toAscii());
diff --git a/gpgwin.h b/gpgwin.h
index ea5df52..2238cfd 100644
--- a/gpgwin.h
+++ b/gpgwin.h
@@ -68,6 +68,7 @@ private:
void setCurrentFile(const QString &fileName);
bool maybeSave();
QString strippedName(const QString &fullFileName);
+ void preventNoDataErr(QByteArray *in);
QPlainTextEdit *edit;
QMenu *fileMenu;
diff --git a/release/keydb/pubring.gpg b/release/keydb/pubring.gpg
index acb4872..98ece8c 100644
--- a/release/keydb/pubring.gpg
+++ b/release/keydb/pubring.gpg
Binary files differ