diff options
-rw-r--r-- | ecp/README | 22 | ||||
-rw-r--r-- | ecp/test/client.c | 4 | ||||
-rw-r--r-- | ecp/test/server.c | 2 | ||||
-rw-r--r-- | ecp/test/vc_client.c | 11 | ||||
-rw-r--r-- | ecp/test/vc_inb.c | 6 | ||||
-rw-r--r-- | ecp/test/vc_outb.c | 8 | ||||
-rw-r--r-- | ecp/test/vc_server.c | 13 | ||||
-rw-r--r-- | ecp/test/vcs.c | 35 |
8 files changed, 68 insertions, 33 deletions
@@ -9,16 +9,16 @@ To (re)build library, utilities and tests simply do: ./build.sh (MAKE=gmake ./build.sh on *BSD systems) In tests subdirectory you will find simple test examples. To test vc_server and vc_client (vconn feature) do: - util/mknode n1 - util/mknode n2 - util/mknode n3 - util/mknode server - cd tests + mkdir test/keys + util/keygen test/keys/n1.pub test/keys/n1.priv + util/keygen test/keys/n2.pub test/keys/n2.priv + util/keygen test/keys/n3.pub test/keys/n3.priv + util/keygen test/keys/server.pub test/keys/server.priv + cd test Then launch servers (each in its own terminal): - ./vcs 0.0.0.0:3001 ../n1.priv - ./vcs 0.0.0.0:3002 ../n2.priv 127.0.0.1:3001 ../n1.pub - ./vcs 0.0.0.0:3003 ../n3.priv 127.0.0.1:3002 ../n2.pub - ./vc_server ../server.priv 127.0.0.1:3001 ../n1.pub ../n2.pub ../n3.pub - ./vc_client ../server.pub 127.0.0.1:3001 ../n1.pub ../n2.pub ../n3.pub -
\ No newline at end of file + ./vcs 0.0.0.0:3001 keys/n1.priv + ./vcs 0.0.0.0:3002 keys/n2.priv 127.0.0.1:3001 keys/n1.pub + ./vcs 0.0.0.0:3003 keys/n3.priv 127.0.0.1:3002 keys/n2.pub + ./vc_server keys/server.priv 127.0.0.1:3001 keys/n1.pub keys/n2.pub keys/n3.pub + ./vc_client keys/server.pub 127.0.0.1:3001 keys/n1.pub keys/n2.pub keys/n3.pub diff --git a/ecp/test/client.c b/ecp/test/client.c index 52a8587..af905d5 100644 --- a/ecp/test/client.c +++ b/ecp/test/client.c @@ -64,8 +64,8 @@ int main(int argc, char *argv[]) { rv = ecp_start_receiver(&sock); printf("ecp_start_receiver RV:%d\n", rv); - rv = ecp_util_load_pub(&node_pub, argv[2]); - printf("ecp_util_load_pub RV:%d\n", rv); + rv = ecp_util_load_key(argv[2], &node_pub, NULL); + printf("ecp_util_load_key RV:%d\n", rv); ecp_node_init(&node, &node_pub, NULL); rv = ecp_node_set_addr(&node, argv[1]); diff --git a/ecp/test/server.c b/ecp/test/server.c index 19b2f4f..003e3b3 100644 --- a/ecp/test/server.c +++ b/ecp/test/server.c @@ -46,7 +46,7 @@ int main(int argc, char *argv[]) { ecp_conn_handler_init(&handler, handle_msg, NULL, NULL, NULL); ecp_ctx_set_handler(&ctx, CTYPE_TEST, &handler); - rv = ecp_util_load_key(&key_perma.public, &key_perma.private, argv[2]); + rv = ecp_util_load_key(argv[2], &key_perma.public, &key_perma.private); printf("ecp_util_load_key RV:%d\n", rv); key_perma.valid = 1; diff --git a/ecp/test/vc_client.c b/ecp/test/vc_client.c index 41c364d..af4a3cd 100644 --- a/ecp/test/vc_client.c +++ b/ecp/test/vc_client.c @@ -63,22 +63,25 @@ int main(int argc, char *argv[]) { rv = ecp_sock_create(&sock, &ctx, &key_perma); printf("ecp_sock_create RV:%d\n", rv); + rv = ecp_vconn_sock_create(&sock); + printf("ecp_vconn_htable_init RV:%d\n", rv); + rv = ecp_sock_open(&sock, NULL); printf("ecp_sock_open RV:%d\n", rv); rv = ecp_start_receiver(&sock); printf("ecp_start_receiver RV:%d\n", rv); - rv = ecp_util_load_pub(&node_pub, argv[1]); - printf("ecp_util_load_pub RV:%d\n", rv); + rv = ecp_util_load_key(argv[1], &node_pub, NULL); + printf("ecp_util_load_key RV:%d\n", rv); ecp_node_init(&node, &node_pub, NULL); rv = ecp_node_set_addr(&node, argv[2]); printf("ecp_node_set_addr RV:%d\n", rv); for (i=3; i<argc; i++) { - rv = ecp_util_load_pub(&vconn_pub[i-3], argv[i]); - printf("ecp_util_load_pub RV:%d\n", rv); + rv = ecp_util_load_key(argv[i], &vconn_pub[i-3], NULL); + printf("ecp_util_load_key RV:%d\n", rv); } ecp_conn_init(&conn, &sock, CTYPE_TEST); diff --git a/ecp/test/vc_inb.c b/ecp/test/vc_inb.c index 13b493c..825d948 100644 --- a/ecp/test/vc_inb.c +++ b/ecp/test/vc_inb.c @@ -93,7 +93,7 @@ int main(int argc, char *argv[]) { ecp_conn_handler_init(&handler, handle_msg, handle_open, NULL, NULL); ecp_ctx_set_handler(&ctx, CTYPE_TEST, &handler); - rv = ecp_util_load_key(&key_perma.public, &key_perma.private, argv[1]); + rv = ecp_util_load_key(argv[1], &key_perma.public, &key_perma.private); printf("ecp_util_load_key RV:%d\n", rv); key_perma.valid = 1; @@ -106,8 +106,8 @@ int main(int argc, char *argv[]) { rv = ecp_start_receiver(&sock); printf("ecp_start_receiver RV:%d\n", rv); - rv = ecp_util_load_pub(&dir_pub, argv[2]); - printf("ecp_util_load_pub RV:%d\n", rv); + rv = ecp_util_load_key(argv[2], &dir_pub, NULL); + printf("ecp_util_load_key RV:%d\n", rv); ecp_node_init(&node_dir, &dir_pub, NULL); rv = ecp_node_set_addr(&node_dir, argv[3]); diff --git a/ecp/test/vc_outb.c b/ecp/test/vc_outb.c index 6018602..cc772d5 100644 --- a/ecp/test/vc_outb.c +++ b/ecp/test/vc_outb.c @@ -107,11 +107,11 @@ int main(int argc, char *argv[]) { rv = ecp_start_receiver(&sock); printf("ecp_start_receiver RV:%d\n", rv); - rv = ecp_util_load_pub(&remote_pub, argv[1]); - printf("ecp_util_load_pub RV:%d\n", rv); + rv = ecp_util_load_key(argv[1], &remote_pub, NULL); + printf("ecp_util_load_key RV:%d\n", rv); - rv = ecp_util_load_pub(&dir_pub, argv[2]); - printf("ecp_util_load_pub RV:%d\n", rv); + rv = ecp_util_load_key(argv[2], &dir_pub, NULL); + printf("ecp_util_load_key RV:%d\n", rv); ecp_node_init(&node_dir, &dir_pub, NULL); rv = ecp_node_set_addr(&node_dir, argv[3]); diff --git a/ecp/test/vc_server.c b/ecp/test/vc_server.c index 548b52d..daf35f8 100644 --- a/ecp/test/vc_server.c +++ b/ecp/test/vc_server.c @@ -56,21 +56,24 @@ int main(int argc, char *argv[]) { ecp_conn_handler_init(&handler, handle_msg, handle_open, NULL, NULL); ecp_ctx_set_handler(&ctx, CTYPE_TEST, &handler); - rv = ecp_util_load_key(&key_perma.public, &key_perma.private, argv[1]); + rv = ecp_util_load_key(argv[1], &key_perma.public, &key_perma.private); printf("ecp_util_load_key RV:%d\n", rv); key_perma.valid = 1; rv = ecp_sock_create(&sock, &ctx, &key_perma); printf("ecp_sock_create RV:%d\n", rv); + rv = ecp_vconn_sock_create(&sock); + printf("ecp_vconn_htable_init RV:%d\n", rv); + rv = ecp_sock_open(&sock, NULL); printf("ecp_sock_open RV:%d\n", rv); rv = ecp_start_receiver(&sock); printf("ecp_start_receiver RV:%d\n", rv); - rv = ecp_util_load_pub(&node_pub, argv[argc-1]); - printf("ecp_util_load_pub RV:%d\n", rv); + rv = ecp_util_load_key(argv[argc-1], &node_pub, NULL); + printf("ecp_util_load_key RV:%d\n", rv); ecp_node_init(&node, &node_pub, NULL); rv = ecp_node_set_addr(&node, argv[2]); @@ -81,8 +84,8 @@ int main(int argc, char *argv[]) { ecp_ecdh_public_t vconn_pub[3]; for (i=3; i<argc-1; i++) { - rv = ecp_util_load_pub(&vconn_pub[i-3], argv[i]); - printf("ecp_util_load_pub RV:%d\n", rv); + rv = ecp_util_load_key(argv[i], &vconn_pub[i-3], NULL); + printf("ecp_util_load_key RV:%d\n", rv); } ecp_vconn_init(vconn, vconn_pub, argc-4, &sock); diff --git a/ecp/test/vcs.c b/ecp/test/vcs.c index 92d1eb2..4f4564b 100644 --- a/ecp/test/vcs.c +++ b/ecp/test/vcs.c @@ -21,6 +21,29 @@ static void usage(char *arg) { exit(1); } +static int vlink_handle_open(ECPConnection *_conn, ECP2Buffer *bufs) { + int rv; + + /* open return connection */ + if ((_conn->parent == NULL) && ecp_conn_is_inb(_conn) && (memcmp(&_conn->remote.key_perma.public, &conn.remote.key_perma.public, sizeof(conn.remote.key_perma.public)) != 0)) { + ECPNode node; + ECPConnection *conn_r; + + ecp_node_init(&node, &_conn->remote.key_perma.public, &_conn->remote.addr); + + conn_r = malloc(sizeof(ECPConnection)); + if (conn_r == NULL) return ECP_ERR_ALLOC; + + ecp_vlink_init(conn_r, _conn->sock); + rv = ecp_conn_open(conn_r, &node); + printf("open return connection: ecp_conn_open RV:%d\n", rv); + if (rv) return rv; + } + + rv = ecp_vlink_handle_open(_conn, bufs); + return rv; +} + int main(int argc, char *argv[]) { ecp_tr_addr_t addr; ECPDHKey key_perma; @@ -30,14 +53,18 @@ int main(int argc, char *argv[]) { rv = ecp_init(&ctx, &vconn_handler, &vlink_handler); printf("ecp_init RV:%d\n", rv); + vlink_handler.handle_open = vlink_handle_open; - rv = ecp_util_load_key(&key_perma.public, &key_perma.private, argv[2]); + rv = ecp_util_load_key(argv[2], &key_perma.public, &key_perma.private); printf("ecp_util_load_key RV:%d\n", rv); key_perma.valid = 1; rv = ecp_sock_create(&sock, &ctx, &key_perma); printf("ecp_sock_create RV:%d\n", rv); + rv = ecp_vconn_sock_create(&sock); + printf("ecp_vconn_htable_init RV:%d\n", rv); + rv = ecp_addr_init(&addr, argv[1]); printf("ecp_addr_init RV:%d\n", rv); @@ -51,8 +78,8 @@ int main(int argc, char *argv[]) { ECPNode node; ecp_ecdh_public_t node_pub; - rv = ecp_util_load_pub(&node_pub, argv[4]); - printf("ecp_util_load_pub RV:%d\n", rv); + rv = ecp_util_load_key(argv[4], &node_pub, NULL); + printf("ecp_util_load_key RV:%d\n", rv); ecp_node_init(&node, &node_pub, NULL); rv = ecp_node_set_addr(&node, argv[3]); @@ -61,6 +88,8 @@ int main(int argc, char *argv[]) { ecp_vlink_init(&conn, &sock); rv = ecp_conn_open(&conn, &node); printf("ecp_conn_open RV:%d\n", rv); + } else { + memset(&conn, 0, sizeof(conn)); } while (1) sleep(1); |