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 }