1 /* 2 * ustream-ssl - library for SSL over ustream 3 * 4 * Copyright (C) 2012 Felix Fietkau <nbd@openwrt.org> 5 * 6 * Permission to use, copy, modify, and/or distribute this software for any 7 * purpose with or without fee is hereby granted, provided that the above 8 * copyright notice and this permission notice appear in all copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 #ifndef __USTREAM_SSL_H 20 #define __USTREAM_SSL_H 21 22 #include <libubox/ustream.h> 23 24 struct ustream_ssl { 25 struct ustream stream; 26 struct ustream *conn; 27 struct uloop_timeout error_timer; 28 29 void (*notify_connected)(struct ustream_ssl *us); 30 void (*notify_error)(struct ustream_ssl *us, int error, const char *str); 31 void (*notify_verify_error)(struct ustream_ssl *us, int error, const char *str); 32 33 struct ustream_ssl_ctx *ctx; 34 void *ssl; 35 36 char *peer_cn; 37 const char *server_name; 38 39 int error; 40 bool connected; 41 bool server; 42 43 bool valid_cert; 44 bool valid_cn; 45 bool require_validation; 46 }; 47 48 struct ustream_ssl_ctx; 49 50 struct ustream_ssl_ops { 51 52 struct ustream_ssl_ctx *(*context_new)(bool server); 53 int (*context_set_crt_file)(struct ustream_ssl_ctx *ctx, const char *file); 54 int (*context_set_key_file)(struct ustream_ssl_ctx *ctx, const char *file); 55 int (*context_add_ca_crt_file)(struct ustream_ssl_ctx *ctx, const char *file); 56 void (*context_free)(struct ustream_ssl_ctx *ctx); 57 58 int (*init)(struct ustream_ssl *us, struct ustream *conn, struct ustream_ssl_ctx *ctx, bool server); 59 int (*set_peer_cn)(struct ustream_ssl *conn, const char *name); 60 61 int (*context_set_ciphers)(struct ustream_ssl_ctx *ctx, const char *ciphers); 62 int (*context_set_require_validation)(struct ustream_ssl_ctx *ctx, bool require); 63 }; 64 65 extern const struct ustream_ssl_ops ustream_ssl_ops; 66 67 #define ustream_ssl_context_new ustream_ssl_ops.context_new 68 #define ustream_ssl_context_set_crt_file ustream_ssl_ops.context_set_crt_file 69 #define ustream_ssl_context_set_key_file ustream_ssl_ops.context_set_key_file 70 #define ustream_ssl_context_add_ca_crt_file ustream_ssl_ops.context_add_ca_crt_file 71 #define ustream_ssl_context_set_ciphers ustream_ssl_ops.context_set_ciphers 72 #define ustream_ssl_context_set_require_validation ustream_ssl_ops.context_set_require_validation 73 #define ustream_ssl_context_free ustream_ssl_ops.context_free 74 #define ustream_ssl_init ustream_ssl_ops.init 75 #define ustream_ssl_set_peer_cn ustream_ssl_ops.set_peer_cn 76 77 #endif 78
This page was automatically generated by LXR 0.3.1. • OpenWrt