Diffstat (limited to 'pwmanager/pwmanager/binentrygen.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | pwmanager/pwmanager/binentrygen.cpp | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/pwmanager/pwmanager/binentrygen.cpp b/pwmanager/pwmanager/binentrygen.cpp new file mode 100644 index 0000000..7d5ae45 --- a/dev/null +++ b/pwmanager/pwmanager/binentrygen.cpp @@ -0,0 +1,71 @@ +/*************************************************************************** + * * + * copyright (C) 2004 by Michael Buesch * + * email: mbuesch@freenet.de * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License version 2 * + * as published by the Free Software Foundation. * + * * + ***************************************************************************/ + +/*************************************************************************** + * copyright (C) 2004 by Ulf Schenk + * This file is originaly based on version 1.0.1 of pwmanager + * and was modified to run on embedded devices that run microkde + * + * $Id$ + **************************************************************************/ + + +#include "binentrygen.h" +#include "base64.h" +#include "pwmexception.h" + + +void BinEntryGen::encode(const QByteArray &data, + PwMDataItem *ret, + DataType type) +{ + ret->clear(); + ret->name = tostr(static_cast<int>(type)); + ret->binary = true; + if (data.size() == 0) + return; + Base64 b64; + string d(data.data(), data.size()); + ret->pw = b64.encode(d); +} + +void BinEntryGen::decode(const PwMDataItem &data, + QByteArray *ret, + DataType *type) +{ + BUG_ON(!data.binary); + int t = strtol(data.name.c_str(), 0, 10); + *type = static_cast<DataType>(t); + switch (*type) { + case None: + case KWalletMap: + case KWalletStream: + break; + default: + *type = None; + } + if (data.pw == "") { + ret->fill(0); + ret->resize(0); + return; + } + Base64 b64; + string d(b64.decode(data.pw)); + ret->duplicate(d.c_str(), d.length()); +} + +BinEntryGen::DataType BinEntryGen::binType(const PwMDataItem &data) +{ + if (!data.binary) + return None; + int type = strtol(data.name.c_str(), 0, 10); + return (static_cast<DataType>(type)); +} |