aboutsummaryrefslogtreecommitdiff
path: root/activitypub.c
diff options
context:
space:
mode:
authorgrunfink <grunfink@comam.es>2026-06-24 08:45:27 +0200
committergrunfink <grunfink@comam.es>2026-06-24 08:45:27 +0200
commitbe894b379e72126a28c1aeaa79d4c5eab787638a (patch)
tree0a430b33508bcd299a0f440502e537913061af8a /activitypub.c
parenta0fada72cc4829d757a8691d214069b27aa80fbb (diff)
Added an new keyId check.
Diffstat (limited to 'activitypub.c')
-rw-r--r--activitypub.c10
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;