PxCrypt v0.2.2
Encrypt data within an image
Loading...
Searching...
No Matches
multipart.h
1#ifndef MULTIPART_H
2#define MULTIPART_H
3
4// Qt Includes
5#include <QByteArray>
6#include <QString>
7
8// Project Includes
9#include "art_io/artwork.h"
10
11namespace PxCryptPrivate
12{
13
14class MultiPartWork : public Artwork<MultiPartWork, 2>
15{
16//-Inner Class------------------------------------------------------------------------------------------------------------
17public:
18 class Measure;
19
20//-Class Types------------------------------------------------------------------------------------------------------------
21public:
22 using checksum_t = quint32;
23 using tag_length_t = quint16;
24 using payload_length_t = quint32;
25 using part_idx_t = quint16;
26
27//-Instance Variables------------------------------------------------------------------------------------------------------
28private:
29 QByteArray mTag;
30 checksum_t mPartChecksum;
31 checksum_t mCompleteCheckum;
32 part_idx_t mPartIdx;
33 part_idx_t mPartCount;
34 QByteArray mPartPayload;
35
36//-Constructor---------------------------------------------------------------------------------------------------------
37public:
38 MultiPartWork();
39 MultiPartWork(const QByteArray& tag, const QByteArray& partPayload, checksum_t completeChecksum, part_idx_t partIdx, part_idx_t partCount);
40
41//-Class Functions----------------------------------------------------------------------------------------------
42private:
43 static quint64 renditionSize(tag_length_t tagSize, payload_length_t payloadSize);
44
45//-Instance Functions----------------------------------------------------------------------------------------------
46private:
47 quint64 renditionSize() const override;
48 ArtworkError renditionRead(QDataStream& stream) override;
49 ArtworkError renditionWrite(QDataStream& stream) const override;
50
51public:
52 QByteArray tag() const;
53 checksum_t partChecksum() const;
54 checksum_t completeChecksum() const;
55 part_idx_t partIdx() const;
56 part_idx_t partCount() const;
57 QByteArray partPayload() const;
58};
59
60class MultiPartWork::Measure : public IMeasure
61{
62//-Instance Variables------------------------------------------------------------------------------------------------------
63private:
64 quint64 mSize;
65
66//-Constructor---------------------------------------------------------------------------------------------------------
67public:
68 Measure(); // Useful for measuring bare minimum consumption
69 Measure(tag_length_t tagSize, payload_length_t payloadSize);
70
71//-Instance Functions----------------------------------------------------------------------------------------------
72private:
73 quint64 renditionSize() const override;
74};
75
76}
77
78#endif // MULTIPART_H