diff options
| author | 2022-09-25 18:50:53 +0200 | |
|---|---|---|
| committer | 2022-09-25 18:50:53 +0200 | |
| commit | 6f7f98ded3005d9c29295dfff42dbf81bba1f62a (patch) | |
| tree | 4194cd2018e08feffc31f5da58676e2a57d58d9d /http.c | |
| parent | New function timeline_request(). (diff) | |
| download | penes-snac2-6f7f98ded3005d9c29295dfff42dbf81bba1f62a.tar.gz penes-snac2-6f7f98ded3005d9c29295dfff42dbf81bba1f62a.tar.xz penes-snac2-6f7f98ded3005d9c29295dfff42dbf81bba1f62a.zip | |
Fixed a bug in the digest header.
Diffstat (limited to 'http.c')
| -rw-r--r-- | http.c | 17 |
1 files changed, 12 insertions, 5 deletions
| @@ -17,7 +17,7 @@ d_char *http_signed_request(snac *snac, char *method, char *url, | |||
| 17 | { | 17 | { |
| 18 | xs *l1; | 18 | xs *l1; |
| 19 | xs *date; | 19 | xs *date; |
| 20 | xs *digest; | 20 | xs *digest_b64, *digest; |
| 21 | xs *s64; | 21 | xs *s64; |
| 22 | xs *signature; | 22 | xs *signature; |
| 23 | xs *hdrs; | 23 | xs *hdrs; |
| @@ -25,6 +25,7 @@ d_char *http_signed_request(snac *snac, char *method, char *url, | |||
| 25 | char *target; | 25 | char *target; |
| 26 | char *seckey; | 26 | char *seckey; |
| 27 | char *k, *v; | 27 | char *k, *v; |
| 28 | d_char *response; | ||
| 28 | 29 | ||
| 29 | date = xs_utc_time("%a, %d %b %Y %H:%M:%S GMT"); | 30 | date = xs_utc_time("%a, %d %b %Y %H:%M:%S GMT"); |
| 30 | 31 | ||
| @@ -43,9 +44,11 @@ d_char *http_signed_request(snac *snac, char *method, char *url, | |||
| 43 | 44 | ||
| 44 | /* digest */ | 45 | /* digest */ |
| 45 | if (body != NULL) | 46 | if (body != NULL) |
| 46 | digest = xs_sha256_base64(body, b_size); | 47 | digest_b64 = xs_sha256_base64(body, b_size); |
| 47 | else | 48 | else |
| 48 | digest = xs_sha256_base64("", 0); | 49 | digest_b64 = xs_sha256_base64("", 0); |
| 50 | |||
| 51 | digest = xs_fmt("SHA-256=%s", digest_b64); | ||
| 49 | 52 | ||
| 50 | seckey = xs_dict_get(snac->key, "secret"); | 53 | seckey = xs_dict_get(snac->key, "secret"); |
| 51 | 54 | ||
| @@ -53,7 +56,7 @@ d_char *http_signed_request(snac *snac, char *method, char *url, | |||
| 53 | /* build the string to be signed */ | 56 | /* build the string to be signed */ |
| 54 | xs *s = xs_fmt("(request-target): %s /%s\n" | 57 | xs *s = xs_fmt("(request-target): %s /%s\n" |
| 55 | "host: %s\n" | 58 | "host: %s\n" |
| 56 | "digest: SHA-256=%s\n" | 59 | "digest: %s\n" |
| 57 | "date: %s", | 60 | "date: %s", |
| 58 | strcmp(method, "POST") == 0 ? "post" : "get", | 61 | strcmp(method, "POST") == 0 ? "post" : "get", |
| 59 | target, host, digest, date); | 62 | target, host, digest, date); |
| @@ -81,6 +84,10 @@ d_char *http_signed_request(snac *snac, char *method, char *url, | |||
| 81 | hdrs = xs_dict_append(hdrs, "digest", digest); | 84 | hdrs = xs_dict_append(hdrs, "digest", digest); |
| 82 | hdrs = xs_dict_append(hdrs, "user-agent", "snac/2.x"); | 85 | hdrs = xs_dict_append(hdrs, "user-agent", "snac/2.x"); |
| 83 | 86 | ||
| 84 | return xs_http_request(method, url, hdrs, | 87 | response = xs_http_request(method, url, hdrs, |
| 85 | body, b_size, status, payload, p_size); | 88 | body, b_size, status, payload, p_size); |
| 89 | |||
| 90 | srv_archive("SEND", hdrs, body, b_size, *status, response, *payload, *p_size); | ||
| 91 | |||
| 92 | return response; | ||
| 86 | } | 93 | } |