commit 384cb74
default
·
2023-01-08 08:55:13 +0000 UTC
parent 315a43a
Minor refactor to check_signature().
1 files changed,
+13,
-10
M
http.c
M
http.c
+13,
-10
1@@ -139,8 +139,8 @@ int check_signature(snac *snac, char *req)
2 }
3
4 if (keyId == NULL || headers == NULL || signature == NULL) {
5- snac_debug(snac, 1, xs_fmt("bad signature header"));
6- return 0;
7+ snac_debug(snac, 0, xs_fmt("check_signature bad signature header"));
8+ goto error;
9 }
10
11 /* strip the # from the keyId */
12@@ -150,14 +150,14 @@ int check_signature(snac *snac, char *req)
13 /* the actor must already be here */
14 xs *actor = NULL;
15 if (!valid_status(actor_get(snac, keyId, &actor))) {
16- snac_debug(snac, 1, xs_fmt("check_signature unknown actor %s", keyId));
17- return 0;
18+ snac_debug(snac, 0, xs_fmt("check_signature unknown actor %s", keyId));
19+ goto error;
20 }
21
22 if ((p = xs_dict_get(actor, "publicKey")) == NULL ||
23 ((pubkey = xs_dict_get(p, "publicKeyPem")) == NULL)) {
24- snac_debug(snac, 1, xs_fmt("cannot get pubkey from actor %s", keyId));
25- return 0;
26+ snac_debug(snac, 0, xs_fmt("check_signature cannot get pubkey from %s", keyId));
27+ goto error;
28 }
29
30 /* now build the string to be signed */
31@@ -189,10 +189,10 @@ int check_signature(snac *snac, char *req)
32 else {
33 /* add the header */
34 if ((hc = xs_dict_get(req, v)) == NULL) {
35- snac_debug(snac, 1,
36+ snac_debug(snac, 0,
37 xs_fmt("check_signature cannot find header %s", v));
38
39- return 0;
40+ goto error;
41 }
42
43 ss = xs_fmt("%s: %s", v, hc);
44@@ -203,9 +203,12 @@ int check_signature(snac *snac, char *req)
45 }
46
47 if (xs_evp_verify(pubkey, sig_str, strlen(sig_str), signature) != 1) {
48- snac_debug(snac, 0, xs_fmt("rsa verify error %s", keyId));
49- return 0;
50+ snac_debug(snac, 0, xs_fmt("check_signature rsa verify error %s", keyId));
51+ goto error;
52 }
53
54 return 1;
55+
56+error:
57+ return 0;
58 }