From 6a52b3cb6c700097f07bd88f6f9844df8fc9d083 Mon Sep 17 00:00:00 2001 From: dubslow Date: Wed, 19 Nov 2014 20:36:09 -0600 Subject: [PATCH] get peer pubkey api --- toxcore/group.c | 20 ++++++++++++++++++++ toxcore/group.h | 8 ++++++++ toxcore/tox.c | 12 ++++++++++++ toxcore/tox.h | 8 ++++++++ 4 files changed, 48 insertions(+) diff --git a/toxcore/group.c b/toxcore/group.c index 1a17e83a..329a9709 100644 --- a/toxcore/group.c +++ b/toxcore/group.c @@ -722,6 +722,26 @@ int del_groupchat(Group_Chats *g_c, int groupnumber) return wipe_group_chat(g_c, groupnumber); } +/* Copy the public key of peernumber who is in groupnumber to pk. + * pk must be crypto_box_PUBLICKEYBYTES long. + * + * returns 0 on success + * returns -1 on failure + */ +int group_peer_pubkey(const Group_Chats *g_c, int groupnumber, int peernumber, uint8_t *pk) +{ + Group_c *g = get_group_c(g_c, groupnumber); + + if (!g) + return -1; + + if ((uint32_t)peernumber >= g->numpeers) + return -1; + + memcpy(pk, g->group[peernumber].real_pk, crypto_box_PUBLICKEYBYTES); + return 0; +} + /* Copy the name of peernumber who is in groupnumber to name. * name must be at least MAX_NAME_LENGTH long. * diff --git a/toxcore/group.h b/toxcore/group.h index f4d93c9a..8ae0e40e 100644 --- a/toxcore/group.h +++ b/toxcore/group.h @@ -192,6 +192,14 @@ int add_groupchat(Group_Chats *g_c, uint8_t type); */ int del_groupchat(Group_Chats *g_c, int groupnumber); +/* Copy the public key of peernumber who is in groupnumber to pk. + * pk must be crypto_box_PUBLICKEYBYTES long. + * + * returns 0 on success + * returns -1 on failure + */ +int group_peer_pubkey(const Group_Chats *g_c, int groupnumber, int peernumber, uint8_t *pk); + /* Copy the name of peernumber who is in groupnumber to name. * name must be at least MAX_NAME_LENGTH long. * diff --git a/toxcore/tox.c b/toxcore/tox.c index f73ac285..933f0f71 100644 --- a/toxcore/tox.c +++ b/toxcore/tox.c @@ -641,6 +641,18 @@ int tox_group_peername(const Tox *tox, int groupnumber, int peernumber, uint8_t return group_peername(m->group_chat_object, groupnumber, peernumber, name); } +/* Copy the public key of peernumber who is in groupnumber to pk. + * pk must be TOX_CLIENT_ID_SIZE long. + * + * returns 0 on success + * returns -1 on failure + */ +int tox_group_peer_pubkey(const Tox *tox, int groupnumber, int peernumber, uint8_t *pk) +{ + const Messenger *m = tox; + return group_peer_pubkey(m->group_chat_object, groupnumber, peernumber, pk); +} + /* invite friendnumber to groupnumber * return 0 on success * return -1 on failure diff --git a/toxcore/tox.h b/toxcore/tox.h index 4caf4d26..5f3204e4 100644 --- a/toxcore/tox.h +++ b/toxcore/tox.h @@ -496,6 +496,14 @@ int tox_del_groupchat(Tox *tox, int groupnumber); */ int tox_group_peername(const Tox *tox, int groupnumber, int peernumber, uint8_t *name); +/* Copy the public key of peernumber who is in groupnumber to pk. + * pk must be TOX_CLIENT_ID_SIZE long. + * + * returns 0 on success + * returns -1 on failure + */ +int tox_group_peer_pubkey(const Tox *tox, int groupnumber, int peernumber, uint8_t *pk); + /* invite friendnumber to groupnumber * return 0 on success * return -1 on failure