annotate src/lib-ssl-iostream/iostream-ssl.h @ 13774:e56409d9615c

lib-ssl-iostream: Added crypto_device setting to set OpenSSL engine. Multiple engines aren't supported, so the first crypto_device value gets used for all SSL connections.
author Timo Sirainen <tss@iki.fi>
date Thu, 24 Nov 2011 01:49:58 +0200
parents c3dc563c9800
children ff479f84022f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 {
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8 const char *cipher_list;
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
9 const char *ca, *ca_dir;
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
10 const char *cert;
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
11 const char *key;
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
12 const char *key_password;
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
13 const char *cert_username_field;
13774
e56409d9615c lib-ssl-iostream: Added crypto_device setting to set OpenSSL engine.
Timo Sirainen <tss@iki.fi>
parents: 13404
diff changeset
14 const char *crypto_device;
12616
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
15
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
16 bool verbose, verbose_invalid_cert;
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
17 bool verify_remote_cert;
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
18 bool require_valid_cert;
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
19 };
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 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
22 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
23 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
24 struct ssl_iostream **iostream_r);
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
25 /* 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
26 void ssl_iostream_unref(struct ssl_iostream **ssl_io);
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
27
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
28 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
29 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
30 int (*callback)(void *context),
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
31 void *context);
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
32
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
33 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
34 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
35 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
36 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
37 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
38 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
39 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
40
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
41 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
42 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
43 const buffer_t *input);
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
44
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
45 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
46 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
47 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
48 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
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 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
52
bd23d4e10fa1 Added lib-ssl-iostream for handling SSL connections more easily.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
53 #endif