1e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#ifndef HEADER_CURL_GTLS_H
2e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#define HEADER_CURL_GTLS_H
35ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen/***************************************************************************
45ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen *                                  _   _ ____  _
55ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen *  Project                     ___| | | |  _ \| |
65ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen *                             / __| | | | |_) | |
75ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen *                            | (__| |_| |  _ <| |___
85ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen *                             \___|\___/|_| \_\_____|
95ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen *
10d15eaac64ca1a7244824d660ea84e8815a23d058Alex Deymo * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
115ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen *
125ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * This software is licensed as described in the file COPYING, which
135ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * you should have received as part of this distribution. The terms
14d15eaac64ca1a7244824d660ea84e8815a23d058Alex Deymo * are also available at https://curl.haxx.se/docs/copyright.html.
155ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen *
165ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * You may opt to use, copy, modify, merge, publish, distribute and/or sell
175ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * copies of the Software, and permit persons to whom the Software is
185ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * furnished to do so, under the terms of the COPYING file.
195ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen *
205ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
215ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * KIND, either express or implied.
225ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen *
235ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen ***************************************************************************/
245ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen
25e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#include "curl_setup.h"
26e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET
275ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#ifdef USE_GNUTLS
285ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen
29e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#include "urldata.h"
30e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET
315ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsenint Curl_gtls_init(void);
325ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsenint Curl_gtls_cleanup(void);
335ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian MonsenCURLcode Curl_gtls_connect(struct connectdata *conn, int sockindex);
349bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas EckelsCURLcode Curl_gtls_connect_nonblocking(struct connectdata *conn,
359bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels                                       int sockindex,
369bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels                                       bool *done);
375ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen
385ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen /* close a SSL connection */
395ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsenvoid Curl_gtls_close(struct connectdata *conn, int sockindex);
405ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen
415ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsenvoid Curl_gtls_session_free(void *ptr);
425ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsensize_t Curl_gtls_version(char *buffer, size_t size);
435ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsenint Curl_gtls_shutdown(struct connectdata *conn, int sockindex);
44e3149cc1cf501b46caba8d47652ac90b95c78eacAlex Deymoint Curl_gtls_random(struct Curl_easy *data,
45e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET                     unsigned char *entropy,
46e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET                     size_t length);
47e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETvoid Curl_gtls_md5sum(unsigned char *tmp, /* input */
48e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET                      size_t tmplen,
49e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET                      unsigned char *md5sum, /* output */
50e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET                      size_t md5len);
51d15eaac64ca1a7244824d660ea84e8815a23d058Alex Deymovoid Curl_gtls_sha256sum(const unsigned char *tmp, /* input */
52d15eaac64ca1a7244824d660ea84e8815a23d058Alex Deymo                      size_t tmplen,
53d15eaac64ca1a7244824d660ea84e8815a23d058Alex Deymo                      unsigned char *sha256sum, /* output */
54d15eaac64ca1a7244824d660ea84e8815a23d058Alex Deymo                      size_t sha256len);
55e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET
56e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNETbool Curl_gtls_cert_status_request(void);
57e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET
58e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET/* Set the API backend definition to GnuTLS */
59e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#define CURL_SSL_BACKEND CURLSSLBACKEND_GNUTLS
60e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET
61e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET/* this backend supports the CAPATH option */
62e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#define have_curlssl_ca_path 1
63e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET
64e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET/* this backend supports CURLOPT_CERTINFO */
65e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#define have_curlssl_certinfo 1
665ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen
67d15eaac64ca1a7244824d660ea84e8815a23d058Alex Deymo/* this backend supports CURLOPT_PINNEDPUBLICKEY */
68d15eaac64ca1a7244824d660ea84e8815a23d058Alex Deymo#define have_curlssl_pinnedpubkey 1
69d15eaac64ca1a7244824d660ea84e8815a23d058Alex Deymo
705ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen/* API setup for GnuTLS */
715ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#define curlssl_init Curl_gtls_init
725ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#define curlssl_cleanup Curl_gtls_cleanup
735ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#define curlssl_connect Curl_gtls_connect
749bd90e6e25f1e55f50201c87a1b5837de7e5b64aLucas Eckels#define curlssl_connect_nonblocking Curl_gtls_connect_nonblocking
755ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#define curlssl_session_free(x)  Curl_gtls_session_free(x)
76e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#define curlssl_close_all(x) ((void)x)
775ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#define curlssl_close Curl_gtls_close
785ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#define curlssl_shutdown(x,y) Curl_gtls_shutdown(x,y)
79e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#define curlssl_set_engine(x,y) ((void)x, (void)y, CURLE_NOT_BUILT_IN)
80e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#define curlssl_set_engine_default(x) ((void)x, CURLE_NOT_BUILT_IN)
81e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#define curlssl_engines_list(x) ((void)x, (struct curl_slist *)NULL)
825ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#define curlssl_version Curl_gtls_version
83e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#define curlssl_check_cxn(x) ((void)x, -1)
84e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#define curlssl_data_pending(x,y) ((void)x, (void)y, 0)
85e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#define curlssl_random(x,y,z) Curl_gtls_random(x,y,z)
86e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#define curlssl_md5sum(a,b,c,d) Curl_gtls_md5sum(a,b,c,d)
87d15eaac64ca1a7244824d660ea84e8815a23d058Alex Deymo#define curlssl_sha256sum(a,b,c,d) Curl_gtls_sha256sum(a,b,c,d)
88e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#define curlssl_cert_status_request() Curl_gtls_cert_status_request()
895ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen
905ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#endif /* USE_GNUTLS */
91e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#endif /* HEADER_CURL_GTLS_H */
92