+++ /dev/null
-diff -ru beecrypt/base64.c beecrypt.rpm/base64.c
---- beecrypt/base64.c Thu May 15 15:35:52 2003
-+++ beecrypt.rpm/base64.c Fri May 16 16:16:40 2003
-@@ -63,10 +55,10 @@
-
- while (div > 0)
- {
-- buf[0] = to_b64[ (data[0] >> 2) & 0x3f];
-- buf[1] = to_b64[((data[0] << 4) & 0x30) | ((data[1] >> 4) & 0xf)];
-- buf[2] = to_b64[((data[1] << 2) & 0x3c) | ((data[2] >> 6) & 0x3)];
-- buf[3] = to_b64[ data[2] & 0x3f];
-+ buf[0] = to_b64[ ((unsigned)data[0] >> 2) & 0x3f];
-+ buf[1] = to_b64[(((unsigned)data[0] << 4) & 0x30) | (((unsigned)data[1] >> 4) & 0xf)];
-+ buf[2] = to_b64[(((unsigned)data[1] << 2) & 0x3c) | (((unsigned)data[2] >> 6) & 0x3)];
-+ buf[3] = to_b64[ (unsigned)data[2] & 0x3f];
- data += 3;
- buf += 4;
- div--;
-@@ -81,16 +73,16 @@
- switch (rem)
- {
- case 2:
-- buf[0] = to_b64[ (data[0] >> 2) & 0x3f];
-- buf[1] = to_b64[((data[0] << 4) & 0x30) + ((data[1] >> 4) & 0xf)];
-- buf[2] = to_b64[ (data[1] << 2) & 0x3c];
-+ buf[0] = to_b64[ ((unsigned)data[0] >> 2) & 0x3f];
-+ buf[1] = to_b64[(((unsigned)data[0] << 4) & 0x30) + (((unsigned)data[1] >> 4) & 0xf)];
-+ buf[2] = to_b64[ ((unsigned)data[1] << 2) & 0x3c];
- buf[3] = '=';
- buf += 4;
- chars += 4;
- break;
- case 1:
-- buf[0] = to_b64[ (data[0] >> 2) & 0x3f];
-- buf[1] = to_b64[ (data[0] << 4) & 0x30];
-+ buf[0] = to_b64[ ((unsigned)data[0] >> 2) & 0x3f];
-+ buf[1] = to_b64[ ((unsigned)data[0] << 4) & 0x30];
- buf[2] = '=';
- buf[3] = '=';
- buf += 4;
-@@ -183,6 +177,7 @@
- if (isspace(ch))
- continue;
-
-+ bits = 0;
- if ((ch >= 'A') && (ch <= 'Z'))
- {
- bits = (byte) (ch - 'A');
-@@ -237,3 +232,222 @@
-
- return rc;
- }
-+
-+int b64encode_chars_per_line = B64ENCODE_CHARS_PER_LINE;
-+
-+const char * b64encode_eolstr = B64ENCODE_EOLSTR;
-+
-+/*@-internalglobs -modfilesys @*/
-+char * b64encode (const void * data, size_t ns)
-+{
-+ static char b64enc[] =
-+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-+ const char *e;
-+ const unsigned char *s = data;
-+ unsigned char *t, *te;
-+ int nt;
-+ int lc;
-+ unsigned c;
-+
-+ if (s == NULL) return NULL;
-+ if (*s == '\0') return calloc(1, sizeof(*t));
-+
-+ if (ns == 0) ns = strlen(s);
-+ nt = ((ns + 2) / 3) * 4;
-+
-+ /* Add additional bytes necessary for eol string(s). */
-+ if (b64encode_chars_per_line > 0 && b64encode_eolstr != NULL) {
-+ lc = (nt + b64encode_chars_per_line - 1) / b64encode_chars_per_line;
-+ if (((nt + b64encode_chars_per_line - 1) % b64encode_chars_per_line) != 0)
-+ ++lc;
-+ nt += lc * strlen(b64encode_eolstr);
-+ }
-+
-+ t = te = malloc(nt + 1);
-+
-+ lc = 0;
-+ if (te)
-+ while (ns > 0) {
-+
-+if (0)
-+fprintf(stderr, "%7u %02x %02x %02x -> %02x %02x %02x %02x\n",
-+(unsigned)ns, (unsigned)s[0], (unsigned)s[1], (unsigned)s[2],
-+(unsigned)(s[0] >> 2),
-+(unsigned)((s[0] & 0x3) << 4) | (s[1] >> 4),
-+(unsigned)((s[1] & 0xf) << 2) | (s[2] >> 6),
-+(unsigned)(s[2]& 0x3f));
-+ c = *s++;
-+ *te++ = b64enc[ (c >> 2) ], lc++;
-+ *te++ = b64enc[ ((c & 0x3) << 4) | (*s >> 4) ], lc++;
-+ if (--ns == 0) {
-+ *te++ = '=';
-+ *te++ = '=';
-+ continue;
-+ }
-+ c = *s++;
-+ *te++ = b64enc[ ((c & 0xf) << 2) | (*s >> 6) ], lc++;
-+ if (--ns == 0) {
-+ *te++ = '=';
-+ continue;
-+ }
-+ *te++ = b64enc[ (int)(*s & 0x3f) ], lc++;
-+
-+ /* Append eol string if desired. */
-+ if (b64encode_chars_per_line > 0 && b64encode_eolstr != NULL) {
-+ if (lc >= b64encode_chars_per_line) {
-+ for (e = b64encode_eolstr; *e != '\0'; e++)
-+ *te++ = *e;
-+ lc = 0;
-+ }
-+ }
-+ s++;
-+ --ns;
-+ }
-+
-+ if (te) {
-+ /* Append eol string if desired. */
-+ if (b64encode_chars_per_line > 0 && b64encode_eolstr != NULL) {
-+ if (lc != 0) {
-+ for (e = b64encode_eolstr; *e != '\0'; e++)
-+ *te++ = *e;
-+ }
-+ }
-+ *te = '\0';
-+ }
-+
-+ /*@-mustfree -compdef @*/
-+ return t;
-+ /*@=mustfree =compdef @*/
-+}
-+/*@=globs =internalglobs =modfilesys @*/
-+
-+/*@-internalglobs -modfilesys @*/
-+#define CRC24_INIT 0xb704ceL
-+#define CRC24_POLY 0x1864cfbL
-+
-+char * b64crc (const unsigned char * data, size_t ns)
-+{
-+ const unsigned char *s = data;
-+ uint32_t crc = CRC24_INIT;
-+
-+ while (ns-- > 0) {
-+ int i;
-+ crc ^= (*s++) << 16;
-+ for (i = 0; i < 8; i++) {
-+ crc <<= 1;
-+ if (crc & 0x1000000)
-+ crc ^= CRC24_POLY;
-+ }
-+ }
-+ crc &= 0xffffff;
-+ /*@-unrecog@*/ /* FIX: include endianness.h? */
-+ #if !WORDS_BIGENDIAN
-+ crc = swapu32(crc);
-+ #endif
-+ /*@=unrecog@*/
-+ data = (byte *)&crc;
-+ data++;
-+ ns = 3;
-+ return b64encode(data, ns);
-+}
-+/*@=internalglobs =modfilesys @*/
-+
-+const char * b64decode_whitespace = B64DECODE_WHITESPACE;
-+
-+/*@-internalglobs -modfilesys @*/
-+int b64decode (const char * s, void ** datap, size_t *lenp)
-+{
-+ unsigned char b64dec[256];
-+ const unsigned char *t;
-+ unsigned char *te;
-+ int ns, nt;
-+ unsigned a, b, c, d;
-+
-+ if (s == NULL) return 1;
-+
-+ /* Setup character lookup tables. */
-+ memset(b64dec, 0x80, sizeof(b64dec));
-+ for (c = 'A'; c <= 'Z'; c++)
-+ b64dec[ c ] = 0 + (c - 'A');
-+ for (c = 'a'; c <= 'z'; c++)
-+ b64dec[ c ] = 26 + (c - 'a');
-+ for (c = '0'; c <= '9'; c++)
-+ b64dec[ c ] = 52 + (c - '0');
-+ b64dec[(unsigned)'+'] = 62;
-+ b64dec[(unsigned)'/'] = 63;
-+ b64dec[(unsigned)'='] = 0;
-+
-+ /* Mark whitespace characters. */
-+ if (b64decode_whitespace) {
-+ const char *e;
-+ for (e = b64decode_whitespace; *e != '\0'; e++) {
-+ if (b64dec[ (unsigned)*e ] == 0x80)
-+ b64dec[ (unsigned)*e ] = 0x81;
-+ }
-+ }
-+
-+ /* Validate input buffer */
-+ ns = 0;
-+ for (t = s; *t != '\0'; t++) {
-+ switch (b64dec[ (unsigned)*t ]) {
-+ case 0x80: /* invalid chararcter */
-+if (0)
-+fprintf(stderr, "--- b64decode %c(%02x) %02x\n", *t, (unsigned)(*t & 0xff), (unsigned)b64dec[ (unsigned)*t ]);
-+ return 3;
-+ /*@notreached@*/ /*@switchbreak@*/ break;
-+ case 0x81: /* white space */
-+ /*@switchbreak@*/ break;
-+ default:
-+ ns++;
-+ /*@switchbreak@*/ break;
-+ }
-+ }
-+
-+ if (((unsigned)ns) & 0x3) return 2;
-+
-+ nt = (ns / 4) * 3;
-+ t = te = malloc(nt + 1);
-+
-+ while (ns > 0) {
-+
-+ /* Get next 4 characters, ignoring whitespace. */
-+ while ((a = b64dec[ (unsigned)*s++ ]) == 0x81)
-+ ;
-+ while ((b = b64dec[ (unsigned)*s++ ]) == 0x81)
-+ ;
-+ while ((c = b64dec[ (unsigned)*s++ ]) == 0x81)
-+ ;
-+ while ((d = b64dec[ (unsigned)*s++ ]) == 0x81)
-+ ;
-+
-+if (0)
-+fprintf(stderr, "%7u %02x %02x %02x %02x -> %02x %02x %02x\n",
-+(unsigned)ns, a, b, c, d,
-+(((a << 2) | (b >> 4)) & 0xff),
-+(((b << 4) | (c >> 2)) & 0xff),
-+(((c << 6) | d) & 0xff));
-+
-+ ns -= 4;
-+ *te++ = (a << 2) | (b >> 4);
-+ if (s[-2] == '=') break;
-+ *te++ = (b << 4) | (c >> 2);
-+ if (s[-1] == '=') break;
-+ *te++ = (c << 6) | d;
-+ }
-+
-+ if (ns != 0) { /* XXX can't happen, just in case */
-+ if (t) free((void *)t);
-+ return 1;
-+ }
-+ if (lenp)
-+ *lenp = (te - t);
-+
-+ if (datap)
-+ *datap = (void *)t;
-+ else
-+ if (t) free((void *)t);
-+
-+ return 0;
-+}
-+/*@=globs =internalglobs =modfilesys @*/
-+/*@=type@*/
-diff -ru beecrypt/base64.h beecrypt.rpm/base64.h
---- beecrypt/base64.h Fri Jun 21 14:17:24 2002
-+++ beecrypt.rpm/base64.h Fri May 16 16:16:40 2003
-@@ -27,13 +27,76 @@
-
- #include "beecrypt.h"
-
-+/**
-+ * Decode white space character set (default).
-+ */
-+/*@-exportlocal@*/
-+/*@unchecked@*/ /*@observer@*/ /*@null@*/
-+extern const char * b64decode_whitespace;
-+/*@=exportlocal@*/
-+#define B64DECODE_WHITESPACE " \f\n\r\t\v"
-+
-+/**
-+ * Encode 72 characters per line (default).
-+ */
-+/*@-exportlocal@*/
-+/*@unchecked@*/
-+extern int b64encode_chars_per_line;
-+/*@=exportlocal@*/
-+#define B64ENCODE_CHARS_PER_LINE 72
-+
-+/**
-+ * Encode end-of-line string (default).
-+ */
-+/*@-exportlocal@*/
-+/*@unchecked@*/ /*@observer@*/ /*@null@*/
-+extern const char * b64encode_eolstr;
-+/*@=exportlocal@*/
-+#define B64ENCODE_EOLSTR "\n"
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-
--BEECRYPTAPI
-+/**
-+ * Encode chunks of 3 bytes of binary input into 4 bytes of base64 output.
-+ * @param data binary data
-+ * @param ns no. bytes of data (0 uses strlen(data))
-+ * @return (malloc'd) base64 string
-+ */
-+BEECRYPTAPI /*@only@*/ /*@null@*/ /*@unused@*/
-+char * b64encode (const void * data, size_t ns)
-+ /*@*/;
-+
-+/**
-+ * Encode crc of binary input data into 5 bytes of base64 output.
-+ * @param data binary data
-+ * @param ns no. bytes of binary data
-+ * @return (malloc'd) base64 string
-+ */
-+BEECRYPTAPI /*@only@*/ /*@null@*/ /*@unused@*/
-+char * b64crc (const unsigned char * data, size_t ns)
-+ /*@*/;
-+
-+/**
-+ * Decode chunks of 4 bytes of base64 input into 3 bytes of binary output.
-+ * @param s base64 string
-+ * @retval datap address of (malloc'd) binary data
-+ * @retval lenp address of no. bytes of binary data
-+ * @return 0 on success, 1: s == NULL, 2: bad length, 3: bad char
-+ */
-+BEECRYPTAPI /*@unused@*/
-+int b64decode (const char * s, /*@out@*/ void ** datap, /*@out@*/ size_t *lenp)
-+ /*@modifies *datap, *lenp @*/;
-+
-+/**
-+ */
-+BEECRYPTAPI /*@only@*/ /*@null@*/ /*@unused@*/
- char* b64enc(const memchunk*);
--BEECRYPTAPI
-+
-+/**
-+ */
-+BEECRYPTAPI /*@only@*/ /*@null@*/ /*@unused@*/
- memchunk* b64dec(const char*);
-
- #ifdef __cplusplus