Keep membership signature regressions on shared verifier

This commit is contained in:
evgeny committed 2026-10-18 02:18:21 +02:00
1 parent ade9401e05
commit ada1406d79
1 file changed
+6 -6
+6 -6
View File
@@ -54,16 +54,16 @@ static void sign_record(const struct UTUN_INSTANCE* author, uint64_t channel, st
static void check_author_rejection(struct UTUN_INSTANCE* inst) {
sqlite3_stmt* st = NULL; uint8_t key[32], tree[64];
assert(member_sync_sign_pubkey(owner_private, inst->my_keys.public_key, tree) == 0);
assert(fb_author_key(inst, "1001", inst->node_id, key) == 0 && !memcmp(key, inst->my_ed25519_pubkey, 32));
assert(member_sync_verified_ed25519(inst, "1001", inst->node_id, key) == 0 && !memcmp(key, inst->my_ed25519_pubkey, 32));
assert(sqlite3_prepare_v2(inst->topo_sqlite_db, "UPDATE peers_1001 SET signature=? WHERE node_id=?", -1, &st, NULL) == SQLITE_OK);
uint8_t zero[64] = {0}; sqlite3_bind_blob(st, 1, zero, 64, SQLITE_STATIC); sqlite3_bind_int64(st, 2, inst->node_id);
assert(sqlite3_step(st) == SQLITE_DONE && fb_author_key(inst, "1001", inst->node_id, key) < 0);
assert(sqlite3_step(st) == SQLITE_DONE && member_sync_verified_ed25519(inst, "1001", inst->node_id, key) < 0);
sqlite3_reset(st); sqlite3_bind_null(st, 1);
assert(sqlite3_step(st) == SQLITE_DONE && fb_author_key(inst, "1001", inst->node_id, key) < 0);
assert(sqlite3_step(st) == SQLITE_DONE && member_sync_verified_ed25519(inst, "1001", inst->node_id, key) < 0);
sqlite3_reset(st); tree[0] ^= 1; sqlite3_bind_blob(st, 1, tree, 64, SQLITE_STATIC);
assert(sqlite3_step(st) == SQLITE_DONE && fb_author_key(inst, "1001", inst->node_id, key) < 0);
assert(sqlite3_step(st) == SQLITE_DONE && member_sync_verified_ed25519(inst, "1001", inst->node_id, key) < 0);
sqlite3_reset(st); tree[0] ^= 1;
assert(sqlite3_step(st) == SQLITE_DONE && fb_author_key(inst, "1001", inst->node_id, key) == 0);
assert(sqlite3_step(st) == SQLITE_DONE && member_sync_verified_ed25519(inst, "1001", inst->node_id, key) == 0);
sqlite3_finalize(st);
puts("PASS: root author requires a valid channel signature; zero, missing and forged certificates are rejected");
}
@@ -81,7 +81,7 @@ static int check_profile_authors(const char* path) {
assert(sqlite3_prepare_v2(inst.topo_sqlite_db, sql, -1, &members, NULL) == SQLITE_OK);
int step;
while ((step = sqlite3_step(members)) == SQLITE_ROW) {
uint8_t key[32]; assert(fb_author_key(&inst, channel, sqlite3_column_int64(members, 0), key) == 0); total++;
uint8_t key[32]; assert(member_sync_verified_ed25519(&inst, channel, sqlite3_column_int64(members, 0), key) == 0); total++;
}
assert(step == SQLITE_DONE); sqlite3_finalize(members); members = NULL;
}