Mercurial > dovecot > core-2.2
annotate src/lib-ssl-iostream/iostream-ssl.h @ 14723:69626d2ce3f0
lib-ssl-iostream: Added protocols setting.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sat, 28 Jul 2012 17:36:27 +0300 |
parents | ff479f84022f |
children | 02f6b66458b1 |
rev | line source |
---|---|
12616
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
1 #ifndef IOSTREAM_SSL_H |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
2 #define IOSTREAM_SSL_H |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
4 struct ssl_iostream; |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
5 struct ssl_iostream_context; |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
6 |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
7 struct ssl_iostream_settings { |
14723
69626d2ce3f0
lib-ssl-iostream: Added protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
14720
diff
changeset
|
8 const char *protocols; |
12616
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
9 const char *cipher_list; |
14723
69626d2ce3f0
lib-ssl-iostream: Added protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
14720
diff
changeset
|
10 const char *ca, *ca_dir; /* context-only */ |
12616
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
11 const char *cert; |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
12 const char *key; |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
13 const char *key_password; |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
14 const char *cert_username_field; |
14723
69626d2ce3f0
lib-ssl-iostream: Added protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
14720
diff
changeset
|
15 const char *crypto_device; /* context-only */ |
12616
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
16 |
14723
69626d2ce3f0
lib-ssl-iostream: Added protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
14720
diff
changeset
|
17 bool verbose, verbose_invalid_cert; /* stream-only */ |
69626d2ce3f0
lib-ssl-iostream: Added protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
14720
diff
changeset
|
18 bool verify_remote_cert; /* neither/both */ |
69626d2ce3f0
lib-ssl-iostream: Added protocols setting.
Timo Sirainen <tss@iki.fi>
parents:
14720
diff
changeset
|
19 bool require_valid_cert; /* stream-only */ |
12616
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
20 }; |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
21 |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
22 int io_stream_create_ssl(struct ssl_iostream_context *ctx, const char *source, |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
23 const struct ssl_iostream_settings *set, |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
24 struct istream **input, struct ostream **output, |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
25 struct ssl_iostream **iostream_r); |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
26 /* returned input and output streams must also be unreferenced */ |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
27 void ssl_iostream_unref(struct ssl_iostream **ssl_io); |
14720
ff479f84022f
lib-ssl-iostream: Added ssl_iostream_destroy() to do a clean SSL shutdown.
Timo Sirainen <tss@iki.fi>
parents:
13774
diff
changeset
|
28 /* shutdown SSL connection and unreference ssl iostream */ |
ff479f84022f
lib-ssl-iostream: Added ssl_iostream_destroy() to do a clean SSL shutdown.
Timo Sirainen <tss@iki.fi>
parents:
13774
diff
changeset
|
29 void ssl_iostream_destroy(struct ssl_iostream **ssl_io); |
12616
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
30 |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
31 int ssl_iostream_handshake(struct ssl_iostream *ssl_io); |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
32 void ssl_iostream_set_handshake_callback(struct ssl_iostream *ssl_io, |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
33 int (*callback)(void *context), |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
34 void *context); |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
35 |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
36 bool ssl_iostream_is_handshaked(const struct ssl_iostream *ssl_io); |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
37 bool ssl_iostream_has_valid_client_cert(const struct ssl_iostream *ssl_io); |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
38 bool ssl_iostream_has_broken_client_cert(struct ssl_iostream *ssl_io); |
13404
c3dc563c9800
lib-ssl-iostream: Added ssl_iostream_cert_match_name()
Timo Sirainen <tss@iki.fi>
parents:
12616
diff
changeset
|
39 int ssl_iostream_cert_match_name(struct ssl_iostream *ssl_io, const char *name); |
12616
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
40 const char *ssl_iostream_get_peer_name(struct ssl_iostream *ssl_io); |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
41 const char *ssl_iostream_get_security_string(struct ssl_iostream *ssl_io); |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
42 const char *ssl_iostream_get_last_error(struct ssl_iostream *ssl_io); |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
43 |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
44 int ssl_iostream_generate_params(buffer_t *output); |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
45 int ssl_iostream_context_import_params(struct ssl_iostream_context *ctx, |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
46 const buffer_t *input); |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
47 |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
48 int ssl_iostream_context_init_client(const char *source, |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
49 const struct ssl_iostream_settings *set, |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
50 struct ssl_iostream_context **ctx_r); |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
51 int ssl_iostream_context_init_server(const char *source, |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
52 const struct ssl_iostream_settings *set, |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
53 struct ssl_iostream_context **ctx_r); |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
54 void ssl_iostream_context_deinit(struct ssl_iostream_context **ctx); |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
55 |
bd23d4e10fa1
Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
56 #endif |