Adapt member and feedback tests to policy pages and join signatures

This commit is contained in:
evgeny committed 2026-11-03 15:59:00 +01:00
1 parent 1aa1678048
commit ff94ff38ea
2 files changed
+10 -7

No files matched your search

+5 -3
View File
@@ -111,7 +111,7 @@ static void add_member(struct UTUN_INSTANCE* dst, const struct UTUN_INSTANCE* au
uint8_t x[32] = {3}, ed[32], join[64], tree[64], body[112]; public_key(owner_private, ed);
assert(member_sync_build_join_msg(x, ed, author->node_id, author->my_keys.public_key, 1, body, sizeof(body)) == 112);
assert(sc_ed25519_sign(author->my_ed25519_privkey, body, sizeof(body), join) == SC_OK);
assert(member_sync_sign_pubkey(owner_private, author->my_keys.public_key, tree) == 0);
assert(member_sync_sign_join(owner_private, join, tree) == 0);
assert(member_sync_put(dst, channel, author->node_id, author->my_keys.public_key, author->my_ed25519_pubkey,
join, 1, NULL, 0, "", NULL, NULL, 0, 0, tree) >= 0);
}
@@ -127,7 +127,9 @@ 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);
uint8_t join[64]; uint64_t timestamp;
assert(!topo_node_sqlite_member_get_join(inst->topo_sqlite_db, "1001", inst->node_id, join, &timestamp));
assert(member_sync_sign_join(owner_private, join, tree) == 0);
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);
@@ -256,7 +258,7 @@ static void membership_regressions(struct UASYNC* ua) {
uint8_t channel_x[32] = {3}, channel_ed[32], body[112], join[64], invitation[64]; public_key(owner_private, channel_ed);
assert(member_sync_build_join_msg(channel_x, channel_ed, author.node_id, author.my_keys.public_key, 2, body, sizeof(body)) == 112);
assert(sc_ed25519_sign(author.my_ed25519_privkey, body, sizeof(body), join) == SC_OK);
assert(member_sync_sign_pubkey(inviter.my_ed25519_privkey, author.my_keys.public_key, invitation) == 0);
assert(member_sync_sign_join(inviter.my_ed25519_privkey, join, invitation) == 0);
struct ms_member_rec update = { .node_id = author.node_id, .x25519 = author.my_keys.public_key,
.ed25519 = author.my_ed25519_pubkey, .join_sig = join, .join_ts = 2, .userinfo = "",
.signed_by = inviter.node_id, .signature = invitation };
+5 -4
View File
@@ -323,12 +323,13 @@ int main(void) {
put(&source, 1); put(&source, 2);
uint8_t raw[2049], *page = raw + 1; /* проверяем невыровненный буфер */
size_t len = 300; merkle_key_t next, after = {{0}}; int more;
size_t len = 400; merkle_key_t next, after = {{0}}; int more;
assert(_member_get_page(&source, "1001", 0, 0, &after, page, &len, &next, &more) == 0);
assert(page[0] == 0 && page[1] == 1 && member_read64(next.bytes) == 1 && more == 1 && len <= 300);
assert(page[0] == 0 && page[1] == 1 && member_read64(next.bytes) == 1 && more == 1 && len <= 400);
struct member_wire w; size_t used;
assert(member_decode(page + 2, len - 2, &w, &used) == 0 && w.rec.node_id == 1 && used == len - 2);
len = 300;
assert(member_decode(page + 2 + GROUP_POLICY_WIRE_SIZE, len - 2 - GROUP_POLICY_WIRE_SIZE, &w, &used) == 0 &&
w.rec.node_id == 1 && used == len - 2 - GROUP_POLICY_WIRE_SIZE);
len = 400;
assert(_member_get_page(&source, "1001", 0, 1, &next, page, &len, &next, &more) == 0 && member_read64(next.bytes) == 2 && !more);
puts("PASS: bounded member pages, canonical integers and unaligned buffers");