File indexing completed on 2024-05-12 05:28:18

0001 // SPDX-FileCopyrightText: 2015 Sandro Knauß <knauss@kolabsys.com>
0002 // SPDX-FileCopyrightText: 2001,2002 the KPGP authors
0003 // SPDX-License-Identifier: GPL-2.0-or-later
0004 
0005 #pragma once
0006 
0007 #include <QByteArray>
0008 #include <QList>
0009 
0010 namespace MimeTreeParser
0011 {
0012 
0013 enum PGPBlockType {
0014     UnknownBlock = -1, // BEGIN PGP ???
0015     NoPgpBlock = 0,
0016     PgpMessageBlock = 1, // BEGIN PGP MESSAGE
0017     MultiPgpMessageBlock = 2, // BEGIN PGP MESSAGE, PART X[/Y]
0018     SignatureBlock = 3, // BEGIN PGP SIGNATURE
0019     ClearsignedBlock = 4, // BEGIN PGP SIGNED MESSAGE
0020     PublicKeyBlock = 5, // BEGIN PGP PUBLIC KEY BLOCK
0021     PrivateKeyBlock = 6 // BEGIN PGP PRIVATE KEY BLOCK (PGP 2.x: ...SECRET...)
0022 };
0023 
0024 class Block
0025 {
0026 public:
0027     Block(const QByteArray &m);
0028 
0029     Block(const QByteArray &m, PGPBlockType t);
0030 
0031     QByteArray text() const;
0032     PGPBlockType type() const;
0033     PGPBlockType determineType() const;
0034 
0035     QByteArray msg;
0036     PGPBlockType mType;
0037 };
0038 
0039 /** Parses the given message and splits it into OpenPGP blocks and
0040     Non-OpenPGP blocks.
0041 */
0042 QList<Block> prepareMessageForDecryption(const QByteArray &msg);
0043 
0044 } // namespace MimeTreeParser
0045 
0046 Q_DECLARE_TYPEINFO(MimeTreeParser::Block, Q_MOVABLE_TYPE);