]> git.sommitrealweird.co.uk Git - onak.git/blobdiff - armor.c
"Recognize" some extra subpacket types
[onak.git] / armor.c
diff --git a/armor.c b/armor.c
index f2e97fcd791e04c1c8698c7824b32c61984a00d2..bb0085e348d3b73846367b7bab80938e0cc75f21 100644 (file)
--- a/armor.c
+++ b/armor.c
@@ -4,15 +4,14 @@
  * Jonathan McDowell <noodles@earth.li>
  *
  * Copyright 2002 Project Purple
  * Jonathan McDowell <noodles@earth.li>
  *
  * Copyright 2002 Project Purple
- *
- * $Id: armor.c,v 1.7 2003/09/30 20:40:10 noodles Exp $
  */
 
  */
 
-#include <assert.h>
 #include <stdlib.h>
 
 #include "armor.h"
 #include <stdlib.h>
 
 #include "armor.h"
+#include "config.h"
 #include "keystructs.h"
 #include "keystructs.h"
+#include "log.h"
 #include "onak-conf.h"
 #include "parsekey.h"
 
 #include "onak-conf.h"
 #include "parsekey.h"
 
@@ -36,7 +35,7 @@ static unsigned char encode64(unsigned char c) {
        } else if (c == 63) {
                c = '/';
        } else {
        } else if (c == 63) {
                c = '/';
        } else {
-               assert(c < 64);
+               log_assert(c < 64);
        }
 
        return c;
        }
 
        return c;
@@ -102,16 +101,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->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 *) "=");
                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;
                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);
        state->putchar_func(state->ctx, 1, (unsigned char *) "=");
        c = encode64(state->crc24 >> 18);
        state->putchar_func(state->ctx, 1, &c);
@@ -132,7 +143,7 @@ static int armor_putchar_int(void *ctx, unsigned char c)
        unsigned char t;
        int i;
 
        unsigned char t;
        int i;
 
-       assert(ctx != NULL);
+       log_assert(ctx != NULL);
        state = (struct armor_context *) ctx;
 
        switch (state->curoctet++) {
        state = (struct armor_context *) ctx;
 
        switch (state->curoctet++) {
@@ -177,6 +188,8 @@ static int armor_putchar(void *ctx, size_t count, unsigned char *c)
 {
        int i;
 
 {
        int i;
 
+       log_assert(c != NULL);
+
        for (i = 0; i < count; i++) {
                armor_putchar_int(ctx, c[i]);
        }
        for (i = 0; i < count; i++) {
                armor_putchar_int(ctx, c[i]);
        }
@@ -233,7 +246,7 @@ static int dearmor_getchar(void *ctx, unsigned char *c)
        unsigned char tmpc;
        int i;
 
        unsigned char tmpc;
        int i;
 
-       assert(ctx != NULL);
+       log_assert(ctx != NULL);
        state = (struct dearmor_context *) ctx;
        *c = 0;
        
        state = (struct dearmor_context *) ctx;
        *c = 0;
        
@@ -310,8 +323,8 @@ int armor_openpgp_stream(int (*putchar_func)(void *ctx, size_t count,
         */
        putchar_func(ctx, sizeof("-----BEGIN PGP PUBLIC KEY BLOCK-----\n") - 1,
                (unsigned char *) "-----BEGIN PGP PUBLIC KEY BLOCK-----\n");
         */
        putchar_func(ctx, sizeof("-----BEGIN PGP PUBLIC KEY BLOCK-----\n") - 1,
                (unsigned char *) "-----BEGIN PGP PUBLIC KEY BLOCK-----\n");
-       putchar_func(ctx, sizeof("Version: onak " VERSION "\n\n") - 1,
-               (unsigned char *) "Version: onak " VERSION "\n\n");
+       putchar_func(ctx, sizeof("Version: onak " PACKAGE_VERSION "\n\n") - 1,
+               (unsigned char *) "Version: onak " PACKAGE_VERSION "\n\n");
        
        armor_init(&armor_ctx);
        armor_ctx.putchar_func = putchar_func;
        
        armor_init(&armor_ctx);
        armor_ctx.putchar_func = putchar_func;