Groonga 3.0.9 Source Code Document
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ngx_event_openssl.h
Go to the documentation of this file.
1 
2 /*
3  * Copyright (C) Igor Sysoev
4  * Copyright (C) Nginx, Inc.
5  */
6 
7 
8 #ifndef _NGX_EVENT_OPENSSL_H_INCLUDED_
9 #define _NGX_EVENT_OPENSSL_H_INCLUDED_
10 
11 
12 #include <ngx_config.h>
13 #include <ngx_core.h>
14 
15 #include <openssl/ssl.h>
16 #include <openssl/err.h>
17 #include <openssl/conf.h>
18 #include <openssl/engine.h>
19 #include <openssl/evp.h>
20 #include <openssl/ocsp.h>
21 
22 #define NGX_SSL_NAME "OpenSSL"
23 
24 
25 #define ngx_ssl_session_t SSL_SESSION
26 #define ngx_ssl_conn_t SSL
27 
28 
29 typedef struct {
30  SSL_CTX *ctx;
32 } ngx_ssl_t;
33 
34 
35 typedef struct {
37 
40 
42 
45 
46  unsigned handshaked:1;
47  unsigned renegotiation:1;
48  unsigned buffer:1;
49  unsigned no_wait_shutdown:1;
50  unsigned no_send_shutdown:1;
52 
53 
54 #define NGX_SSL_NO_SCACHE -2
55 #define NGX_SSL_NONE_SCACHE -3
56 #define NGX_SSL_NO_BUILTIN_SCACHE -4
57 #define NGX_SSL_DFLT_BUILTIN_SCACHE -5
58 
59 
60 #define NGX_SSL_MAX_SESSION_SIZE 4096
61 
63 
66  u_char *id;
67  size_t len;
68  u_char *session;
70  time_t expire;
71 #if (NGX_PTR_SIZE == 8)
72  void *stub;
73  u_char sess_id[32];
74 #endif
75 };
76 
77 
78 typedef struct {
83 
84 
85 
86 #define NGX_SSL_SSLv2 0x0002
87 #define NGX_SSL_SSLv3 0x0004
88 #define NGX_SSL_TLSv1 0x0008
89 #define NGX_SSL_TLSv1_1 0x0010
90 #define NGX_SSL_TLSv1_2 0x0020
91 
92 
93 #define NGX_SSL_BUFFER 1
94 #define NGX_SSL_CLIENT 2
95 
96 #define NGX_SSL_BUFSIZE 16384
97 
98 
100 ngx_int_t ngx_ssl_create(ngx_ssl_t *ssl, ngx_uint_t protocols, void *data);
102  ngx_str_t *cert, ngx_str_t *key);
104  ngx_str_t *cert, ngx_int_t depth);
106  ngx_str_t *cert, ngx_int_t depth);
109  ngx_str_t *file, ngx_str_t *responder, ngx_uint_t verify);
111  ngx_resolver_t *resolver, ngx_msec_t resolver_timeout);
112 RSA *ngx_ssl_rsa512_key_callback(SSL *ssl, int is_export, int key_length);
116  ssize_t builtin_session_cache, ngx_shm_zone_t *shm_zone, time_t timeout);
119  ngx_uint_t flags);
120 
121 void ngx_ssl_remove_cached_session(SSL_CTX *ssl, ngx_ssl_session_t *sess);
123 #define ngx_ssl_get_session(c) SSL_get1_session(c->ssl->connection)
124 #define ngx_ssl_free_session SSL_SESSION_free
125 #define ngx_ssl_get_connection(ssl_conn) \
126  SSL_get_ex_data(ssl_conn, ngx_ssl_connection_index)
127 #define ngx_ssl_get_server_conf(ssl_ctx) \
128  SSL_CTX_get_ex_data(ssl_ctx, ngx_ssl_server_conf_index)
129 
130 #define ngx_ssl_verify_error_optional(n) \
131  (n == X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT \
132  || n == X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN \
133  || n == X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY \
134  || n == X509_V_ERR_CERT_UNTRUSTED \
135  || n == X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE)
136 
137 
139  ngx_str_t *s);
141  ngx_str_t *s);
143  ngx_str_t *s);
145  ngx_str_t *s);
147  ngx_str_t *s);
149  ngx_str_t *s);
151  ngx_str_t *s);
153  ngx_str_t *s);
155  ngx_str_t *s);
156 
157 
159 ssize_t ngx_ssl_recv(ngx_connection_t *c, u_char *buf, size_t size);
160 ssize_t ngx_ssl_write(ngx_connection_t *c, u_char *data, size_t size);
163  off_t limit);
167  char *fmt, ...);
168 void ngx_ssl_cleanup_ctx(void *data);
169 
170 
171 extern int ngx_ssl_connection_index;
172 extern int ngx_ssl_server_conf_index;
173 extern int ngx_ssl_session_cache_index;
174 extern int ngx_ssl_certificate_index;
175 extern int ngx_ssl_stapling_index;
176 
177 
178 #endif /* _NGX_EVENT_OPENSSL_H_INCLUDED_ */