BLOG | DOCUMENTATION | GITHUB

Home --> Documentations --> PJLIB Reference

ssl_sock.h File Reference

Secure socket. More...

Go to the source code of this file.

Data Structures

struct  pj_ssl_cert_info
 
struct  pj_ssl_sock_cb
 
struct  pj_ssl_sock_info
 
struct  pj_ssl_sock_param
 
struct  pj_ssl_start_connect_param
 

Typedefs

typedef struct pj_ssl_sock_t pj_ssl_sock_t
 
typedef struct pj_ssl_cert_t pj_ssl_cert_t
 
typedef pj_str_t pj_ssl_cert_buffer
 

Enumerations

enum  pj_ssl_cert_verify_flag_t {
  PJ_SSL_CERT_ESUCCESS = 0 , PJ_SSL_CERT_EISSUER_NOT_FOUND = (1 << 0) , PJ_SSL_CERT_EUNTRUSTED = (1 << 1) , PJ_SSL_CERT_EVALIDITY_PERIOD = (1 << 2) ,
  PJ_SSL_CERT_EINVALID_FORMAT = (1 << 3) , PJ_SSL_CERT_EINVALID_PURPOSE = (1 << 4) , PJ_SSL_CERT_EISSUER_MISMATCH = (1 << 5) , PJ_SSL_CERT_ECRL_FAILURE = (1 << 6) ,
  PJ_SSL_CERT_EREVOKED = (1 << 7) , PJ_SSL_CERT_ECHAIN_TOO_LONG = (1 << 8) , PJ_SSL_CERT_EIDENTITY_NOT_MATCH = (1 << 30) , PJ_SSL_CERT_EUNKNOWN = (1 << 31)
}
 
enum  pj_ssl_cert_name_type {
  PJ_SSL_CERT_NAME_UNKNOWN = 0 , PJ_SSL_CERT_NAME_RFC822 , PJ_SSL_CERT_NAME_DNS , PJ_SSL_CERT_NAME_URI ,
  PJ_SSL_CERT_NAME_IP
}
 
enum  pj_ssl_cipher {
  PJ_TLS_UNKNOWN_CIPHER = -1 , PJ_TLS_NULL_WITH_NULL_NULL = 0x00000000 , PJ_TLS_RSA_WITH_NULL_MD5 = 0x00000001 , PJ_TLS_RSA_WITH_NULL_SHA = 0x00000002 ,
  PJ_TLS_RSA_WITH_NULL_SHA256 = 0x0000003B , PJ_TLS_RSA_WITH_RC4_128_MD5 = 0x00000004 , PJ_TLS_RSA_WITH_RC4_128_SHA = 0x00000005 , PJ_TLS_RSA_WITH_3DES_EDE_CBC_SHA = 0x0000000A ,
  PJ_TLS_RSA_WITH_AES_128_CBC_SHA = 0x0000002F , PJ_TLS_RSA_WITH_AES_256_CBC_SHA = 0x00000035 , PJ_TLS_RSA_WITH_AES_128_CBC_SHA256 = 0x0000003C , PJ_TLS_RSA_WITH_AES_256_CBC_SHA256 = 0x0000003D ,
  PJ_TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA = 0x0000000D , PJ_TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA = 0x00000010 , PJ_TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA = 0x00000013 , PJ_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA = 0x00000016 ,
  PJ_TLS_DH_DSS_WITH_AES_128_CBC_SHA = 0x00000030 , PJ_TLS_DH_RSA_WITH_AES_128_CBC_SHA = 0x00000031 , PJ_TLS_DHE_DSS_WITH_AES_128_CBC_SHA = 0x00000032 , PJ_TLS_DHE_RSA_WITH_AES_128_CBC_SHA = 0x00000033 ,
  PJ_TLS_DH_DSS_WITH_AES_256_CBC_SHA = 0x00000036 , PJ_TLS_DH_RSA_WITH_AES_256_CBC_SHA = 0x00000037 , PJ_TLS_DHE_DSS_WITH_AES_256_CBC_SHA = 0x00000038 , PJ_TLS_DHE_RSA_WITH_AES_256_CBC_SHA = 0x00000039 ,
  PJ_TLS_DH_DSS_WITH_AES_128_CBC_SHA256 = 0x0000003E , PJ_TLS_DH_RSA_WITH_AES_128_CBC_SHA256 = 0x0000003F , PJ_TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 = 0x00000040 , PJ_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 = 0x00000067 ,
  PJ_TLS_DH_DSS_WITH_AES_256_CBC_SHA256 = 0x00000068 , PJ_TLS_DH_RSA_WITH_AES_256_CBC_SHA256 = 0x00000069 , PJ_TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 = 0x0000006A , PJ_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 = 0x0000006B ,
  PJ_TLS_DH_anon_WITH_RC4_128_MD5 = 0x00000018 , PJ_TLS_DH_anon_WITH_3DES_EDE_CBC_SHA = 0x0000001B , PJ_TLS_DH_anon_WITH_AES_128_CBC_SHA = 0x00000034 , PJ_TLS_DH_anon_WITH_AES_256_CBC_SHA = 0x0000003A ,
  PJ_TLS_DH_anon_WITH_AES_128_CBC_SHA256 = 0x0000006C , PJ_TLS_DH_anon_WITH_AES_256_CBC_SHA256 = 0x0000006D , PJ_TLS_RSA_EXPORT_WITH_RC4_40_MD5 = 0x00000003 , PJ_TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = 0x00000006 ,
  PJ_TLS_RSA_WITH_IDEA_CBC_SHA = 0x00000007 , PJ_TLS_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x00000008 , PJ_TLS_RSA_WITH_DES_CBC_SHA = 0x00000009 , PJ_TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA = 0x0000000B ,
  PJ_TLS_DH_DSS_WITH_DES_CBC_SHA = 0x0000000C , PJ_TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x0000000E , PJ_TLS_DH_RSA_WITH_DES_CBC_SHA = 0x0000000F , PJ_TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA = 0x00000011 ,
  PJ_TLS_DHE_DSS_WITH_DES_CBC_SHA = 0x00000012 , PJ_TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x00000014 , PJ_TLS_DHE_RSA_WITH_DES_CBC_SHA = 0x00000015 , PJ_TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 = 0x00000017 ,
  PJ_TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA = 0x00000019 , PJ_TLS_DH_anon_WITH_DES_CBC_SHA = 0x0000001A , PJ_SSL_FORTEZZA_KEA_WITH_NULL_SHA = 0x0000001C , PJ_SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA = 0x0000001D ,
  PJ_SSL_FORTEZZA_KEA_WITH_RC4_128_SHA = 0x0000001E , PJ_SSL_CK_RC4_128_WITH_MD5 = 0x00010080 , PJ_SSL_CK_RC4_128_EXPORT40_WITH_MD5 = 0x00020080 , PJ_SSL_CK_RC2_128_CBC_WITH_MD5 = 0x00030080 ,
  PJ_SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5 = 0x00040080 , PJ_SSL_CK_IDEA_128_CBC_WITH_MD5 = 0x00050080 , PJ_SSL_CK_DES_64_CBC_WITH_MD5 = 0x00060040 , PJ_SSL_CK_DES_192_EDE3_CBC_WITH_MD5 = 0x000700C0
}
 
enum  pj_ssl_curve {
  PJ_TLS_UNKNOWN_CURVE = 0 , PJ_TLS_CURVE_SECT163K1 = 1 , PJ_TLS_CURVE_SECT163R1 = 2 , PJ_TLS_CURVE_SECT163R2 = 3 ,
  PJ_TLS_CURVE_SECT193R1 = 4 , PJ_TLS_CURVE_SECT193R2 = 5 , PJ_TLS_CURVE_SECT233K1 = 6 , PJ_TLS_CURVE_SECT233R1 = 7 ,
  PJ_TLS_CURVE_SECT239K1 = 8 , PJ_TLS_CURVE_SECT283K1 = 9 , PJ_TLS_CURVE_SECT283R1 = 10 , PJ_TLS_CURVE_SECT409K1 = 11 ,
  PJ_TLS_CURVE_SECT409R1 = 12 , PJ_TLS_CURVE_SECT571K1 = 13 , PJ_TLS_CURVE_SECT571R1 = 14 , PJ_TLS_CURVE_SECP160K1 = 15 ,
  PJ_TLS_CURVE_SECP160R1 = 16 , PJ_TLS_CURVE_SECP160R2 = 17 , PJ_TLS_CURVE_SECP192K1 = 18 , PJ_TLS_CURVE_SECP192R1 = 19 ,
  PJ_TLS_CURVE_SECP224K1 = 20 , PJ_TLS_CURVE_SECP224R1 = 21 , PJ_TLS_CURVE_SECP256K1 = 22 , PJ_TLS_CURVE_SECP256R1 = 23 ,
  PJ_TLS_CURVE_SECP384R1 = 24 , PJ_TLS_CURVE_SECP521R1 = 25 , PJ_TLS_CURVE_BRAINPOOLP256R1 = 26 , PJ_TLS_CURVE_BRAINPOOLP384R1 = 27 ,
  PJ_TLS_CURVE_BRAINPOOLP512R1 = 28 , PJ_TLS_CURVE_ARBITRARY_EXPLICIT_PRIME_CURVES = 0XFF01 , PJ_TLS_CURVE_ARBITRARY_EXPLICIT_CHAR2_CURVES = 0XFF02
}
 
enum  pj_ssl_entropy_t {
  PJ_SSL_ENTROPY_NONE = 0 , PJ_SSL_ENTROPY_EGD = 1 , PJ_SSL_ENTROPY_RANDOM = 2 , PJ_SSL_ENTROPY_URANDOM = 3 ,
  PJ_SSL_ENTROPY_FILE = 4 , PJ_SSL_ENTROPY_UNKNOWN = 0x0F
}
 
enum  pj_ssl_sock_proto {
  PJ_SSL_SOCK_PROTO_DEFAULT = 0 , PJ_SSL_SOCK_PROTO_SSL2 = (1 << 0) , PJ_SSL_SOCK_PROTO_SSL3 = (1 << 1) , PJ_SSL_SOCK_PROTO_TLS1 = (1 << 2) ,
  PJ_SSL_SOCK_PROTO_TLS1_1 = (1 << 3) , PJ_SSL_SOCK_PROTO_TLS1_2 = (1 << 4) , PJ_SSL_SOCK_PROTO_TLS1_3 = (1 << 5) , PJ_SSL_SOCK_PROTO_SSL23 = (1 << 16) - 1 ,
  PJ_SSL_SOCK_PROTO_ALL = PJ_SSL_SOCK_PROTO_SSL23 , PJ_SSL_SOCK_PROTO_DTLS1 = (1 << 16)
}
 

Functions

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)
 
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_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_ssize_t pj_ssl_cert_info_dump (const pj_ssl_cert_info *ci, const char *indent, char *buf, pj_size_t buf_size)
 
pj_status_t pj_ssl_cert_get_verify_status_strings (pj_uint32_t verify_status, const char *error_strings[], unsigned *count)
 
void pj_ssl_cert_wipe_keys (pj_ssl_cert_t *cert)
 
pj_status_t pj_ssl_cipher_get_availables (pj_ssl_cipher ciphers[], unsigned *cipher_num)
 
pj_bool_t pj_ssl_cipher_is_supported (pj_ssl_cipher cipher)
 
const char * pj_ssl_cipher_name (pj_ssl_cipher cipher)
 
pj_ssl_cipher pj_ssl_cipher_id (const char *cipher_name)
 
pj_status_t pj_ssl_curve_get_availables (pj_ssl_curve curves[], unsigned *curve_num)
 
pj_bool_t pj_ssl_curve_is_supported (pj_ssl_curve curve)
 
const char * pj_ssl_curve_name (pj_ssl_curve curve)
 
pj_ssl_curve pj_ssl_curve_id (const char *curve_name)
 
void pj_ssl_sock_param_default (pj_ssl_sock_param *param)
 
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_create (pj_pool_t *pool, const pj_ssl_sock_param *param, pj_ssl_sock_t **p_ssock)
 
pj_status_t pj_ssl_sock_set_certificate (pj_ssl_sock_t *ssock, pj_pool_t *pool, const pj_ssl_cert_t *cert)
 
pj_status_t pj_ssl_sock_close (pj_ssl_sock_t *ssock)
 
pj_status_t pj_ssl_sock_set_user_data (pj_ssl_sock_t *ssock, void *user_data)
 
void * pj_ssl_sock_get_user_data (pj_ssl_sock_t *ssock)
 
pj_status_t pj_ssl_sock_get_info (pj_ssl_sock_t *ssock, pj_ssl_sock_info *info)
 
pj_status_t pj_ssl_sock_start_read (pj_ssl_sock_t *ssock, pj_pool_t *pool, unsigned buff_size, pj_uint32_t flags)
 
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)
 
pj_status_t pj_ssl_sock_start_recvfrom (pj_ssl_sock_t *ssock, pj_pool_t *pool, unsigned buff_size, pj_uint32_t flags)
 
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)
 
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)
 
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_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)
 
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)
 
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_status_t pj_ssl_sock_start_connect2 (pj_ssl_sock_t *ssock, pj_ssl_start_connect_param *connect_param)
 
pj_status_t pj_ssl_sock_renegotiate (pj_ssl_sock_t *ssock)
 

Detailed Description

Secure socket.

 


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