X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/blobdiff_plain/0f4971d043c38bae1bfb95201622a1405110f899..e3ac2630467e42937478a8e03dec83693912f9c4:/armor.c?ds=sidebyside diff --git a/armor.c b/armor.c index d584deb..e24787e 100644 --- a/armor.c +++ b/armor.c @@ -5,7 +5,7 @@ * * Copyright 2002 Project Purple * - * $Id: armor.c,v 1.5 2003/06/04 20:57:06 noodles Exp $ + * $Id: armor.c,v 1.8 2003/11/01 19:23:38 noodles Exp $ */ #include @@ -102,16 +102,28 @@ static void armor_finish(struct armor_context *state) state->putchar_func(state->ctx, 1, &c); state->putchar_func(state->ctx, 1, (unsigned char *) "="); state->putchar_func(state->ctx, 1, (unsigned char *) "="); + state->count += 3; + if ((state->count % ARMOR_WIDTH) == 0) { + state->putchar_func(state->ctx, 1, + (unsigned char *) "\n"); + } break; case 2: c = encode64((state->lastoctet & 0xF) << 2); state->putchar_func(state->ctx, 1, &c); state->putchar_func(state->ctx, 1, (unsigned char *) "="); + state->count += 2; + if ((state->count % ARMOR_WIDTH) == 0) { + state->putchar_func(state->ctx, 1, + (unsigned char *) "\n"); + } break; } state->crc24 &= 0xffffffL; - state->putchar_func(state->ctx, 1, (unsigned char *) "\n"); + if ((state->count % ARMOR_WIDTH) != 0) { + state->putchar_func(state->ctx, 1, (unsigned char *) "\n"); + } state->putchar_func(state->ctx, 1, (unsigned char *) "="); c = encode64(state->crc24 >> 18); state->putchar_func(state->ctx, 1, &c); @@ -211,16 +223,19 @@ static void dearmor_init(struct dearmor_context *ctx) static void dearmor_finish(struct dearmor_context *state) { - // Check the checksum, + /* + * Check the checksum + */ state->crc24 &= 0xffffffL; -// state->putchar_func(state->ctx, '\n'); -// state->putchar_func(state->ctx, '='); -// state->putchar_func(state->ctx, encode64(state->crc24 >> 18)); -// state->putchar_func(state->ctx, encode64((state->crc24 >> 12) & 0x3F)); -// state->putchar_func(state->ctx, encode64((state->crc24 >> 6) & 0x3F)); -// state->putchar_func(state->ctx, encode64(state->crc24 & 0x3F)); - + /* + state->putchar_func(state->ctx, '\n'); + state->putchar_func(state->ctx, '='); + state->putchar_func(state->ctx, encode64(state->crc24 >> 18)); + state->putchar_func(state->ctx, encode64((state->crc24 >> 12) & 0x3F)); + state->putchar_func(state->ctx, encode64((state->crc24 >> 6) & 0x3F)); + state->putchar_func(state->ctx, encode64(state->crc24 & 0x3F)); + */ } @@ -393,9 +408,12 @@ int dearmor_openpgp_stream(int (*getchar_func)(void *ctx, size_t count, dearmor_init(&dearmor_ctx); dearmor_ctx.getchar_func = getchar_func; dearmor_ctx.ctx = ctx; - read_openpgp_stream(dearmor_getchar_c, &dearmor_ctx, packets); + read_openpgp_stream(dearmor_getchar_c, &dearmor_ctx, + packets, 0); dearmor_finish(&dearmor_ctx); - // TODO: Look for armor footer + /* + * TODO: Look for armor footer + */ } return 0;