make raw data for b64 unsigned
authorEugene Crosser <crosser@average.org>
Sun, 8 Dec 2013 19:04:07 +0000 (23:04 +0400)
committerEugene Crosser <crosser@average.org>
Sun, 8 Dec 2013 19:04:07 +0000 (23:04 +0400)
base64.c
base64.h
test_base64.c

index 542c7eceba20a596569b4de9ac33c68d43c4c493..8f16cdc0306b0dd1125ab9ca40459f6e779ee95b 100644 (file)
--- a/base64.c
+++ b/base64.c
@@ -66,10 +66,10 @@ static char base64_encode_value(char value_in)
        return encoding[(int)value_in];
 }
 
-static int base64_encode_block(const char* plaintext_in, int length_in, char* code_out, base64_encodestate* state_in)
+static int base64_encode_block(const unsigned char* plaintext_in, int length_in, char* code_out, base64_encodestate* state_in)
 {
-       const char* plainchar = plaintext_in;
-       const char* const plaintextend = plaintext_in + length_in;
+       const unsigned char* plainchar = plaintext_in;
+       const unsigned char* const plaintextend = plaintext_in + length_in;
        char* codechar = code_out;
        char result;
        char fragment;
@@ -167,10 +167,10 @@ static void base64_init_decodestate(base64_decodestate* state_in)
        state_in->plainchar = 0;
 }
 
-static int base64_decode_block(const char* code_in, const int length_in, char* plaintext_out, base64_decodestate* state_in)
+static int base64_decode_block(const char* code_in, const int length_in, unsigned char* plaintext_out, base64_decodestate* state_in)
 {
        const char* codechar = code_in;
-       char* plainchar = plaintext_out;
+       unsigned char* plainchar = plaintext_out;
        char fragment;
        
        *plainchar = state_in->plainchar;
@@ -231,14 +231,14 @@ static int base64_decode_block(const char* code_in, const int length_in, char* p
        return plainchar - plaintext_out;
 }
 
-int b64_encode(const char *src, const int ssize,
+int b64_encode(const unsigned char *src, const int ssize,
                char *const b64, int *const bsize)
 {
        base64_encodestate s;
        int cnt1, cnt2;
        char *c = b64;
 
-       if (bsize < ((ssize-1)/3+1)*4+1) return 1;
+       if (*bsize < ((ssize-1)/3+1)*4+1) return 1;
        base64_init_encodestate(&s);
        cnt1 = base64_encode_block(src, ssize, c, &s);
        c += cnt1;
@@ -249,13 +249,13 @@ int b64_encode(const char *src, const int ssize,
        return 0;
 }
 
-int b64_decode(const char *b64, char *const dst, int *const dsize)
+int b64_decode(const char *b64, unsigned char *const dst, int *const dsize)
 {
        base64_decodestate s;
        int cnt;
        int bsize = strlen(b64);
 
-       if (dsize < (bsize*3/4)) return 1;
+       if (*dsize < (bsize*3/4)) return 1;
        base64_init_decodestate(&s);
        cnt = base64_decode_block(b64, bsize, dst, &s);
        *dsize = cnt;
index f1fe1f10895ae40abb8faaa2c595a043decefe5c..83d5cf580c4b1ed5ef30351256a150204289a71c 100644 (file)
--- a/base64.h
+++ b/base64.h
@@ -10,8 +10,8 @@ For details, see http://sourceforge.net/projects/libb64
 #ifndef BASE64_H
 #define BASE64_H
 
-int b64_encode(const char *src, const int ssize,
+int b64_encode(const unsigned char *src, const int ssize,
                char *const b64, int *const bsize);
-int b64_decode(const char *b64, char *const dst, int *const dsize);
+int b64_decode(const char *b64, unsigned char *const dst, int *const dsize);
 
 #endif /* BASE64_H */
index 83fbf57869cba2800031f88caee50b2787ae820b..2df9639a6249fadefde82b6cee51b6b8c2de156d 100644 (file)
@@ -30,12 +30,12 @@ freely, subject to the following restrictions:
 #include <string.h>
 #include "base64.h"
 
-static char src[40] = "Quick brown fox jumps over the lazy dog";
+static unsigned char src[40] = "Quick brown fox jumps over the lazy dog";
 
 int main(int argc, char *argv[])
 {
        char b64[80];
-       char dst[40];
+       unsigned char dst[44];
        int bsize, dsize;
 
        printf("src=\"%s\" (%d)\n", src, (int)sizeof(src));