You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
3.0 KiB
137 lines
3.0 KiB
/*
|
|
kpgpblock.cpp
|
|
|
|
Copyright (C) 2001,2002 the KPGP authors
|
|
See file AUTHORS.kpgp for details
|
|
|
|
This file is part of KPGP, the KDE PGP/GnuPG support library.
|
|
|
|
KPGP 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.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software Foundation,
|
|
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
*/
|
|
|
|
#include "kpgpblock.h"
|
|
#include "kpgp.h"
|
|
|
|
#include <string.h>
|
|
|
|
namespace Kpgp {
|
|
|
|
Block::Block( const QCString& str )
|
|
: mText(str), mProcessedText(), mError(),
|
|
mSignatureUserId(), mSignatureKeyId(), mSignatureDate(),
|
|
mRequiredKey(), mEncryptedFor(),
|
|
mStatus(0), mHasBeenProcessed(false), mType(NoPgpBlock)
|
|
{
|
|
mEncryptedFor.setAutoDelete( true );
|
|
}
|
|
|
|
Block::~Block()
|
|
{
|
|
}
|
|
|
|
void
|
|
Block::reset()
|
|
{
|
|
mProcessedText = QCString();
|
|
mError = QCString();
|
|
mSignatureUserId = QString::null;
|
|
mSignatureKeyId = QCString();
|
|
mSignatureDate = QCString();
|
|
mRequiredKey = QCString();
|
|
mEncryptedFor.clear();
|
|
mStatus = 0;
|
|
mHasBeenProcessed = false;
|
|
}
|
|
|
|
void
|
|
Block::clear()
|
|
{
|
|
reset();
|
|
mText = QCString();
|
|
mType = NoPgpBlock;
|
|
}
|
|
|
|
BlockType
|
|
Block::determineType() const
|
|
{
|
|
if( !strncmp( mText.data(), "-----BEGIN PGP ", 15 ) )
|
|
{
|
|
if( !strncmp( mText.data() + 15, "SIGNED", 6 ) )
|
|
return ClearsignedBlock;
|
|
else if( !strncmp( mText.data() + 15, "SIGNATURE", 9 ) )
|
|
return SignatureBlock;
|
|
else if( !strncmp( mText.data() + 15, "PUBLIC", 6 ) )
|
|
return PublicKeyBlock;
|
|
else if( !strncmp( mText.data() + 15, "PRIVATE", 7 ) ||
|
|
!strncmp( mText.data() + 15, "SECRET", 6 ) )
|
|
return PrivateKeyBlock;
|
|
else if( !strncmp( mText.data() + 15, "MESSAGE", 7 ) )
|
|
{
|
|
if( !strncmp( mText.data() + 22, ", PART", 6 ) )
|
|
return MultiPgpMessageBlock;
|
|
else
|
|
return PgpMessageBlock;
|
|
}
|
|
else if( !strncmp( mText.data() + 15, "ARMORED FILE", 12 ) )
|
|
return PgpMessageBlock;
|
|
else
|
|
return UnknownBlock;
|
|
}
|
|
else
|
|
return NoPgpBlock;
|
|
}
|
|
|
|
bool
|
|
Block::decrypt()
|
|
{
|
|
Kpgp::Module *pgp = Kpgp::Module::getKpgp();
|
|
|
|
if( pgp == 0 )
|
|
return false;
|
|
|
|
return pgp->decrypt( *this );
|
|
}
|
|
|
|
bool
|
|
Block::verify()
|
|
{
|
|
Kpgp::Module *pgp = Kpgp::Module::getKpgp();
|
|
|
|
if( pgp == 0 )
|
|
return false;
|
|
|
|
return pgp->verify( *this );
|
|
}
|
|
|
|
Kpgp::Result
|
|
Block::clearsign( const QCString& keyId, const QCString& charset )
|
|
{
|
|
Kpgp::Module *pgp = Kpgp::Module::getKpgp();
|
|
|
|
if( pgp == 0 )
|
|
return Kpgp::Failure;
|
|
|
|
return pgp->clearsign( *this, keyId, charset );
|
|
}
|
|
|
|
Kpgp::Result
|
|
Block::encrypt( const QStringList& receivers, const QCString& keyId,
|
|
const bool sign, const QCString& charset )
|
|
{
|
|
Kpgp::Module *pgp = Kpgp::Module::getKpgp();
|
|
|
|
if( pgp == 0 )
|
|
return Kpgp::Failure;
|
|
|
|
return pgp->encrypt( *this, receivers, keyId, sign, charset );
|
|
}
|
|
|
|
} // namespace Kpgp
|