diff options
| author | grunfink <grunfink@comam.es> | 2026-06-24 08:45:27 +0200 |
|---|---|---|
| committer | grunfink <grunfink@comam.es> | 2026-06-24 08:45:27 +0200 |
| commit | be894b379e72126a28c1aeaa79d4c5eab787638a (patch) | |
| tree | 0a430b33508bcd299a0f440502e537913061af8a /activitypub.c | |
| parent | a0fada72cc4829d757a8691d214069b27aa80fbb (diff) | |
Added an new keyId check.
Diffstat (limited to 'activitypub.c')
| -rw-r--r-- | activitypub.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/activitypub.c b/activitypub.c index 1357b6e..845d92f 100644 --- a/activitypub.c +++ b/activitypub.c @@ -2686,14 +2686,22 @@ int process_input_message(snac *snac, const xs_dict *msg, const xs_dict *req) /* check the signature */ xs *sig_err = NULL; + xs *key_id = NULL; - if (!check_signature(req, &sig_err)) { + if (!check_signature(req, &sig_err, &key_id)) { srv_log(xs_fmt("bad signature %s (%s)", actor, sig_err)); srv_archive_error("check_signature", sig_err, req, msg); return -1; } + if (strcmp(actor, key_id) != 0) { + srv_log(xs_fmt("mismatched actor '%s' and key '%s'", actor, key_id)); + + srv_archive_error("mismatched_actor_and_key", "bad keyId", req, msg); + return -1; + } + /* if no user is set, no further checks can be done; propagate */ if (snac == NULL) return 2; |