spandsp  3.0.0
ssl_fax.h
Go to the documentation of this file.
1 /*
2  * The code in this file was derived from sources taken from (1) HylaFAX+ on
3  * 13 June 2022. That source states that it was derived from (2) GitHub user,
4  * "mrwicks", on 9 Oct 2018. That source, itself, was derived from work by
5  * "Amlendra" published at Aticleworld on 21 May 2017 (3). That work, then,
6  * references programs (4) Copyright (c) 2000 Sean Walton and Macmillan
7  * Publishers (The "Linux Socket Programming" book) and are licensed under
8  * the GPL.
9  *
10  * 1. https://hylafax.sourceforge.net
11  * 2. https://github.com/mrwicks/miscellaneous/tree/master/tls_1.2_example
12  * 3. https://aticleworld.com/ssl-server-client-using-openssl-in-c/
13  * 4. http://www.cs.utah.edu/~swalton/listings/sockets/programs/
14  *
15  * It is, therefore, presumed that this work is either under the* public
16  * domain or is licensed under the GPL. A copy of the GPL is as follows...
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28  * SUCH DAMAGE.
29  */
30 /*! \file */
31 
32 #if !defined(_SPANDSP_SSLFAX_H_)
33 #define _SPANDSP_SSLFAX_H_
34 
35 #if defined(SPANDSP_SUPPORT_SSLFAX)
36 #include <openssl/ssl.h>
37 #include <openssl/err.h>
38 #endif
39 
40 typedef struct sslfax_state_s sslfax_state_t;
41 
42 #if defined(__cplusplus)
43 extern "C"
44 {
45 #endif
46 
47 SPAN_DECLARE(sslfax_state_t *) sslfax_init(sslfax_state_t *s);
48 
49 SPAN_DECLARE(bool) sslfax_start_client(sslfax_state_t *s);
50 
51 SPAN_DECLARE(void) sslfax_cleanup(sslfax_state_t *s, bool sustain);
52 
53 SPAN_DECLARE(int) sslfax_tx(sslfax_state_t *s, int16_t amp[], int len);
54 
55 SPAN_DECLARE(int) sslfax_rx(sslfax_state_t *s, const int16_t amp[], int len);
56 
57 SPAN_DECLARE(void) sslfax_setup(sslfax_state_t *s,
58  span_put_msg_func_t put_msg,
59  span_get_msg_func_t get_msg,
60  hdlc_frame_handler_t hdlc_accept,
61  hdlc_underflow_handler_t hdlc_tx_underflow,
62  bool tx_use_hdlc,
63  bool rx_use_hdlc,
64  span_get_byte_func_t get_phase,
65  void *user_data);
66 
67 SPAN_DECLARE(int) sslfax_write(sslfax_state_t *s, const uint8_t *buf, unsigned int count, int modem_fd, long int ms, bool filter, bool sustain);
68 
69 SPAN_DECLARE(int) sslfax_read(sslfax_state_t *s, void *buf, size_t count, int modem_fd, long ms, bool sustain, bool carryon);
70 
71 #if defined(__cplusplus)
72 }
73 #endif
74 
75 #endif
76 /*- End of file ------------------------------------------------------------*/
int(* span_get_msg_func_t)(void *user_data, uint8_t *msg, int max_len)
Definition: async.h:111
void(* span_put_msg_func_t)(void *user_data, const uint8_t *msg, int len)
Definition: async.h:107
int(* span_get_byte_func_t)(void *user_data)
Definition: async.h:119