Annotation of embedaddon/curl/lib/vtls/schannel.h, revision 1.1.1.1

1.1       misho       1: #ifndef HEADER_CURL_SCHANNEL_H
                      2: #define HEADER_CURL_SCHANNEL_H
                      3: /***************************************************************************
                      4:  *                                  _   _ ____  _
                      5:  *  Project                     ___| | | |  _ \| |
                      6:  *                             / __| | | | |_) | |
                      7:  *                            | (__| |_| |  _ <| |___
                      8:  *                             \___|\___/|_| \_\_____|
                      9:  *
                     10:  * Copyright (C) 2012, Marc Hoersken, <info@marc-hoersken.de>, et al.
                     11:  * Copyright (C) 2012 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
                     12:  *
                     13:  * This software is licensed as described in the file COPYING, which
                     14:  * you should have received as part of this distribution. The terms
                     15:  * are also available at https://curl.haxx.se/docs/copyright.html.
                     16:  *
                     17:  * You may opt to use, copy, modify, merge, publish, distribute and/or sell
                     18:  * copies of the Software, and permit persons to whom the Software is
                     19:  * furnished to do so, under the terms of the COPYING file.
                     20:  *
                     21:  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
                     22:  * KIND, either express or implied.
                     23:  *
                     24:  ***************************************************************************/
                     25: #include "curl_setup.h"
                     26: 
                     27: #ifdef USE_SCHANNEL
                     28: 
                     29: #include <schnlsp.h>
                     30: #include <schannel.h>
                     31: #include "curl_sspi.h"
                     32: 
                     33: #include "urldata.h"
                     34: 
                     35: /* <wincrypt.h> has been included via the above <schnlsp.h>.
                     36:  * Or in case of ldap.c, it was included via <winldap.h>.
                     37:  * And since <wincrypt.h> has this:
                     38:  *   #define X509_NAME  ((LPCSTR) 7)
                     39:  *
                     40:  * And in BoringSSL's <openssl/base.h> there is:
                     41:  *  typedef struct X509_name_st X509_NAME;
                     42:  *  etc.
                     43:  *
                     44:  * this will cause all kinds of C-preprocessing paste errors in
                     45:  * BoringSSL's <openssl/x509.h>: So just undefine those defines here
                     46:  * (and only here).
                     47:  */
                     48: #if defined(HAVE_BORINGSSL) || defined(OPENSSL_IS_BORINGSSL)
                     49: # undef X509_NAME
                     50: # undef X509_CERT_PAIR
                     51: # undef X509_EXTENSIONS
                     52: #endif
                     53: 
                     54: extern const struct Curl_ssl Curl_ssl_schannel;
                     55: 
                     56: CURLcode Curl_verify_certificate(struct connectdata *conn, int sockindex);
                     57: 
                     58: /* structs to expose only in schannel.c and schannel_verify.c */
                     59: #ifdef EXPOSE_SCHANNEL_INTERNAL_STRUCTS
                     60: 
                     61: #ifdef __MINGW32__
                     62: #include <_mingw.h>
                     63: #ifdef __MINGW64_VERSION_MAJOR
                     64: #define HAS_MANUAL_VERIFY_API
                     65: #endif
                     66: #else
                     67: #include <wincrypt.h>
                     68: #ifdef CERT_CHAIN_REVOCATION_CHECK_CHAIN
                     69: #define HAS_MANUAL_VERIFY_API
                     70: #endif
                     71: #endif
                     72: 
                     73: struct curl_schannel_cred {
                     74:   CredHandle cred_handle;
                     75:   TimeStamp time_stamp;
                     76:   int refcount;
                     77: };
                     78: 
                     79: struct curl_schannel_ctxt {
                     80:   CtxtHandle ctxt_handle;
                     81:   TimeStamp time_stamp;
                     82: };
                     83: 
                     84: struct ssl_backend_data {
                     85:   struct curl_schannel_cred *cred;
                     86:   struct curl_schannel_ctxt *ctxt;
                     87:   SecPkgContext_StreamSizes stream_sizes;
                     88:   size_t encdata_length, decdata_length;
                     89:   size_t encdata_offset, decdata_offset;
                     90:   unsigned char *encdata_buffer, *decdata_buffer;
                     91:   /* encdata_is_incomplete: if encdata contains only a partial record that
                     92:      can't be decrypted without another Curl_read_plain (that is, status is
                     93:      SEC_E_INCOMPLETE_MESSAGE) then set this true. after Curl_read_plain writes
                     94:      more bytes into encdata then set this back to false. */
                     95:   bool encdata_is_incomplete;
                     96:   unsigned long req_flags, ret_flags;
                     97:   CURLcode recv_unrecoverable_err; /* schannel_recv had an unrecoverable err */
                     98:   bool recv_sspi_close_notify; /* true if connection closed by close_notify */
                     99:   bool recv_connection_closed; /* true if connection closed, regardless how */
                    100:   bool use_alpn; /* true if ALPN is used for this connection */
                    101: #ifdef HAS_MANUAL_VERIFY_API
                    102:   bool use_manual_cred_validation; /* true if manual cred validation is used */
                    103: #endif
                    104: };
                    105: #endif /* EXPOSE_SCHANNEL_INTERNAL_STRUCTS */
                    106: 
                    107: #endif /* USE_SCHANNEL */
                    108: #endif /* HEADER_CURL_SCHANNEL_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>