commit 970ad7a

default  ·  2023-05-17 08:08:57 +0000 UTC
parent 7f1b87a
Got rid of xs_encdec.h.
13 files changed,  +29, -182
M html.c
M http.c
M main.c
M snac.c
+14, -15
 1@@ -27,24 +27,23 @@ install:
 2 	mkdir -p -m 755 $(PREFIX_MAN)/man8
 3 	install -m 644 doc/snac.8 $(PREFIX_MAN)/man8/snac.8
 4 
 5-activitypub.o: activitypub.c xs.h xs_encdec.h xs_json.h xs_curl.h \
 6- xs_mime.h xs_openssl.h xs_regex.h xs_time.h xs_set.h snac.h
 7+activitypub.o: activitypub.c xs.h xs_json.h xs_curl.h xs_mime.h \
 8+ xs_openssl.h xs_regex.h xs_time.h xs_set.h snac.h
 9 data.o: data.c xs.h xs_io.h xs_json.h xs_openssl.h xs_glob.h xs_set.h \
10  xs_time.h snac.h
11 format.o: format.c xs.h xs_regex.h snac.h
12-html.o: html.c xs.h xs_io.h xs_encdec.h xs_json.h xs_regex.h xs_set.h \
13- xs_openssl.h xs_time.h xs_mime.h snac.h
14-http.o: http.c xs.h xs_io.h xs_encdec.h xs_openssl.h xs_curl.h xs_time.h \
15- xs_json.h snac.h
16-httpd.o: httpd.c xs.h xs_io.h xs_encdec.h xs_json.h xs_socket.h \
17- xs_httpd.h xs_mime.h xs_time.h snac.h
18-main.o: main.c xs.h xs_io.h xs_encdec.h xs_json.h snac.h
19-mastoapi.o: mastoapi.c xs.h xs_encdec.h xs_openssl.h xs_json.h xs_io.h \
20- xs_time.h xs_glob.h snac.h
21-snac.o: snac.c xs.h xs_io.h xs_encdec.h xs_json.h xs_curl.h xs_openssl.h \
22+html.o: html.c xs.h xs_io.h xs_json.h xs_regex.h xs_set.h xs_openssl.h \
23+ xs_time.h xs_mime.h snac.h
24+http.o: http.c xs.h xs_io.h xs_openssl.h xs_curl.h xs_time.h xs_json.h \
25+ snac.h
26+httpd.o: httpd.c xs.h xs_io.h xs_json.h xs_socket.h xs_httpd.h xs_mime.h \
27+ xs_time.h snac.h
28+main.o: main.c xs.h xs_io.h xs_json.h snac.h
29+mastoapi.o: mastoapi.c xs.h xs_openssl.h xs_json.h xs_io.h xs_time.h \
30+ xs_glob.h xs_set.h snac.h
31+snac.o: snac.c xs.h xs_io.h xs_unicode.h xs_json.h xs_curl.h xs_openssl.h \
32  xs_socket.h xs_httpd.h xs_mime.h xs_regex.h xs_set.h xs_time.h xs_glob.h \
33  snac.h
34 upgrade.o: upgrade.c xs.h xs_io.h xs_json.h xs_glob.h snac.h
35-utils.o: utils.c xs.h xs_io.h xs_encdec.h xs_json.h xs_time.h \
36- xs_openssl.h snac.h
37-webfinger.o: webfinger.c xs.h xs_encdec.h xs_json.h xs_curl.h snac.h
38+utils.o: utils.c xs.h xs_io.h xs_json.h xs_time.h xs_openssl.h snac.h
39+webfinger.o: webfinger.c xs.h xs_json.h xs_curl.h snac.h
+0, -1
1@@ -2,7 +2,6 @@
2 /* copyright (c) 2022 - 2023 grunfink / MIT license */
3 
4 #include "xs.h"
5-#include "xs_encdec.h"
6 #include "xs_json.h"
7 #include "xs_curl.h"
8 #include "xs_mime.h"
M html.c
+0, -1
1@@ -3,7 +3,6 @@
2 
3 #include "xs.h"
4 #include "xs_io.h"
5-#include "xs_encdec.h"
6 #include "xs_json.h"
7 #include "xs_regex.h"
8 #include "xs_set.h"
M http.c
+0, -1
1@@ -3,7 +3,6 @@
2 
3 #include "xs.h"
4 #include "xs_io.h"
5-#include "xs_encdec.h"
6 #include "xs_openssl.h"
7 #include "xs_curl.h"
8 #include "xs_time.h"
+1, -1
 1@@ -3,12 +3,12 @@
 2 
 3 #include "xs.h"
 4 #include "xs_io.h"
 5-#include "xs_encdec.h"
 6 #include "xs_json.h"
 7 #include "xs_socket.h"
 8 #include "xs_httpd.h"
 9 #include "xs_mime.h"
10 #include "xs_time.h"
11+#include "xs_openssl.h"
12 
13 #include "snac.h"
14 
M main.c
+0, -1
1@@ -3,7 +3,6 @@
2 
3 #include "xs.h"
4 #include "xs_io.h"
5-#include "xs_encdec.h"
6 #include "xs_json.h"
7 
8 #include "snac.h"
+0, -1
1@@ -4,7 +4,6 @@
2 #ifndef NO_MASTODON_API
3 
4 #include "xs.h"
5-#include "xs_encdec.h"
6 #include "xs_openssl.h"
7 #include "xs_json.h"
8 #include "xs_io.h"
M snac.c
+0, -1
1@@ -7,7 +7,6 @@
2 #include "xs_io.h"
3 #include "xs_unicode.h"
4 #include "xs_json.h"
5-#include "xs_encdec.h"
6 #include "xs_curl.h"
7 #include "xs_openssl.h"
8 #include "xs_socket.h"
+0, -1
1@@ -3,7 +3,6 @@
2 
3 #include "xs.h"
4 #include "xs_io.h"
5-#include "xs_encdec.h"
6 #include "xs_json.h"
7 #include "xs_time.h"
8 #include "xs_openssl.h"
+0, -1
1@@ -2,7 +2,6 @@
2 /* copyright (c) 2022 - 2023 grunfink / MIT license */
3 
4 #include "xs.h"
5-#include "xs_encdec.h"
6 #include "xs_json.h"
7 #include "xs_curl.h"
8 
+0, -155
  1@@ -1,155 +0,0 @@
  2-/* copyright (c) 2022 - 2023 grunfink / MIT license */
  3-
  4-#ifndef _XS_ENCDEC_H
  5-
  6-#define _XS_ENCDEC_H
  7-
  8- xs_str *xs_base64_enc(const xs_val *data, int sz);
  9- xs_val *xs_base64_dec(const xs_str *data, int *size);
 10- int xs_is_base64(const char *str);
 11-
 12-
 13-#ifdef XS_IMPLEMENTATION
 14-
 15-/** base64 */
 16-
 17-static char *xs_b64_tbl = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 18-                          "abcdefghijklmnopqrstuvwxyz"
 19-                          "0123456789+/=";
 20-
 21-xs_str *xs_base64_enc_tbl(const xs_val *data, int sz, const char *b64_tbl)
 22-/* encodes data to base64 using a table */
 23-{
 24-    xs_str *s;
 25-    unsigned char *p;
 26-    char *i;
 27-    int bsz, n;
 28-
 29-    bsz = ((sz + 3 - 1) / 3) * 4;
 30-    i = s = xs_realloc(NULL, _xs_blk_size(bsz + 1));
 31-    p = (unsigned char *)data;
 32-
 33-    for (n = 0; n < sz; n += 3) {
 34-        int l = sz - n;
 35-
 36-        if (l == 1) {
 37-            *i++ = b64_tbl[(p[n] >> 2) & 0x3f];
 38-            *i++ = b64_tbl[(p[n] << 4) & 0x3f];
 39-            *i++ = '=';
 40-            *i++ = '=';
 41-        }
 42-        else
 43-        if (l == 2) {
 44-            *i++ = b64_tbl[(p[n] >> 2) & 0x3f];
 45-            *i++ = b64_tbl[(p[n] << 4 | p[n + 1] >> 4) & 0x3f];
 46-            *i++ = b64_tbl[(p[n + 1] << 2) & 0x3f];
 47-            *i++ = '=';
 48-        }
 49-        else {
 50-            *i++ = b64_tbl[(p[n] >> 2) & 0x3f];
 51-            *i++ = b64_tbl[(p[n] << 4 | p[n + 1] >> 4) & 0x3f];
 52-            *i++ = b64_tbl[(p[n + 1] << 2 | p[n + 2] >> 6) & 0x3f];
 53-            *i++ = b64_tbl[(p[n + 2]) & 0x3f];
 54-        }
 55-    }
 56-
 57-    *i = '\0';
 58-
 59-    return s;
 60-}
 61-
 62-
 63-xs_str *xs_base64_enc(const xs_val *data, int sz)
 64-/* encodes data to base64 */
 65-{
 66-    return xs_base64_enc_tbl(data, sz, xs_b64_tbl);
 67-}
 68-
 69-
 70-xs_val *xs_base64_dec_tbl(const xs_str *data, int *size, const char *b64_tbl)
 71-/* decodes data from base64 using a table */
 72-{
 73-    xs_val *s = NULL;
 74-    int sz = 0;
 75-    char *p;
 76-
 77-    p = (char *)data;
 78-
 79-    /* size of data must be a multiple of 4 */
 80-    if (strlen(p) % 4)
 81-        return NULL;
 82-
 83-    for (p = (char *)data; *p; p += 4) {
 84-        int cs[4];
 85-        int n;
 86-        unsigned char tmp[3];
 87-
 88-        for (n = 0; n < 4; n++) {
 89-            char *ss = strchr(b64_tbl, p[n]);
 90-
 91-            if (ss == NULL) {
 92-                /* not a base64 char */
 93-                return xs_free(s);
 94-            }
 95-
 96-            cs[n] = ss - b64_tbl;
 97-        }
 98-
 99-        n = 0;
100-
101-        /* first byte */
102-        tmp[n++] = cs[0] << 2 | ((cs[1] >> 4) & 0x0f);
103-
104-        /* second byte */
105-        if (cs[2] != 64)
106-            tmp[n++] = cs[1] << 4 | ((cs[2] >> 2) & 0x3f);
107-
108-        /* third byte */
109-        if (cs[3] != 64)
110-            tmp[n++] = cs[2] << 6 | (cs[3] & 0x3f);
111-
112-        /* must be done manually because data can be pure binary */
113-        s = xs_realloc(s, _xs_blk_size(sz + n));
114-        memcpy(s + sz, tmp, n);
115-        sz += n;
116-    }
117-
118-    /* asciiz it to use it as a string */
119-    s = xs_realloc(s, _xs_blk_size(sz + 1));
120-    s[sz] = '\0';
121-
122-    *size = sz;
123-
124-    return s;
125-}
126-
127-
128-xs_val *xs_base64_dec(const xs_str *data, int *size)
129-/* decodes data from base64 */
130-{
131-    return xs_base64_dec_tbl(data, size, xs_b64_tbl);
132-}
133-
134-
135-int xs_is_base64_tbl(const char *str, const char *b64_tbl)
136-/* returns 1 if str is a base64 string, with table */
137-{
138-    while (*str) {
139-        if (strchr(b64_tbl, *str++) == NULL)
140-            return 0;
141-    }
142-
143-    return 1;
144-}
145-
146-
147-int xs_is_base64(const char *str)
148-/* returns 1 if str is a base64 string */
149-{
150-    return xs_is_base64_tbl(str, xs_b64_tbl);
151-}
152-
153-
154-#endif /* XS_IMPLEMENTATION */
155-
156-#endif /* _XS_ENCDEC_H */
+13, -2
 1@@ -6,7 +6,15 @@
 2 
 3 xs_str *_xs_digest(const xs_val *input, int size, const char *digest, int as_hex);
 4 
 5+#ifndef _XS_MD5_H
 6 #define xs_md5_hex(input, size)       _xs_digest(input, size, "md5",    1)
 7+#endif /* XS_MD5_H */
 8+
 9+#ifndef _XS_BASE64_H
10+xs_str *xs_base64_enc(const xs_val *data, int sz);
11+xs_val *xs_base64_dec(const xs_str *data, int *size);
12+#endif /* XS_BASE64_H */
13+
14 #define xs_sha1_hex(input, size)      _xs_digest(input, size, "sha1",   1)
15 #define xs_sha256_hex(input, size)    _xs_digest(input, size, "sha256", 1)
16 #define xs_sha256_base64(input, size) _xs_digest(input, size, "sha256", 0)
17@@ -22,7 +30,9 @@ int xs_evp_verify(const char *pubkey, const char *mem, int size, const char *b64
18 #include "openssl/pem.h"
19 #include "openssl/evp.h"
20 
21-#if 0
22+
23+#ifndef _XS_BASE64_H
24+
25 xs_str *xs_base64_enc(const xs_val *data, int sz)
26 /* encodes data to base64 */
27 {
28@@ -77,7 +87,8 @@ xs_val *xs_base64_dec(const xs_str *data, int *size)
29 
30     return s;
31 }
32-#endif
33+
34+#endif /* _XS_BASE64_H */
35 
36 
37 xs_str *_xs_digest(const xs_val *input, int size, const char *digest, int as_hex)
+1, -1
1@@ -1 +1 @@
2-/* e0835629880a2846ad69c02a63a9209d5dd34945 */
3+/* 1948fa3c5f0df994170cd38b9144b99734b071e6 */