diff options
-rw-r--r-- | gpgwin.cpp | 17 | ||||
-rw-r--r-- | gpgwin.h | 1 | ||||
-rw-r--r-- | release/keydb/pubring.gpg | bin | 1166 -> 2093 bytes |
3 files changed, 17 insertions, 1 deletions
@@ -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()); @@ -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 Binary files differindex acb4872..98ece8c 100644 --- a/release/keydb/pubring.gpg +++ b/release/keydb/pubring.gpg |