/* * proxy-polarssl.h - PolarSSL layer for transparent proxy connections * * Based on proxy-bio.c - Original copyright (c) 2012 The Chromium OS Authors. * * This file was adapted by Paul Bakker <p.j.bakker@offspark.com> * All rights reserved. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef PROXY_POLARSSL_H #define PROXY_POLARSSL_H #include <stdint.h> typedef struct _proxy_polarssl_ctx proxy_polarssl_ctx; struct _proxy_polarssl_ctx { char *host; uint16_t port; int connected; int (*f_recv)(void *, unsigned char *, size_t); int (*f_send)(void *, const unsigned char *, size_t); int (*f_connect)(proxy_polarssl_ctx *); void *p_recv; /*!< context for reading operations */ void *p_send; /*!< context for writing operations */ }; int proxy_polarssl_init(proxy_polarssl_ctx *proxy); int proxy_polarssl_free(proxy_polarssl_ctx *ctx); void proxy_polarssl_set_bio(proxy_polarssl_ctx *ctx, int (*f_recv)(void *, unsigned char *, size_t), void *p_recv, int (*f_send)(void *, const unsigned char *, size_t), void *p_send); int proxy_polarssl_set_scheme(proxy_polarssl_ctx *ctx, const char *scheme); int proxy_polarssl_set_host(proxy_polarssl_ctx *ctx, const char *host); void proxy_polarssl_set_port(proxy_polarssl_ctx *ctx, uint16_t port); int proxy_polarssl_recv(void *ctx, unsigned char *data, size_t len); int proxy_polarssl_send(void *ctx, const unsigned char *data, size_t len); #endif /* !PROXY_POLARSSL_H */