From fe1ea9cb7657283b3232b22d93fb10b9bfd67749 Mon Sep 17 00:00:00 2001 From: TLINDEN Date: Fri, 21 Feb 2014 20:35:10 +0100 Subject: [PATCH] Revert "rm html stuff from repo, changes too often. enhanced pcpstream" This reverts commit 82b05b768e3742b885fa4595e3bdb76f533f7e45. --- TODO | 4 -- include/pcp.h | 1 - include/pcp/pcpstream.h | 7 -- libpcp/pcpstream.c | 138 +++++----------------------------------- tests/Makefile.am | 5 +- tests/streamtest.c | 11 ++-- 6 files changed, 21 insertions(+), 145 deletions(-) diff --git a/TODO b/TODO index 3ac5b59..f2c4f5a 100644 --- a/TODO +++ b/TODO @@ -17,10 +17,6 @@ vault checksum: add keysigs as well enable formats for secret key exports as well -PCPSTREAM changes: -- enable determine armor mode of input, parse headers, comments - and newlines away, decode and return the binary result with ps_read() - as before. Python binding, e.g.: diff --git a/include/pcp.h b/include/pcp.h index fb0d6c6..8b16eae 100644 --- a/include/pcp.h +++ b/include/pcp.h @@ -8,7 +8,6 @@ extern "C" { #include "pcp/config.h" #include "pcp/base85.h" #include "pcp/buffer.h" -#include "pcp/config.h" #include "pcp/crypto.h" #include "pcp/defines.h" #include "pcp/digital_crc32.h" diff --git a/include/pcp/pcpstream.h b/include/pcp/pcpstream.h index 221a9e8..59b2d8a 100644 --- a/include/pcp/pcpstream.h +++ b/include/pcp/pcpstream.h @@ -28,7 +28,6 @@ #include "util.h" #include "defines.h" #include "buffer.h" -#include "z85.h" /** * \defgroup Pcpstream PCPSTREAMS @@ -59,15 +58,9 @@ struct _pcp_stream_t { FILE *fd; /**< The backend FILE stream */ Buffer *b; /**< The backend Buffer object */ - Buffer *z; /**< Buffer Cache for Z85 en/de-coding */ - Buffer *t; /**< Temporary Buffer */ uint8_t is_buffer; /**< Set to 1 if the backend is a Buffer */ uint8_t eof; /**< Set to 1 if EOF reached */ uint8_t err; /**< Set to 1 if an error occured */ - uint8_t armor; /**< Set to 1 if Z85 en/de-coding is requested */ - uint8_t determine; /**< Set to 1 to automatically determine armor mode */ - uint8_t firstread; /**< Internal flag, will be set after first read() */ - size_t linewr; /**< Used for Z85 writing, remember how many chars we lastly wrote on the current line */ }; /** The name used everywhere */ diff --git a/libpcp/pcpstream.c b/libpcp/pcpstream.c index 8a29ba1..436919a 100644 --- a/libpcp/pcpstream.c +++ b/libpcp/pcpstream.c @@ -23,14 +23,11 @@ Pcpstream *ps_init(void) { Pcpstream *stream = ucmalloc(sizeof(Pcpstream)); - stream->z = buffer_new(32, "Z85stream"); stream->b = NULL; stream->fd = NULL; stream->is_buffer = 0; stream->eof = 0; stream->err = 0; - stream->armor = 0; - stream->determine = 0; return stream; } @@ -54,47 +51,15 @@ Pcpstream *ps_new_outbuffer() { return stream; } -void ps_armor(Pcpstream *stream) { - stream->armor = 1; -} - -void ps_determine(Pcpstream *stream) { - stream->determine = 1; -} - -int ps_end(Pcpstream *stream) { - return stream->eof; -} - -int ps_err(Pcpstream *stream) { - return stream->err; -} - size_t ps_read(Pcpstream *stream, void *buf, size_t readbytes) { size_t gotbytes = 0; if(stream->is_buffer) { - /* a buffer stream */ + /* check if there's enough space in our buffer */ if(buffer_left(stream->b) < readbytes) readbytes = buffer_left(stream->b); - if(stream->armor == 1) { - size_t i = 0; - uint8_t c; - while (i < readbytes) { - c = buffer_get8(stream->b); - if(c != '\r' && c != '\n') { - buffer_add8(stream->z, c); - i++; - } - } - memcpy(buf, buffer_get(stream->z), buffer_size(stream->z)); - gotbytes = buffer_size(stream->z); - buffer_clear(stream->z); - } - else - gotbytes = buffer_get_chunk(stream->b, buf, readbytes); - + gotbytes = buffer_get_chunk(stream->b, buf, readbytes); if(gotbytes == 0) { /* this should not happen with buffers */ stream->eof = 1; @@ -102,27 +67,7 @@ size_t ps_read(Pcpstream *stream, void *buf, size_t readbytes) { } } else { - /* a FILE stream */ - if(stream->armor == 1) { - size_t i = 0; - uint8_t c; - while (i < readbytes) { - gotbytes = fread(&c, 1, 1, stream->fd); - if(gotbytes == 0) - break; - if(c != '\r' && c != '\n') { - buffer_add8(stream->z, c); - i++; - } - } - memcpy(buf, buffer_get(stream->z), buffer_size(stream->z)); - gotbytes = buffer_size(stream->z); - _dump("buf", buf, gotbytes); - buffer_clear(stream->z); - } - else - gotbytes = fread(buf, 1, readbytes, stream->fd); - + gotbytes = fread(buf, 1, readbytes, stream->fd); if(gotbytes == 0) { if(feof(stream->fd) != 0) stream->eof = 1; @@ -131,82 +76,22 @@ size_t ps_read(Pcpstream *stream, void *buf, size_t readbytes) { } } - if(gotbytes > 0 && stream->determine && stream->firstread == 0) { - /* check if we need to decode input */ - fprintf(stderr, "determine\n"); - if(_buffer_is_binary(buf, gotbytes) == 0) { - fprintf(stderr, "is armored\n"); - stream->armor = 1; - } - } - - stream->firstread = 1; - - if(gotbytes > 0 && stream->armor == 1) { - /* z85 decode buf */ - size_t binlen; - unsigned char *bin = pcp_z85_decode(buf, &binlen); - if(bin == NULL) { - return 0; - } - - memcpy(buf, bin, binlen); - - _dump("decoded", buf, binlen); - - free(bin); - return binlen; - } - return gotbytes; } size_t ps_write(Pcpstream *stream, void *buf, size_t writebytes) { size_t donebytes = 0; - if(stream->armor == 1) { - /* z85 encode buf */ - size_t padlen, zlen, i, pos; - unsigned char *padded = pcp_padfour(buf, writebytes, &padlen); - - zlen = (padlen * 5 / 4); - char *z85 = ucmalloc(zlen); - - zmq_z85_encode(z85, padded, padlen); - - _dump(" orig", buf, writebytes); - _dump(" z85", z85, zlen); - - pos = stream->linewr; - for(i=0; i= 71) { - buffer_add8(stream->z, '\r'); - buffer_add8(stream->z, '\n'); - pos = 1; - } - else - pos++; - buffer_add8(stream->z, z85[i]); - } - stream->linewr = pos; - _dump("n added", buffer_get(stream->z), buffer_size(stream->z)); - } - else { - buffer_add(stream->z, buf, writebytes); - } - if(stream->is_buffer) { - buffer_add(stream->b, buffer_get(stream->z), buffer_size(stream->z)); - donebytes = buffer_size(stream->z); + buffer_add(stream->b, buf, writebytes); + donebytes = writebytes; } else { - donebytes = fwrite(buffer_get(stream->z), 1, buffer_size(stream->z), stream->fd); - if(ferror(stream->fd) != 0 || donebytes < buffer_size(stream->z)) + donebytes = fwrite(buf, 1, writebytes, stream->fd); + if(ferror(stream->fd) != 0 || donebytes < writebytes) stream->err = 1; } - writebytes = buffer_size(stream->z); - buffer_clear(stream->z); return writebytes; } @@ -240,6 +125,14 @@ void ps_close(Pcpstream *stream) { } } +int ps_end(Pcpstream *stream) { + return stream->eof; +} + +int ps_err(Pcpstream *stream) { + return stream->err; +} + size_t ps_tell(Pcpstream *stream) { if(stream->is_buffer) { if(stream->b->end > stream->b->offset) @@ -255,4 +148,3 @@ size_t ps_tell(Pcpstream *stream) { Buffer *ps_buffer(Pcpstream *stream) { return stream->b; } - diff --git a/tests/Makefile.am b/tests/Makefile.am index 80bc842..4a00126 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -20,7 +20,7 @@ # AM_CFLAGS = -I../include/pcp -I../src -I../libpcp/scrypt/crypto -Wall -g -check_PROGRAMS = col invalidkeys pwhashes gencheader statictest cpptest buffertest sample streamtest +check_PROGRAMS = col invalidkeys pwhashes gencheader statictest cpptest buffertest sample gencheader_LDADD = ../libpcp/.libs/libpcp1.a gencheader_SOURCES = gencheader.c @@ -34,8 +34,7 @@ buffertest_SOURCES = buffertest.c sample_LDADD = ../libpcp/.libs/libpcp1.a sample_SOURCES = sample.c -streamtest_LDADD = ../libpcp/.libs/libpcp1.a -streamtest_SOURCES = streamtest.c + col_LDADD = ../libpcp/.libs/libpcp1.a col_SOURCES = collisions.c ../src/compat_getopt.c diff --git a/tests/streamtest.c b/tests/streamtest.c index 9d54306..ff8a694 100644 --- a/tests/streamtest.c +++ b/tests/streamtest.c @@ -9,8 +9,8 @@ int main() { FILE *out, *in; unsigned char clear[8] = "ABCDEFGH"; unsigned char key[8] = "IxD8Lq1K"; - unsigned char crypt[11] = {0}; - int blocks = 24; + unsigned char crypt[8] = {0}; + int blocks = 8; int i = 0; if((out = fopen("teststream.out", "wb+")) == NULL) { @@ -18,7 +18,6 @@ int main() { return 1; } Pcpstream *pout = ps_new_file(out); - ps_armor(pout); /* "encrypt" a couple of times into the file */ for(i=0; i