Home | History | Annotate | Download | only in src
      1 /*
      2  * proxy-polarssl.h - PolarSSL layer for transparent proxy connections
      3  *
      4  * Based on proxy-bio.c - Original copyright (c) 2012 The Chromium OS Authors.
      5  *
      6  * This file was adapted by Paul Bakker <p.j.bakker (at) offspark.com>
      7  * All rights reserved.
      8  *
      9  * Use of this source code is governed by a BSD-style license that can be
     10  * found in the LICENSE file.
     11  */
     12 
     13 #ifndef PROXY_POLARSSL_H
     14 #define PROXY_POLARSSL_H
     15 
     16 #include <stdint.h>
     17 
     18 typedef struct _proxy_polarssl_ctx proxy_polarssl_ctx;
     19 
     20 struct _proxy_polarssl_ctx {
     21   char *host;
     22   uint16_t port;
     23   int connected;
     24 
     25   int (*f_recv)(void *, unsigned char *, size_t);
     26   int (*f_send)(void *, const unsigned char *, size_t);
     27   int (*f_connect)(proxy_polarssl_ctx *);
     28 
     29   void *p_recv;               /*!< context for reading operations   */
     30   void *p_send;               /*!< context for writing operations   */
     31 };
     32 
     33 int proxy_polarssl_init(proxy_polarssl_ctx *proxy);
     34 int proxy_polarssl_free(proxy_polarssl_ctx *ctx);
     35 
     36 void proxy_polarssl_set_bio(proxy_polarssl_ctx *ctx,
     37                        int (*f_recv)(void *, unsigned char *, size_t), void *p_recv,
     38                        int (*f_send)(void *, const unsigned char *, size_t), void *p_send);
     39 int proxy_polarssl_set_scheme(proxy_polarssl_ctx *ctx, const char *scheme);
     40 int proxy_polarssl_set_host(proxy_polarssl_ctx *ctx, const char *host);
     41 void proxy_polarssl_set_port(proxy_polarssl_ctx *ctx, uint16_t port);
     42 
     43 int proxy_polarssl_recv(void *ctx, unsigned char *data, size_t len);
     44 int proxy_polarssl_send(void *ctx, const unsigned char *data, size_t len);
     45 
     46 #endif /* !PROXY_POLARSSL_H */
     47