aboutsummaryrefslogtreecommitdiffstats
path: root/src/m_paper_key/parse.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/m_paper_key/parse.cpp')
-rw-r--r--src/m_paper_key/parse.cpp137
1 files changed, 0 insertions, 137 deletions
diff --git a/src/m_paper_key/parse.cpp b/src/m_paper_key/parse.cpp
index 32cb704..f3c924e 100644
--- a/src/m_paper_key/parse.cpp
+++ b/src/m_paper_key/parse.cpp
@@ -19,7 +19,6 @@
#include "parse.h"
#include <qcryptographichash.h>
-#include <qdatastream.h>
#include <cstdio>
#include <cstdlib>
@@ -32,142 +31,6 @@
extern int verbose;
extern int ignore_crc_error;
-struct packet *parse2(QDataStream &stream, unsigned char want,
- unsigned char stop) {
- int byte;
- struct packet *packet = NULL;
-
- while (!stream.atEnd()) {
- stream >> byte;
-
- unsigned char type;
- unsigned int length;
-
- if ((byte & 0x80) != 0) {
- int tmp;
-
- type = byte & 0x3F;
-
- /* Old-style packet type */
- if (!(byte & 0x40)) type >>= 2;
-
- if (type == stop) {
- stream << byte;
- break;
- }
-
- if (byte & 0x40) {
- /* New-style packets */
- stream >> byte;
- if (byte == EOF) goto fail;
-
- if (byte == 255) {
- /* 4-byte length */
- stream >> tmp;
- if (tmp == EOF) goto fail;
- length = tmp << 24;
- stream >> tmp;
- if (tmp == EOF) goto fail;
- length |= tmp << 16;
- stream >> tmp;
- if (tmp == EOF) goto fail;
- length |= tmp << 8;
- stream >> tmp;
- if (tmp == EOF) goto fail;
- length |= tmp;
- } else if (byte >= 224) {
- /* Partial body length, so fail (keys can't use
- partial body) */
- fprintf(stderr, "Invalid partial packet encoding\n");
- goto fail;
- } else if (byte >= 192) {
- /* 2-byte length */
- stream >> tmp;
- if (tmp == EOF) goto fail;
- length = ((byte - 192) << 8) + tmp + 192;
- } else
- length = byte;
- } else {
- /* Old-style packets */
- switch (byte & 0x03) {
- case 0:
- /* 1-byte length */
- stream >> byte;
- if (byte == EOF) goto fail;
- length = byte;
- break;
-
- case 1:
- /* 2-byte length */
- stream >> byte;
- if (byte == EOF) goto fail;
- stream >> tmp;
- if (tmp == EOF) goto fail;
- length = byte << 8;
- length |= tmp;
- break;
-
- case 2:
- /* 4-byte length */
- stream >> tmp;
- if (tmp == EOF) goto fail;
- length = tmp << 24;
- stream >> tmp;
- if (tmp == EOF) goto fail;
- length |= tmp << 16;
- stream >> tmp;
- if (tmp == EOF) goto fail;
- length |= tmp << 8;
- stream >> tmp;
- if (tmp == EOF) goto fail;
- length |= tmp;
- break;
-
- default:
- fprintf(stderr, "Error: unable to parse old-style length\n");
- goto fail;
- }
- }
-
- if (verbose > 1)
- fprintf(stderr, "Found packet of type %d, length %d\n", type, length);
- } else {
- fprintf(stderr,
- "Error: unable to parse OpenPGP packets"
- " (is this armored data?)\n");
- goto fail;
- }
-
- if (want == 0 || type == want) {
- packet =
- static_cast<struct packet *>(GFAllocateMemory(sizeof(struct packet)));
- packet->type = type;
- packet->buf = static_cast<unsigned char *>(GFAllocateMemory(length));
- packet->len = length;
- packet->size = length;
- if (stream.readRawData(reinterpret_cast<char *>(packet->buf),
- packet->len) < packet->len) {
- fprintf(stderr, "Short read on packet type %d\n", type);
- goto fail;
- }
- break;
- } else {
- /* We don't want it, so skip the packet. We don't use fseek
- here since the input might be on stdin and that isn't
- seekable. */
-
- size_t i;
-
- for (i = 0; i < length; i++) stream >> byte;
- }
- }
-
- return packet;
-
-fail:
- return nullptr;
-}
-
struct packet *parse(FILE *input, unsigned char want, unsigned char stop) {
int byte;
struct packet *packet = NULL;