commit 970ad7a
default
·
2023-05-17 08:08:57 +0000 UTC
parent 7f1b87a
Got rid of xs_encdec.h.
M
Makefile
+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"
M
httpd.c
+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"
M
utils.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_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 */