BLOG | DOCUMENTATION | TRAC

Home --> Documentations --> PJLIB Reference

ssl_sock.h
Go to the documentation of this file.
1 /* $Id$ */
2 /*
3  * Copyright (C) 2009-2011 Teluu Inc. (http://www.teluu.com)
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  */
19 #ifndef __PJ_SSL_SOCK_H__
20 #define __PJ_SSL_SOCK_H__
21 
27 #include <pj/ioqueue.h>
28 #include <pj/sock.h>
29 #include <pj/sock_qos.h>
30 
31 
33 
54 
55 
61 
62 
64 {
69 
74 
79 
84 
90 
95 
102 
107 
112 
117 
125 
130 
132 
133 
134 typedef enum pj_ssl_cert_name_type
135 {
136  PJ_SSL_CERT_NAME_UNKNOWN = 0,
137  PJ_SSL_CERT_NAME_RFC822,
138  PJ_SSL_CERT_NAME_DNS,
139  PJ_SSL_CERT_NAME_URI,
140  PJ_SSL_CERT_NAME_IP
141 } pj_ssl_cert_name_type;
142 
146 typedef struct pj_ssl_cert_info {
147 
148  unsigned version;
154  struct {
159  } subject;
161  struct {
162  pj_str_t cn;
163  pj_str_t info;
165  } issuer;
167  struct {
172  } validity;
174  struct {
175  unsigned cnt;
176  struct {
177  pj_ssl_cert_name_type type;
180  } *entry;
181  } subj_alt_name;
187  struct {
188  unsigned cnt;
189  pj_str_t *cert_raw;
190  } raw_chain;
191 
193 
198 
214  const pj_str_t *CA_file,
215  const pj_str_t *cert_file,
216  const pj_str_t *privkey_file,
217  const pj_str_t *privkey_pass,
218  pj_ssl_cert_t **p_cert);
219 
240  pj_pool_t *pool,
241  const pj_str_t *CA_file,
242  const pj_str_t *CA_path,
243  const pj_str_t *cert_file,
244  const pj_str_t *privkey_file,
245  const pj_str_t *privkey_pass,
246  pj_ssl_cert_t **p_cert);
247 
248 
262  const pj_ssl_cert_buffer *CA_buf,
263  const pj_ssl_cert_buffer *cert_buf,
264  const pj_ssl_cert_buffer *privkey_buf,
265  const pj_str_t *privkey_pass,
266  pj_ssl_cert_t **p_cert);
267 
280  const char *indent,
281  char *buf,
282  pj_size_t buf_size);
283 
284 
298  pj_uint32_t verify_status,
299  const char *error_strings[],
300  unsigned *count);
301 
308 PJ_DECL(void) pj_ssl_cert_wipe_keys(pj_ssl_cert_t *cert);
309 
310 
314 typedef enum pj_ssl_cipher {
315 
316  /* Unsupported cipher */
317  PJ_TLS_UNKNOWN_CIPHER = -1,
318 
319  /* NULL */
320  PJ_TLS_NULL_WITH_NULL_NULL = 0x00000000,
321 
322  /* TLS/SSLv3 */
323  PJ_TLS_RSA_WITH_NULL_MD5 = 0x00000001,
324  PJ_TLS_RSA_WITH_NULL_SHA = 0x00000002,
325  PJ_TLS_RSA_WITH_NULL_SHA256 = 0x0000003B,
326  PJ_TLS_RSA_WITH_RC4_128_MD5 = 0x00000004,
327  PJ_TLS_RSA_WITH_RC4_128_SHA = 0x00000005,
328  PJ_TLS_RSA_WITH_3DES_EDE_CBC_SHA = 0x0000000A,
329  PJ_TLS_RSA_WITH_AES_128_CBC_SHA = 0x0000002F,
330  PJ_TLS_RSA_WITH_AES_256_CBC_SHA = 0x00000035,
331  PJ_TLS_RSA_WITH_AES_128_CBC_SHA256 = 0x0000003C,
332  PJ_TLS_RSA_WITH_AES_256_CBC_SHA256 = 0x0000003D,
333  PJ_TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA = 0x0000000D,
334  PJ_TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA = 0x00000010,
335  PJ_TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA = 0x00000013,
336  PJ_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA = 0x00000016,
337  PJ_TLS_DH_DSS_WITH_AES_128_CBC_SHA = 0x00000030,
338  PJ_TLS_DH_RSA_WITH_AES_128_CBC_SHA = 0x00000031,
339  PJ_TLS_DHE_DSS_WITH_AES_128_CBC_SHA = 0x00000032,
340  PJ_TLS_DHE_RSA_WITH_AES_128_CBC_SHA = 0x00000033,
341  PJ_TLS_DH_DSS_WITH_AES_256_CBC_SHA = 0x00000036,
342  PJ_TLS_DH_RSA_WITH_AES_256_CBC_SHA = 0x00000037,
343  PJ_TLS_DHE_DSS_WITH_AES_256_CBC_SHA = 0x00000038,
344  PJ_TLS_DHE_RSA_WITH_AES_256_CBC_SHA = 0x00000039,
345  PJ_TLS_DH_DSS_WITH_AES_128_CBC_SHA256 = 0x0000003E,
346  PJ_TLS_DH_RSA_WITH_AES_128_CBC_SHA256 = 0x0000003F,
347  PJ_TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 = 0x00000040,
348  PJ_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 = 0x00000067,
349  PJ_TLS_DH_DSS_WITH_AES_256_CBC_SHA256 = 0x00000068,
350  PJ_TLS_DH_RSA_WITH_AES_256_CBC_SHA256 = 0x00000069,
351  PJ_TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 = 0x0000006A,
352  PJ_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 = 0x0000006B,
353  PJ_TLS_DH_anon_WITH_RC4_128_MD5 = 0x00000018,
354  PJ_TLS_DH_anon_WITH_3DES_EDE_CBC_SHA = 0x0000001B,
355  PJ_TLS_DH_anon_WITH_AES_128_CBC_SHA = 0x00000034,
356  PJ_TLS_DH_anon_WITH_AES_256_CBC_SHA = 0x0000003A,
357  PJ_TLS_DH_anon_WITH_AES_128_CBC_SHA256 = 0x0000006C,
358  PJ_TLS_DH_anon_WITH_AES_256_CBC_SHA256 = 0x0000006D,
359 
360  /* TLS (deprecated) */
361  PJ_TLS_RSA_EXPORT_WITH_RC4_40_MD5 = 0x00000003,
362  PJ_TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = 0x00000006,
363  PJ_TLS_RSA_WITH_IDEA_CBC_SHA = 0x00000007,
364  PJ_TLS_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x00000008,
365  PJ_TLS_RSA_WITH_DES_CBC_SHA = 0x00000009,
366  PJ_TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA = 0x0000000B,
367  PJ_TLS_DH_DSS_WITH_DES_CBC_SHA = 0x0000000C,
368  PJ_TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x0000000E,
369  PJ_TLS_DH_RSA_WITH_DES_CBC_SHA = 0x0000000F,
370  PJ_TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA = 0x00000011,
371  PJ_TLS_DHE_DSS_WITH_DES_CBC_SHA = 0x00000012,
372  PJ_TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x00000014,
373  PJ_TLS_DHE_RSA_WITH_DES_CBC_SHA = 0x00000015,
374  PJ_TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 = 0x00000017,
375  PJ_TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA = 0x00000019,
376  PJ_TLS_DH_anon_WITH_DES_CBC_SHA = 0x0000001A,
377 
378  /* SSLv3 */
379  PJ_SSL_FORTEZZA_KEA_WITH_NULL_SHA = 0x0000001C,
380  PJ_SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA = 0x0000001D,
381  PJ_SSL_FORTEZZA_KEA_WITH_RC4_128_SHA = 0x0000001E,
382 
383  /* SSLv2 */
384  PJ_SSL_CK_RC4_128_WITH_MD5 = 0x00010080,
385  PJ_SSL_CK_RC4_128_EXPORT40_WITH_MD5 = 0x00020080,
386  PJ_SSL_CK_RC2_128_CBC_WITH_MD5 = 0x00030080,
387  PJ_SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5 = 0x00040080,
388  PJ_SSL_CK_IDEA_128_CBC_WITH_MD5 = 0x00050080,
389  PJ_SSL_CK_DES_64_CBC_WITH_MD5 = 0x00060040,
390  PJ_SSL_CK_DES_192_EDE3_CBC_WITH_MD5 = 0x000700C0
391 
392 } pj_ssl_cipher;
393 
394 
404  unsigned *cipher_num);
405 
406 
415 
416 
425 PJ_DECL(const char*) pj_ssl_cipher_name(pj_ssl_cipher cipher);
426 
427 
438 PJ_DECL(pj_ssl_cipher) pj_ssl_cipher_id(const char *cipher_name);
439 
443 typedef enum pj_ssl_curve
444 {
445  PJ_TLS_UNKNOWN_CURVE = 0,
446  PJ_TLS_CURVE_SECT163K1 = 1,
447  PJ_TLS_CURVE_SECT163R1 = 2,
448  PJ_TLS_CURVE_SECT163R2 = 3,
449  PJ_TLS_CURVE_SECT193R1 = 4,
450  PJ_TLS_CURVE_SECT193R2 = 5,
451  PJ_TLS_CURVE_SECT233K1 = 6,
452  PJ_TLS_CURVE_SECT233R1 = 7,
453  PJ_TLS_CURVE_SECT239K1 = 8,
454  PJ_TLS_CURVE_SECT283K1 = 9,
455  PJ_TLS_CURVE_SECT283R1 = 10,
456  PJ_TLS_CURVE_SECT409K1 = 11,
457  PJ_TLS_CURVE_SECT409R1 = 12,
458  PJ_TLS_CURVE_SECT571K1 = 13,
459  PJ_TLS_CURVE_SECT571R1 = 14,
460  PJ_TLS_CURVE_SECP160K1 = 15,
461  PJ_TLS_CURVE_SECP160R1 = 16,
462  PJ_TLS_CURVE_SECP160R2 = 17,
463  PJ_TLS_CURVE_SECP192K1 = 18,
464  PJ_TLS_CURVE_SECP192R1 = 19,
465  PJ_TLS_CURVE_SECP224K1 = 20,
466  PJ_TLS_CURVE_SECP224R1 = 21,
467  PJ_TLS_CURVE_SECP256K1 = 22,
468  PJ_TLS_CURVE_SECP256R1 = 23,
469  PJ_TLS_CURVE_SECP384R1 = 24,
470  PJ_TLS_CURVE_SECP521R1 = 25,
471  PJ_TLS_CURVE_BRAINPOOLP256R1 = 26,
472  PJ_TLS_CURVE_BRAINPOOLP384R1 = 27,
473  PJ_TLS_CURVE_BRAINPOOLP512R1 = 28,
474  PJ_TLS_CURVE_ARBITRARY_EXPLICIT_PRIME_CURVES = 0XFF01,
475  PJ_TLS_CURVE_ARBITRARY_EXPLICIT_CHAR2_CURVES = 0XFF02
476 } pj_ssl_curve;
477 
487  unsigned *curve_num);
488 
497 
498 
507 PJ_DECL(const char*) pj_ssl_curve_name(pj_ssl_curve curve);
508 
519 PJ_DECL(pj_ssl_curve) pj_ssl_curve_id(const char *curve_name);
520 
521 /*
522  * Entropy enumeration
523  */
524 typedef enum pj_ssl_entropy
525 {
526  PJ_SSL_ENTROPY_NONE = 0,
527  PJ_SSL_ENTROPY_EGD = 1,
528  PJ_SSL_ENTROPY_RANDOM = 2,
529  PJ_SSL_ENTROPY_URANDOM = 3,
530  PJ_SSL_ENTROPY_FILE = 4,
531  PJ_SSL_ENTROPY_UNKNOWN = 0x0F
532 } pj_ssl_entropy_t;
533 
537 typedef struct pj_ssl_sock_cb
538 {
565  pj_bool_t (*on_data_read)(pj_ssl_sock_t *ssock,
566  void *data,
567  pj_size_t size,
568  pj_status_t status,
569  pj_size_t *remainder);
590  pj_bool_t (*on_data_recvfrom)(pj_ssl_sock_t *ssock,
591  void *data,
592  pj_size_t size,
593  const pj_sockaddr_t *src_addr,
594  int addr_len,
595  pj_status_t status);
596 
610  pj_bool_t (*on_data_sent)(pj_ssl_sock_t *ssock,
612  pj_ssize_t sent);
613 
629  pj_bool_t (*on_accept_complete)(pj_ssl_sock_t *ssock,
630  pj_ssl_sock_t *newsock,
631  const pj_sockaddr_t *src_addr,
632  int src_addr_len);
651  pj_bool_t (*on_accept_complete2)(pj_ssl_sock_t *ssock,
652  pj_ssl_sock_t *newsock,
653  const pj_sockaddr_t *src_addr,
654  int src_addr_len,
655  pj_status_t status);
656 
669  pj_bool_t (*on_connect_complete)(pj_ssl_sock_t *ssock,
670  pj_status_t status);
671 
685  pj_bool_t (*on_verify_cb)(pj_ssl_sock_t *ssock, pj_bool_t is_server);
686 
688 
689 
694 typedef enum pj_ssl_sock_proto
695 {
700 
705 
710 
715 
720 
725 
730 
735  PJ_SSL_SOCK_PROTO_SSL23 = (1 << 16) - 1,
736  PJ_SSL_SOCK_PROTO_ALL = PJ_SSL_SOCK_PROTO_SSL23,
737 
742 
744 
745 
749 typedef struct pj_ssl_sock_info
750 {
756 
762 
768 
773 
778 
783 
788 
793 
797  unsigned long last_native_err;
798 
803 
805 
806 
810 typedef struct pj_ssl_sock_param
811 {
822 
828  int sock_af;
829 
836 
842 
849 
854 
858  void *user_data;
859 
867 
880  unsigned async_cnt;
881 
896 
911 
921 
931 
938  unsigned ciphers_num;
939 
945 
953  unsigned curves_num;
954 
960 
970 
980  pj_ssl_entropy_t entropy_type;
981 
990 
998 
1005 
1013 
1025 
1033 
1042 
1051 
1059 
1067 
1076 
1078 
1079 
1088 
1093 
1100 
1105 
1110 
1112 
1113 
1120 PJ_DECL(void) pj_ssl_sock_param_default(pj_ssl_sock_param *param);
1121 
1122 
1130 PJ_DECL(void) pj_ssl_sock_param_copy(pj_pool_t *pool,
1131  pj_ssl_sock_param *dst,
1132  const pj_ssl_sock_param *src);
1133 
1134 
1145  const pj_ssl_sock_param *param,
1146  pj_ssl_sock_t **p_ssock);
1147 
1148 
1165  pj_ssl_sock_t *ssock,
1166  pj_pool_t *pool,
1167  const pj_ssl_cert_t *cert);
1168 
1169 
1179 
1180 
1194  void *user_data);
1195 
1204 PJ_DECL(void*) pj_ssl_sock_get_user_data(pj_ssl_sock_t *ssock);
1205 
1206 
1217 
1218 
1242  pj_pool_t *pool,
1243  unsigned buff_size,
1244  pj_uint32_t flags);
1245 
1261  pj_pool_t *pool,
1262  unsigned buff_size,
1263  void *readbuf[],
1264  pj_uint32_t flags);
1265 
1280  pj_pool_t *pool,
1281  unsigned buff_size,
1282  pj_uint32_t flags);
1283 
1299  pj_pool_t *pool,
1300  unsigned buff_size,
1301  void *readbuf[],
1302  pj_uint32_t flags);
1303 
1326  const void *data,
1327  pj_ssize_t *size,
1328  unsigned flags);
1329 
1353  const void *data,
1354  pj_ssize_t *size,
1355  unsigned flags,
1356  const pj_sockaddr_t *addr,
1357  int addr_len);
1358 
1359 
1381  pj_pool_t *pool,
1382  const pj_sockaddr_t *local_addr,
1383  int addr_len);
1384 
1385 
1402 PJ_DECL(pj_status_t)
1404  pj_pool_t *pool,
1405  const pj_sockaddr_t *local_addr,
1406  int addr_len,
1407  const pj_ssl_sock_param *newsock_param);
1408 
1409 
1429  pj_pool_t *pool,
1430  const pj_sockaddr_t *localaddr,
1431  const pj_sockaddr_t *remaddr,
1432  int addr_len);
1433 
1450  pj_ssl_sock_t *ssock,
1451  pj_ssl_start_connect_param *connect_param);
1452 
1468 
1474 
1475 #endif /* __PJ_SSL_SOCK_H__ */
pj_status_t pj_ssl_cert_load_from_buffer(pj_pool_t *pool, const pj_ssl_cert_buffer *CA_buf, const pj_ssl_cert_buffer *cert_buf, const pj_ssl_cert_buffer *privkey_buf, const pj_str_t *privkey_pass, pj_ssl_cert_t **p_cert)
pj_str_t cn
Definition: ssl_sock.h:155
struct pj_timer_heap_t pj_timer_heap_t
Definition: types.h:221
pj_bool_t verify_peer
Definition: ssl_sock.h:1004
Definition: ssl_sock.h:735
pj_time_val end
Definition: ssl_sock.h:169
Definition: ssl_sock.h:709
pj_uint32_t proto
Definition: ssl_sock.h:761
pj_bool_t reuse_addr
Definition: ssl_sock.h:1032
pj_ssl_cert_info * remote_cert_info
Definition: ssl_sock.h:787
pj_ioqueue_t * ioqueue
Definition: ssl_sock.h:841
pj_status_t pj_ssl_sock_get_info(pj_ssl_sock_t *ssock, pj_ssl_sock_info *info)
struct pj_ssl_cert_info::@3 issuer
pj_ssl_curve * curves
Definition: ssl_sock.h:959
pj_status_t pj_ssl_sock_start_connect2(pj_ssl_sock_t *ssock, pj_ssl_start_connect_param *connect_param)
pj_ssl_cert_verify_flag_t
Definition: ssl_sock.h:63
const pj_sockaddr_t * localaddr
Definition: ssl_sock.h:1092
int pj_bool_t
Definition: types.h:71
Definition: ssl_sock.h:111
pj_qos_params qos_params
Definition: ssl_sock.h:1050
pj_ssl_cipher pj_ssl_cipher_id(const char *cipher_name)
struct pj_ssl_cert_info::@4 validity
Definition: sock.h:653
Definition: ssl_sock.h:73
pj_time_val timeout
Definition: ssl_sock.h:997
unsigned async_cnt
Definition: ssl_sock.h:880
pj_ssl_sock_proto
Definition: ssl_sock.h:694
const pj_sockaddr_t * remaddr
Definition: ssl_sock.h:1104
Definition: types.h:379
pj_uint8_t serial_no[20]
Definition: ssl_sock.h:150
pj_qos_type qos_type
Definition: ssl_sock.h:1041
Definition: ssl_sock.h:741
pj_status_t pj_ssl_sock_sendto(pj_ssl_sock_t *ssock, pj_ioqueue_op_key_t *send_key, const void *data, pj_ssize_t *size, unsigned flags, const pj_sockaddr_t *addr, int addr_len)
pj_ssl_cipher
Definition: ssl_sock.h:314
Socket QoS API.
pj_status_t pj_ssl_cipher_get_availables(pj_ssl_cipher ciphers[], unsigned *cipher_num)
pj_status_t pj_ssl_sock_close(pj_ssl_sock_t *ssock)
pj_uint16_t local_port_range
Definition: ssl_sock.h:1099
pj_str_t pj_ssl_cert_buffer
Definition: ssl_sock.h:197
pj_bool_t pj_ssl_curve_is_supported(pj_ssl_curve curve)
pj_ssl_curve pj_ssl_curve_id(const char *curve_name)
pj_status_t pj_ssl_sock_start_recvfrom2(pj_ssl_sock_t *ssock, pj_pool_t *pool, unsigned buff_size, void *readbuf[], pj_uint32_t flags)
unsigned long last_native_err
Definition: ssl_sock.h:797
pj_size_t send_buffer_size
Definition: ssl_sock.h:920
struct pj_ssl_cert_info::@5 subj_alt_name
Definition: ssl_sock.h:124
unsigned curves_num
Definition: ssl_sock.h:953
pj_ssl_sock_cb cb
Definition: ssl_sock.h:853
pj_size_t read_buffer_size
Definition: ssl_sock.h:930
int addr_len
Definition: ssl_sock.h:1109
int pj_status_t
Definition: types.h:68
Definition: ssl_sock.h:1083
Definition: sock.h:633
pj_str_t name
Definition: ssl_sock.h:179
Definition: ssl_sock.h:106
pj_status_t pj_ssl_cert_get_verify_status_strings(pj_uint32_t verify_status, const char *error_strings[], unsigned *count)
pj_status_t pj_ssl_sock_start_read(pj_ssl_sock_t *ssock, pj_pool_t *pool, unsigned buff_size, pj_uint32_t flags)
const char * pj_ssl_curve_name(pj_ssl_curve curve)
pj_status_t pj_ssl_sock_start_accept2(pj_ssl_sock_t *ssock, pj_pool_t *pool, const pj_sockaddr_t *local_addr, int addr_len, const pj_ssl_sock_param *newsock_param)
void pj_ssl_cert_wipe_keys(pj_ssl_cert_t *cert)
Definition: ioqueue.h:209
struct pj_ssl_cert_t pj_ssl_cert_t
Definition: ssl_sock.h:60
void pj_sockaddr_t
Definition: types.h:267
unsigned ciphers_num
Definition: ssl_sock.h:938
pj_timer_heap_t * timer_heap
Definition: ssl_sock.h:848
pj_uint32_t proto
Definition: ssl_sock.h:866
Definition: types.h:119
int sock_af
Definition: ssl_sock.h:828
pj_status_t pj_ssl_sock_create(pj_pool_t *pool, const pj_ssl_sock_param *param, pj_ssl_sock_t **p_ssock)
struct pj_grp_lock_t pj_grp_lock_t
Definition: types.h:242
pj_status_t pj_ssl_sock_renegotiate(pj_ssl_sock_t *ssock)
Definition: ssl_sock.h:724
pj_bool_t sockopt_ignore_error
Definition: ssl_sock.h:1075
Definition: ssl_sock.h:101
struct pj_ioqueue_t pj_ioqueue_t
Definition: types.h:210
unsigned int pj_uint32_t
Definition: types.h:43
pj_bool_t qos_ignore_error
Definition: ssl_sock.h:1058
Definition: ssl_sock.h:89
Definition: ssl_sock.h:699
pj_str_t raw
Definition: ssl_sock.h:184
pj_bool_t pj_ssl_cipher_is_supported(pj_ssl_cipher cipher)
pj_status_t pj_ssl_cert_load_from_files(pj_pool_t *pool, const pj_str_t *CA_file, const pj_str_t *cert_file, const pj_str_t *privkey_file, const pj_str_t *privkey_pass, pj_ssl_cert_t **p_cert)
struct pj_ssl_sock_t pj_ssl_sock_t
Definition: ssl_sock.h:53
pj_status_t pj_ssl_sock_start_recvfrom(pj_ssl_sock_t *ssock, pj_pool_t *pool, unsigned buff_size, pj_uint32_t flags)
#define PJ_END_DECL
Definition: config.h:1281
pj_bool_t require_client_cert
Definition: ssl_sock.h:1012
Definition: ssl_sock.h:78
I/O Dispatching Mechanism.
pj_status_t pj_ssl_sock_start_accept(pj_ssl_sock_t *ssock, pj_pool_t *pool, const pj_sockaddr_t *local_addr, int addr_len)
Definition: ssl_sock.h:146
Definition: ssl_sock.h:116
pj_ssl_cipher cipher
Definition: ssl_sock.h:767
Definition: ssl_sock.h:810
unsigned version
Definition: ssl_sock.h:148
#define PJ_BEGIN_DECL
Definition: config.h:1280
pj_qos_type
Definition: sock_qos.h:235
pj_ssl_curve
Definition: ssl_sock.h:443
pj_status_t pj_ssl_sock_set_user_data(pj_ssl_sock_t *ssock, void *user_data)
struct pj_ssl_cert_info::@2 subject
int concurrency
Definition: ssl_sock.h:895
pj_status_t pj_ssl_curve_get_availables(pj_ssl_curve curves[], unsigned *curve_num)
pj_bool_t gmt
Definition: ssl_sock.h:170
pj_uint32_t verify_status
Definition: ssl_sock.h:792
long pj_ssize_t
Definition: types.h:64
pj_ssize_t pj_ssl_cert_info_dump(const pj_ssl_cert_info *ci, const char *indent, char *buf, pj_size_t buf_size)
Definition: ssl_sock.h:94
pj_str_t server_name
Definition: ssl_sock.h:1024
int sock_type
Definition: ssl_sock.h:835
unsigned char pj_uint8_t
Definition: types.h:55
Definition: pool.h:310
Socket Abstraction.
Definition: ssl_sock.h:537
Definition: ssl_sock.h:729
Definition: ssl_sock.h:719
Definition: ssl_sock.h:68
pj_grp_lock_t * grp_lock
Definition: ssl_sock.h:802
pj_sockopt_params sockopt_params
Definition: ssl_sock.h:1066
void pj_ssl_sock_param_copy(pj_pool_t *pool, pj_ssl_sock_param *dst, const pj_ssl_sock_param *src)
pj_status_t pj_ssl_sock_set_certificate(pj_ssl_sock_t *ssock, pj_pool_t *pool, const pj_ssl_cert_t *cert)
Definition: ssl_sock.h:83
pj_bool_t established
Definition: ssl_sock.h:755
pj_status_t pj_ssl_sock_start_read2(pj_ssl_sock_t *ssock, pj_pool_t *pool, unsigned buff_size, void *readbuf[], pj_uint32_t flags)
Definition: ssl_sock.h:749
pj_status_t pj_ssl_sock_start_connect(pj_ssl_sock_t *ssock, pj_pool_t *pool, const pj_sockaddr_t *localaddr, const pj_sockaddr_t *remaddr, int addr_len)
pj_sockaddr local_addr
Definition: ssl_sock.h:772
void * pj_ssl_sock_get_user_data(pj_ssl_sock_t *ssock)
pj_str_t sigalgs
Definition: ssl_sock.h:969
pj_ssl_cert_info * local_cert_info
Definition: ssl_sock.h:782
pj_str_t info
Definition: ssl_sock.h:156
Definition: ssl_sock.h:129
void pj_ssl_sock_param_default(pj_ssl_sock_param *param)
Definition: ssl_sock.h:714
Definition: sock_qos.h:274
pj_sockaddr remote_addr
Definition: ssl_sock.h:777
pj_time_val start
Definition: ssl_sock.h:168
const char * pj_ssl_cipher_name(pj_ssl_cipher cipher)
unsigned short pj_uint16_t
Definition: types.h:49
pj_grp_lock_t * grp_lock
Definition: ssl_sock.h:821
Definition: ssl_sock.h:704
pj_str_t entropy_path
Definition: ssl_sock.h:989
Definition: activesock.c:270
pj_status_t pj_ssl_cert_load_from_files2(pj_pool_t *pool, const pj_str_t *CA_file, const pj_str_t *CA_path, const pj_str_t *cert_file, const pj_str_t *privkey_file, const pj_str_t *privkey_pass, pj_ssl_cert_t **p_cert)
pj_status_t pj_ssl_sock_send(pj_ssl_sock_t *ssock, pj_ioqueue_op_key_t *send_key, const void *data, pj_ssize_t *size, unsigned flags)
unsigned cnt
Definition: ssl_sock.h:175
size_t pj_size_t
Definition: types.h:58
pj_ssl_cert_name_type type
Definition: ssl_sock.h:177
pj_pool_t * pool
Definition: ssl_sock.h:1087
void * user_data
Definition: ssl_sock.h:858
pj_ssl_entropy_t entropy_type
Definition: ssl_sock.h:980
pj_bool_t whole_data
Definition: ssl_sock.h:910
struct pj_ssl_cert_info::@5::@7 * entry
pj_ssl_cipher * ciphers
Definition: ssl_sock.h:944

 


PJLIB Open Source, high performance, small footprint, and very very portable framework
Copyright (C) 2006-2009 Teluu Inc.