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 struct uloop_fd fd; 29 30 void (*notify_connected)(struct ustream_ssl *us); 31 void (*notify_error)(struct ustream_ssl *us, int error, const char *str); 32 void (*notify_verify_error)(struct ustream_ssl *us, int error, const char *str); 33 34 struct ustream_ssl_ctx *ctx; 35 void *ssl; 36 37 char *peer_cn; 38 const char *server_name; 39 40 int error; 41 bool connected; 42 bool server; 43 44 bool valid_cert; 45 bool valid_cn; 46 bool require_validation; 47 }; 48 49 struct ustream_ssl_ctx; 50 51 typedef void (*ustream_ssl_debug_cb)(void *priv, int level, const char *msg); 52 53 struct ustream_ssl_ops { 54 struct ustream_ssl_ctx *(*context_new)(bool server); 55 int (*context_set_crt_file)(struct ustream_ssl_ctx *ctx, const char *file); 56 int (*context_set_key_file)(struct ustream_ssl_ctx *ctx, const char *file); 57 int (*context_add_ca_crt_file)(struct ustream_ssl_ctx *ctx, const char *file); 58 void (*context_free)(struct ustream_ssl_ctx *ctx); 59 60 int (*init_fd)(struct ustream_ssl *us, int fd, struct ustream_ssl_ctx *ctx, bool server); 61 int (*init)(struct ustream_ssl *us, struct ustream *conn, struct ustream_ssl_ctx *ctx, bool server); 62 int (*set_peer_cn)(struct ustream_ssl *conn, const char *name); 63 64 int (*context_set_ciphers)(struct ustream_ssl_ctx *ctx, const char *ciphers); 65 void (*context_set_debug)(struct ustream_ssl_ctx *ctx, int level, ustream_ssl_debug_cb cb, void *cb_priv); 66 int (*context_set_require_validation)(struct ustream_ssl_ctx *ctx, bool require); 67 }; 68 69 extern const struct ustream_ssl_ops ustream_ssl_ops; 70 71 #define ustream_ssl_context_new ustream_ssl_ops.context_new 72 #define ustream_ssl_context_set_crt_file ustream_ssl_ops.context_set_crt_file 73 #define ustream_ssl_context_set_key_file ustream_ssl_ops.context_set_key_file 74 #define ustream_ssl_context_add_ca_crt_file ustream_ssl_ops.context_add_ca_crt_file 75 #define ustream_ssl_context_set_ciphers ustream_ssl_ops.context_set_ciphers 76 #define ustream_ssl_context_set_debug ustream_ssl_ops.context_set_debug 77 #define ustream_ssl_context_set_require_validation ustream_ssl_ops.context_set_require_validation 78 #define ustream_ssl_context_free ustream_ssl_ops.context_free 79 #define ustream_ssl_init ustream_ssl_ops.init 80 #define ustream_ssl_set_peer_cn ustream_ssl_ops.set_peer_cn 81 82 #endif 83
This page was automatically generated by LXR 0.3.1. • OpenWrt