From 8cb430b0413887bc22e7c09c8aca0ff4d931bb70 Mon Sep 17 00:00:00 2001 From: nils Date: Thu, 11 Sep 2008 12:51:08 +0000 Subject: simple fix for 'NO DATA'-error git-svn-id: http://cpunk.de/svn/src/gpg4usb/trunk@157 34ebc366-c3a9-4b3c-9f84-69acf7962910 --- gpgwin.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'gpgwin.cpp') diff --git a/gpgwin.cpp b/gpgwin.cpp index 41df8f3..34baee8 100644 --- a/gpgwin.cpp +++ b/gpgwin.cpp @@ -398,13 +398,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()); -- cgit