summaryrefslogtreecommitdiffstats
path: root/PICA_client.h
diff options
context:
space:
mode:
authorme_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac>2013-08-21 12:57:33 +0000
committerme_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac>2013-08-21 12:57:33 +0000
commit255f83d5109d7ddeab1c9a343292f2cfbcf10651 (patch)
treeaacdb6793cf3cbd73b549ba45d90e9c8508c7757 /PICA_client.h
parent14af4d5f8b4b59f463d4250fa1c2600e82d22fbe (diff)
downloadpica-pica-255f83d5109d7ddeab1c9a343292f2cfbcf10651.tar.gz
pica-pica-255f83d5109d7ddeab1c9a343292f2cfbcf10651.zip
changed client library code for handling new 224bit client id
git-svn-id: svn://localhost/project_picapica/trunk@262 fb96df88-216d-11de-830c-f3023f12d8ac
Diffstat (limited to 'PICA_client.h')
-rwxr-xr-xPICA_client.h36
1 files changed, 20 insertions, 16 deletions
diff --git a/PICA_client.h b/PICA_client.h
index d98a607..b71e8bf 100755
--- a/PICA_client.h
+++ b/PICA_client.h
@@ -36,6 +36,7 @@ typedef unsigned __int16 uint16_t;
#include <openssl/err.h>
#include <openssl/bio.h>
#include <openssl/rand.h>
+#include <openssl/sha.h>
#ifdef PICA_MULTITHREADED
@@ -83,6 +84,11 @@ typedef unsigned __int16 uint16_t;
#define PICA_CHAN_ACTIVATE_TIMEOUT 30
+#define PICA_ID_SIZE SHA224_DIGEST_LENGTH
+
+#define PICA_CHANNEL_INCOMING 0
+#define PICA_CHANNEL_OUTGOING 1
+
struct PICA_conninfo;
struct PICA_chaninfo;
@@ -90,13 +96,11 @@ struct PICA_conninfo
{
//#warning "sockaddr!"
struct sockaddr_in srv_addr; // sockaddr !!
-unsigned int id;
+unsigned char id[PICA_ID_SIZE]; //SHA224 hash of user's certificate in DER format
SSL_CTX* ctx;
SOCKET sck_comm;
SSL* ssl_comm;
-//сертификат клиента
-// unsigned char r_buf[128];
-// unsigned int r_pos;
+
int state;
@@ -116,7 +120,7 @@ unsigned char node_ver_major, node_ver_minor;
struct PICA_chaninfo
{
struct PICA_conninfo *conn;//соединение с сервером, через которое установлен данный логический канал связи
-unsigned int peer_id;//номер собеседника
+unsigned char peer_id[PICA_ID_SIZE];
SOCKET sck_data;
SSL *ssl;
int outgoing;//1 если создание канала инициировано локальным клиентом, 0 - если собеседником
@@ -138,24 +142,24 @@ time_t timestamp;
struct PICA_client_callbacks
{
//получение сообщения.
-void (*newmsg_cb)(unsigned int peer_id,char* msgbuf,unsigned int nb,int type);
+void (*newmsg_cb)(const unsigned char *peer_id,char* msgbuf,unsigned int nb,int type);
//получение подтверждения о доставке сообщения
-void (*msgok_cb)(unsigned int peer_id);
+void (*msgok_cb)(const unsigned char *peer_id);
//создание канала с собеседником
-void (*channel_established_cb)(unsigned int peer_id);
+void (*channel_established_cb)(const unsigned char *peer_id);
//создать канал не удалось
-void (*channel_failed)(unsigned int peer_id);
+void (*channel_failed)(const unsigned char *peer_id);
//входящий запрос на создание канала от пользователя с номером caller_id
//возвращаемое значение: 0 - отклонить запрос, ненулевое значение - принять запрос
-int (*accept_cb)(unsigned int caller_id);
+int (*accept_cb)(const unsigned char *caller_id);
//запрошенный пользователь не найден, в оффлайне или отказался от общения
-void (*notfound_cb)(unsigned int callee_id);
+void (*notfound_cb)(const unsigned char *callee_id);
//
-void (*channel_closed_cb)(unsigned int peer_id, int reason);
+void (*channel_closed_cb)(const unsigned char *peer_id, int reason);
void (*nodelist_cb)(int type, void *addr_bin, const char *addr_str, unsigned int port);
//сертификат собеседника в формате PEM. Функция должна сравнить предъявленный сертификат с сохранённым (если есть) и вернуть 1 при успешной проверке, 0 - при неуспешной
-int (*peer_cert_verify_cb)(unsigned int peer_id, const char *cert_pem, unsigned int nb);
+int (*peer_cert_verify_cb)(const unsigned char *peer_id, const char *cert_pem, unsigned int nb);
};
@@ -164,7 +168,8 @@ int (*peer_cert_verify_cb)(unsigned int peer_id, const char *cert_pem, unsigned
extern "C" {
#endif
-int PICA_get_id_from_cert(const char *cert_file, unsigned int *p_id);
+//read certificate from cert_file in PEM format, store id in buffer pointed by id
+int PICA_get_id_from_cert(const char *cert_file, unsigned char *id);
int PICA_client_init(struct PICA_client_callbacks *clcbs);
int PICA_new_connection
@@ -173,11 +178,10 @@ int PICA_new_connection
const char *CA_file,
const char *cert_file,
const char *pkey_file,
- //const char* password,
int (*password_cb)(char *buf, int size, int rwflag, void *userdata),
struct PICA_conninfo **ci);
-int PICA_create_channel(struct PICA_conninfo *ci,unsigned int uid,struct PICA_chaninfo **chn);
+int PICA_create_channel(struct PICA_conninfo *ci,const unsigned char *peer_id,struct PICA_chaninfo **chn);
int PICA_read_c2n(struct PICA_conninfo *ci);
int PICA_read(struct PICA_conninfo *ci,int timeout);