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