commit 4a275d08525df830c96135a5aa3de4f1778532aa
parent 4a1d3ba410f6aae3d523bca151bfd026c7454312
Author: William Casarin <jb55@jb55.com>
Date: Sat, 16 Jan 2021 16:03:26 -0800
add build_sigbuf helper
we might want to do this when writing activities instead
Signed-off-by: William Casarin <jb55@jb55.com>
Diffstat:
1 file changed, 27 insertions(+), 14 deletions(-)
diff --git a/src/sigcheck.c b/src/sigcheck.c
@@ -41,12 +41,36 @@ static int push_header(struct ubjson *ubjson, struct cursor *arena,
return push_data(arena, (unsigned char*)val.string, val.len);
}
+static int build_sigbuf(struct sig_header *sig, struct ubjson *ubjson,
+ struct cursor *arena, unsigned char **sigbuf, int *sigbuf_len)
+{
+ unsigned char *p, *pstart;
+
+ *sigbuf = arena->p;
+ pstart = p = (unsigned char*)sig->headers;
+ for (;; p++) {
+ if (*p == ' ' || *p == 0) {
+ if (!push_header(ubjson, arena, pstart, p-pstart)) {
+ return 0;
+ }
+ pstart = p+1;
+ }
+
+ if (*p == 0)
+ break;
+ }
+
+ *sigbuf_len = arena->p - *sigbuf;
+
+ return 1;
+}
+
static int verify_signature(struct cursor cur, struct cursor *arena)
{
struct ubjson ubjson;
struct json val;
struct sig_header sig;
- unsigned char *p, *pstart, *sigbuf;
+ unsigned char *sigbuf;
int sigbuf_len;
init_ubjson(&ubjson, cur.start, cur.p - cur.start);
@@ -64,21 +88,10 @@ static int verify_signature(struct cursor cur, struct cursor *arena)
return 0;
}
- sigbuf = arena->p;
- pstart = p = (unsigned char*)sig.headers;
- for (;; p++) {
- if (*p == ' ' || *p == 0) {
- if (!push_header(&ubjson, arena, pstart, p-pstart)) {
- return 0;
- }
- pstart = p+1;
- }
-
- if (*p == 0)
- break;
+ if (!build_sigbuf(&sig, &ubjson, arena, &sigbuf, &sigbuf_len)) {
+ return 0;
}
- sigbuf_len = arena->p - sigbuf;
printf("sigbuf: %.*s\n", sigbuf_len, sigbuf);
return 1;