1*5e7646d2SAndroid Build Coastguard Worker /* 2*5e7646d2SAndroid Build Coastguard Worker * Private HTTP definitions for CUPS. 3*5e7646d2SAndroid Build Coastguard Worker * 4*5e7646d2SAndroid Build Coastguard Worker * Copyright 2007-2018 by Apple Inc. 5*5e7646d2SAndroid Build Coastguard Worker * Copyright 1997-2007 by Easy Software Products, all rights reserved. 6*5e7646d2SAndroid Build Coastguard Worker * 7*5e7646d2SAndroid Build Coastguard Worker * Licensed under Apache License v2.0. See the file "LICENSE" for more 8*5e7646d2SAndroid Build Coastguard Worker * information. 9*5e7646d2SAndroid Build Coastguard Worker */ 10*5e7646d2SAndroid Build Coastguard Worker 11*5e7646d2SAndroid Build Coastguard Worker #ifndef _CUPS_HTTP_PRIVATE_H_ 12*5e7646d2SAndroid Build Coastguard Worker # define _CUPS_HTTP_PRIVATE_H_ 13*5e7646d2SAndroid Build Coastguard Worker 14*5e7646d2SAndroid Build Coastguard Worker /* 15*5e7646d2SAndroid Build Coastguard Worker * Include necessary headers... 16*5e7646d2SAndroid Build Coastguard Worker */ 17*5e7646d2SAndroid Build Coastguard Worker 18*5e7646d2SAndroid Build Coastguard Worker # include "config.h" 19*5e7646d2SAndroid Build Coastguard Worker # include <cups/language.h> 20*5e7646d2SAndroid Build Coastguard Worker # include <stddef.h> 21*5e7646d2SAndroid Build Coastguard Worker # include <stdlib.h> 22*5e7646d2SAndroid Build Coastguard Worker 23*5e7646d2SAndroid Build Coastguard Worker # ifdef __sun 24*5e7646d2SAndroid Build Coastguard Worker # include <sys/select.h> 25*5e7646d2SAndroid Build Coastguard Worker # endif /* __sun */ 26*5e7646d2SAndroid Build Coastguard Worker 27*5e7646d2SAndroid Build Coastguard Worker # include <limits.h> 28*5e7646d2SAndroid Build Coastguard Worker # ifdef _WIN32 29*5e7646d2SAndroid Build Coastguard Worker # define _WINSOCK_DEPRECATED_NO_WARNINGS 1 30*5e7646d2SAndroid Build Coastguard Worker # include <io.h> 31*5e7646d2SAndroid Build Coastguard Worker # include <winsock2.h> 32*5e7646d2SAndroid Build Coastguard Worker # define CUPS_SOCAST (const char *) 33*5e7646d2SAndroid Build Coastguard Worker # else 34*5e7646d2SAndroid Build Coastguard Worker # include <unistd.h> 35*5e7646d2SAndroid Build Coastguard Worker # include <fcntl.h> 36*5e7646d2SAndroid Build Coastguard Worker # include <sys/socket.h> 37*5e7646d2SAndroid Build Coastguard Worker # define CUPS_SOCAST 38*5e7646d2SAndroid Build Coastguard Worker # endif /* _WIN32 */ 39*5e7646d2SAndroid Build Coastguard Worker 40*5e7646d2SAndroid Build Coastguard Worker # ifdef HAVE_GSSAPI 41*5e7646d2SAndroid Build Coastguard Worker # ifdef HAVE_GSS_GSSAPI_H 42*5e7646d2SAndroid Build Coastguard Worker # include <GSS/gssapi.h> 43*5e7646d2SAndroid Build Coastguard Worker # elif defined(HAVE_GSSAPI_GSSAPI_H) 44*5e7646d2SAndroid Build Coastguard Worker # include <gssapi/gssapi.h> 45*5e7646d2SAndroid Build Coastguard Worker # elif defined(HAVE_GSSAPI_H) 46*5e7646d2SAndroid Build Coastguard Worker # include <gssapi.h> 47*5e7646d2SAndroid Build Coastguard Worker # endif /* HAVE_GSS_GSSAPI_H */ 48*5e7646d2SAndroid Build Coastguard Worker # ifndef HAVE_GSS_C_NT_HOSTBASED_SERVICE 49*5e7646d2SAndroid Build Coastguard Worker # define GSS_C_NT_HOSTBASED_SERVICE gss_nt_service_name 50*5e7646d2SAndroid Build Coastguard Worker # endif /* !HAVE_GSS_C_NT_HOSTBASED_SERVICE */ 51*5e7646d2SAndroid Build Coastguard Worker # endif /* HAVE_GSSAPI */ 52*5e7646d2SAndroid Build Coastguard Worker 53*5e7646d2SAndroid Build Coastguard Worker # ifdef HAVE_AUTHORIZATION_H 54*5e7646d2SAndroid Build Coastguard Worker # include <Security/Authorization.h> 55*5e7646d2SAndroid Build Coastguard Worker # endif /* HAVE_AUTHORIZATION_H */ 56*5e7646d2SAndroid Build Coastguard Worker 57*5e7646d2SAndroid Build Coastguard Worker # if defined(__APPLE__) && !defined(_SOCKLEN_T) 58*5e7646d2SAndroid Build Coastguard Worker /* 59*5e7646d2SAndroid Build Coastguard Worker * macOS 10.2.x does not define socklen_t, and in fact uses an int instead of 60*5e7646d2SAndroid Build Coastguard Worker * unsigned type for length values... 61*5e7646d2SAndroid Build Coastguard Worker */ 62*5e7646d2SAndroid Build Coastguard Worker 63*5e7646d2SAndroid Build Coastguard Worker typedef int socklen_t; 64*5e7646d2SAndroid Build Coastguard Worker # endif /* __APPLE__ && !_SOCKLEN_T */ 65*5e7646d2SAndroid Build Coastguard Worker 66*5e7646d2SAndroid Build Coastguard Worker # include <cups/http.h> 67*5e7646d2SAndroid Build Coastguard Worker # include "ipp-private.h" 68*5e7646d2SAndroid Build Coastguard Worker 69*5e7646d2SAndroid Build Coastguard Worker # ifdef HAVE_GNUTLS 70*5e7646d2SAndroid Build Coastguard Worker # include <gnutls/gnutls.h> 71*5e7646d2SAndroid Build Coastguard Worker # include <gnutls/x509.h> 72*5e7646d2SAndroid Build Coastguard Worker # elif defined(HAVE_CDSASSL) 73*5e7646d2SAndroid Build Coastguard Worker # include <CoreFoundation/CoreFoundation.h> 74*5e7646d2SAndroid Build Coastguard Worker # include <Security/Security.h> 75*5e7646d2SAndroid Build Coastguard Worker # include <Security/SecureTransport.h> 76*5e7646d2SAndroid Build Coastguard Worker # ifdef HAVE_SECITEM_H 77*5e7646d2SAndroid Build Coastguard Worker # include <Security/SecItem.h> 78*5e7646d2SAndroid Build Coastguard Worker # endif /* HAVE_SECITEM_H */ 79*5e7646d2SAndroid Build Coastguard Worker # ifdef HAVE_SECCERTIFICATE_H 80*5e7646d2SAndroid Build Coastguard Worker # include <Security/SecCertificate.h> 81*5e7646d2SAndroid Build Coastguard Worker # include <Security/SecIdentity.h> 82*5e7646d2SAndroid Build Coastguard Worker # endif /* HAVE_SECCERTIFICATE_H */ 83*5e7646d2SAndroid Build Coastguard Worker # elif defined(HAVE_SSPISSL) 84*5e7646d2SAndroid Build Coastguard Worker # include <wincrypt.h> 85*5e7646d2SAndroid Build Coastguard Worker # include <wintrust.h> 86*5e7646d2SAndroid Build Coastguard Worker # include <schannel.h> 87*5e7646d2SAndroid Build Coastguard Worker # define SECURITY_WIN32 88*5e7646d2SAndroid Build Coastguard Worker # include <security.h> 89*5e7646d2SAndroid Build Coastguard Worker # include <sspi.h> 90*5e7646d2SAndroid Build Coastguard Worker # endif /* HAVE_GNUTLS */ 91*5e7646d2SAndroid Build Coastguard Worker 92*5e7646d2SAndroid Build Coastguard Worker # ifndef _WIN32 93*5e7646d2SAndroid Build Coastguard Worker # include <net/if.h> 94*5e7646d2SAndroid Build Coastguard Worker # include <resolv.h> 95*5e7646d2SAndroid Build Coastguard Worker # ifdef HAVE_GETIFADDRS 96*5e7646d2SAndroid Build Coastguard Worker # include <ifaddrs.h> 97*5e7646d2SAndroid Build Coastguard Worker # else 98*5e7646d2SAndroid Build Coastguard Worker # include <sys/ioctl.h> 99*5e7646d2SAndroid Build Coastguard Worker # ifdef HAVE_SYS_SOCKIO_H 100*5e7646d2SAndroid Build Coastguard Worker # include <sys/sockio.h> 101*5e7646d2SAndroid Build Coastguard Worker # endif /* HAVE_SYS_SOCKIO_H */ 102*5e7646d2SAndroid Build Coastguard Worker # endif /* HAVE_GETIFADDRS */ 103*5e7646d2SAndroid Build Coastguard Worker # endif /* !_WIN32 */ 104*5e7646d2SAndroid Build Coastguard Worker 105*5e7646d2SAndroid Build Coastguard Worker 106*5e7646d2SAndroid Build Coastguard Worker /* 107*5e7646d2SAndroid Build Coastguard Worker * C++ magic... 108*5e7646d2SAndroid Build Coastguard Worker */ 109*5e7646d2SAndroid Build Coastguard Worker 110*5e7646d2SAndroid Build Coastguard Worker # ifdef __cplusplus 111*5e7646d2SAndroid Build Coastguard Worker extern "C" { 112*5e7646d2SAndroid Build Coastguard Worker # endif /* __cplusplus */ 113*5e7646d2SAndroid Build Coastguard Worker 114*5e7646d2SAndroid Build Coastguard Worker 115*5e7646d2SAndroid Build Coastguard Worker /* 116*5e7646d2SAndroid Build Coastguard Worker * Constants... 117*5e7646d2SAndroid Build Coastguard Worker */ 118*5e7646d2SAndroid Build Coastguard Worker 119*5e7646d2SAndroid Build Coastguard Worker # define _HTTP_MAX_SBUFFER 65536 /* Size of (de)compression buffer */ 120*5e7646d2SAndroid Build Coastguard Worker # define _HTTP_RESOLVE_DEFAULT 0 /* Just resolve with default options */ 121*5e7646d2SAndroid Build Coastguard Worker # define _HTTP_RESOLVE_STDERR 1 /* Log resolve progress to stderr */ 122*5e7646d2SAndroid Build Coastguard Worker # define _HTTP_RESOLVE_FQDN 2 /* Resolve to a FQDN */ 123*5e7646d2SAndroid Build Coastguard Worker # define _HTTP_RESOLVE_FAXOUT 4 /* Resolve FaxOut service? */ 124*5e7646d2SAndroid Build Coastguard Worker 125*5e7646d2SAndroid Build Coastguard Worker # define _HTTP_TLS_NONE 0 /* No TLS options */ 126*5e7646d2SAndroid Build Coastguard Worker # define _HTTP_TLS_ALLOW_RC4 1 /* Allow RC4 cipher suites */ 127*5e7646d2SAndroid Build Coastguard Worker # define _HTTP_TLS_ALLOW_DH 2 /* Allow DH/DHE key negotiation */ 128*5e7646d2SAndroid Build Coastguard Worker # define _HTTP_TLS_DENY_CBC 4 /* Deny CBC cipher suites */ 129*5e7646d2SAndroid Build Coastguard Worker # define _HTTP_TLS_SET_DEFAULT 128 /* Setting the default TLS options */ 130*5e7646d2SAndroid Build Coastguard Worker 131*5e7646d2SAndroid Build Coastguard Worker # define _HTTP_TLS_SSL3 0 /* Min/max version is SSL/3.0 */ 132*5e7646d2SAndroid Build Coastguard Worker # define _HTTP_TLS_1_0 1 /* Min/max version is TLS/1.0 */ 133*5e7646d2SAndroid Build Coastguard Worker # define _HTTP_TLS_1_1 2 /* Min/max version is TLS/1.1 */ 134*5e7646d2SAndroid Build Coastguard Worker # define _HTTP_TLS_1_2 3 /* Min/max version is TLS/1.2 */ 135*5e7646d2SAndroid Build Coastguard Worker # define _HTTP_TLS_1_3 4 /* Min/max version is TLS/1.3 */ 136*5e7646d2SAndroid Build Coastguard Worker # define _HTTP_TLS_MAX 5 /* Highest known TLS version */ 137*5e7646d2SAndroid Build Coastguard Worker 138*5e7646d2SAndroid Build Coastguard Worker 139*5e7646d2SAndroid Build Coastguard Worker /* 140*5e7646d2SAndroid Build Coastguard Worker * Types and functions for SSL support... 141*5e7646d2SAndroid Build Coastguard Worker */ 142*5e7646d2SAndroid Build Coastguard Worker 143*5e7646d2SAndroid Build Coastguard Worker # ifdef HAVE_GNUTLS 144*5e7646d2SAndroid Build Coastguard Worker /* 145*5e7646d2SAndroid Build Coastguard Worker * The GNU TLS library is more of a "bare metal" SSL/TLS library... 146*5e7646d2SAndroid Build Coastguard Worker */ 147*5e7646d2SAndroid Build Coastguard Worker 148*5e7646d2SAndroid Build Coastguard Worker typedef gnutls_session_t http_tls_t; 149*5e7646d2SAndroid Build Coastguard Worker typedef gnutls_certificate_credentials_t *http_tls_credentials_t; 150*5e7646d2SAndroid Build Coastguard Worker 151*5e7646d2SAndroid Build Coastguard Worker # elif defined(HAVE_CDSASSL) 152*5e7646d2SAndroid Build Coastguard Worker /* 153*5e7646d2SAndroid Build Coastguard Worker * Darwin's Security framework provides its own SSL/TLS context structure 154*5e7646d2SAndroid Build Coastguard Worker * for its IO and protocol management... 155*5e7646d2SAndroid Build Coastguard Worker */ 156*5e7646d2SAndroid Build Coastguard Worker 157*5e7646d2SAndroid Build Coastguard Worker typedef SSLContextRef http_tls_t; 158*5e7646d2SAndroid Build Coastguard Worker typedef CFArrayRef http_tls_credentials_t; 159*5e7646d2SAndroid Build Coastguard Worker 160*5e7646d2SAndroid Build Coastguard Worker # elif defined(HAVE_SSPISSL) 161*5e7646d2SAndroid Build Coastguard Worker /* 162*5e7646d2SAndroid Build Coastguard Worker * Windows' SSPI library gets a CUPS wrapper... 163*5e7646d2SAndroid Build Coastguard Worker */ 164*5e7646d2SAndroid Build Coastguard Worker 165*5e7646d2SAndroid Build Coastguard Worker typedef struct _http_sspi_s /**** SSPI/SSL data structure ****/ 166*5e7646d2SAndroid Build Coastguard Worker { 167*5e7646d2SAndroid Build Coastguard Worker CredHandle creds; /* Credentials */ 168*5e7646d2SAndroid Build Coastguard Worker CtxtHandle context; /* SSL context */ 169*5e7646d2SAndroid Build Coastguard Worker BOOL contextInitialized; /* Is context init'd? */ 170*5e7646d2SAndroid Build Coastguard Worker SecPkgContext_StreamSizes streamSizes;/* SSL data stream sizes */ 171*5e7646d2SAndroid Build Coastguard Worker BYTE *decryptBuffer; /* Data pre-decryption*/ 172*5e7646d2SAndroid Build Coastguard Worker size_t decryptBufferLength; /* Length of decrypt buffer */ 173*5e7646d2SAndroid Build Coastguard Worker size_t decryptBufferUsed; /* Bytes used in buffer */ 174*5e7646d2SAndroid Build Coastguard Worker BYTE *readBuffer; /* Data post-decryption */ 175*5e7646d2SAndroid Build Coastguard Worker int readBufferLength; /* Length of read buffer */ 176*5e7646d2SAndroid Build Coastguard Worker int readBufferUsed; /* Bytes used in buffer */ 177*5e7646d2SAndroid Build Coastguard Worker BYTE *writeBuffer; /* Data pre-encryption */ 178*5e7646d2SAndroid Build Coastguard Worker int writeBufferLength; /* Length of write buffer */ 179*5e7646d2SAndroid Build Coastguard Worker PCCERT_CONTEXT localCert, /* Local certificate */ 180*5e7646d2SAndroid Build Coastguard Worker remoteCert; /* Remote (peer's) certificate */ 181*5e7646d2SAndroid Build Coastguard Worker char error[256]; /* Most recent error message */ 182*5e7646d2SAndroid Build Coastguard Worker } _http_sspi_t; 183*5e7646d2SAndroid Build Coastguard Worker typedef _http_sspi_t *http_tls_t; 184*5e7646d2SAndroid Build Coastguard Worker typedef PCCERT_CONTEXT http_tls_credentials_t; 185*5e7646d2SAndroid Build Coastguard Worker 186*5e7646d2SAndroid Build Coastguard Worker # else 187*5e7646d2SAndroid Build Coastguard Worker /* 188*5e7646d2SAndroid Build Coastguard Worker * Otherwise define stub types since we have no SSL support... 189*5e7646d2SAndroid Build Coastguard Worker */ 190*5e7646d2SAndroid Build Coastguard Worker 191*5e7646d2SAndroid Build Coastguard Worker typedef void *http_tls_t; 192*5e7646d2SAndroid Build Coastguard Worker typedef void *http_tls_credentials_t; 193*5e7646d2SAndroid Build Coastguard Worker # endif /* HAVE_GNUTLS */ 194*5e7646d2SAndroid Build Coastguard Worker 195*5e7646d2SAndroid Build Coastguard Worker typedef enum _http_coding_e /**** HTTP content coding enumeration ****/ 196*5e7646d2SAndroid Build Coastguard Worker { 197*5e7646d2SAndroid Build Coastguard Worker _HTTP_CODING_IDENTITY, /* No content coding */ 198*5e7646d2SAndroid Build Coastguard Worker _HTTP_CODING_GZIP, /* LZ77+gzip decompression */ 199*5e7646d2SAndroid Build Coastguard Worker _HTTP_CODING_DEFLATE, /* LZ77+zlib compression */ 200*5e7646d2SAndroid Build Coastguard Worker _HTTP_CODING_GUNZIP, /* LZ77+gzip decompression */ 201*5e7646d2SAndroid Build Coastguard Worker _HTTP_CODING_INFLATE /* LZ77+zlib decompression */ 202*5e7646d2SAndroid Build Coastguard Worker } _http_coding_t; 203*5e7646d2SAndroid Build Coastguard Worker 204*5e7646d2SAndroid Build Coastguard Worker typedef enum _http_mode_e /**** HTTP mode enumeration ****/ 205*5e7646d2SAndroid Build Coastguard Worker { 206*5e7646d2SAndroid Build Coastguard Worker _HTTP_MODE_CLIENT, /* Client connected to server */ 207*5e7646d2SAndroid Build Coastguard Worker _HTTP_MODE_SERVER /* Server connected (accepted) from client */ 208*5e7646d2SAndroid Build Coastguard Worker } _http_mode_t; 209*5e7646d2SAndroid Build Coastguard Worker 210*5e7646d2SAndroid Build Coastguard Worker # ifndef _HTTP_NO_PRIVATE 211*5e7646d2SAndroid Build Coastguard Worker struct _http_s /**** HTTP connection structure ****/ 212*5e7646d2SAndroid Build Coastguard Worker { 213*5e7646d2SAndroid Build Coastguard Worker int fd; /* File descriptor for this socket */ 214*5e7646d2SAndroid Build Coastguard Worker int blocking; /* To block or not to block */ 215*5e7646d2SAndroid Build Coastguard Worker int error; /* Last error on read */ 216*5e7646d2SAndroid Build Coastguard Worker time_t activity; /* Time since last read/write */ 217*5e7646d2SAndroid Build Coastguard Worker http_state_t state; /* State of client */ 218*5e7646d2SAndroid Build Coastguard Worker http_status_t status; /* Status of last request */ 219*5e7646d2SAndroid Build Coastguard Worker http_version_t version; /* Protocol version */ 220*5e7646d2SAndroid Build Coastguard Worker http_keepalive_t keep_alive; /* Keep-alive supported? */ 221*5e7646d2SAndroid Build Coastguard Worker struct sockaddr_in _hostaddr; /* Address of connected host (deprecated) */ 222*5e7646d2SAndroid Build Coastguard Worker char hostname[HTTP_MAX_HOST], 223*5e7646d2SAndroid Build Coastguard Worker /* Name of connected host */ 224*5e7646d2SAndroid Build Coastguard Worker _fields[HTTP_FIELD_ACCEPT_ENCODING][HTTP_MAX_VALUE]; 225*5e7646d2SAndroid Build Coastguard Worker /* Field values up to Accept-Encoding (deprecated) */ 226*5e7646d2SAndroid Build Coastguard Worker char *data; /* Pointer to data buffer */ 227*5e7646d2SAndroid Build Coastguard Worker http_encoding_t data_encoding; /* Chunked or not */ 228*5e7646d2SAndroid Build Coastguard Worker int _data_remaining;/* Number of bytes left (deprecated) */ 229*5e7646d2SAndroid Build Coastguard Worker int used; /* Number of bytes used in buffer */ 230*5e7646d2SAndroid Build Coastguard Worker char buffer[HTTP_MAX_BUFFER]; 231*5e7646d2SAndroid Build Coastguard Worker /* Buffer for incoming data */ 232*5e7646d2SAndroid Build Coastguard Worker int _auth_type; /* Authentication in use (deprecated) */ 233*5e7646d2SAndroid Build Coastguard Worker unsigned char _md5_state[88]; /* MD5 state (deprecated) */ 234*5e7646d2SAndroid Build Coastguard Worker char nonce[HTTP_MAX_VALUE]; 235*5e7646d2SAndroid Build Coastguard Worker /* Nonce value */ 236*5e7646d2SAndroid Build Coastguard Worker unsigned nonce_count; /* Nonce count */ 237*5e7646d2SAndroid Build Coastguard Worker http_tls_t tls; /* TLS state information */ 238*5e7646d2SAndroid Build Coastguard Worker http_encryption_t encryption; /* Encryption requirements */ 239*5e7646d2SAndroid Build Coastguard Worker 240*5e7646d2SAndroid Build Coastguard Worker /**** New in CUPS 1.1.19 ****/ 241*5e7646d2SAndroid Build Coastguard Worker fd_set *input_set; /* select() set for httpWait() (deprecated) */ 242*5e7646d2SAndroid Build Coastguard Worker http_status_t expect; /* Expect: header */ 243*5e7646d2SAndroid Build Coastguard Worker char *cookie; /* Cookie value(s) */ 244*5e7646d2SAndroid Build Coastguard Worker 245*5e7646d2SAndroid Build Coastguard Worker /**** New in CUPS 1.1.20 ****/ 246*5e7646d2SAndroid Build Coastguard Worker char _authstring[HTTP_MAX_VALUE], 247*5e7646d2SAndroid Build Coastguard Worker /* Current Authorization value (deprecated) */ 248*5e7646d2SAndroid Build Coastguard Worker userpass[HTTP_MAX_VALUE]; 249*5e7646d2SAndroid Build Coastguard Worker /* Username:password string */ 250*5e7646d2SAndroid Build Coastguard Worker int digest_tries; /* Number of tries for digest auth */ 251*5e7646d2SAndroid Build Coastguard Worker 252*5e7646d2SAndroid Build Coastguard Worker /**** New in CUPS 1.2 ****/ 253*5e7646d2SAndroid Build Coastguard Worker off_t data_remaining; /* Number of bytes left */ 254*5e7646d2SAndroid Build Coastguard Worker http_addr_t *hostaddr; /* Current host address and port */ 255*5e7646d2SAndroid Build Coastguard Worker http_addrlist_t *addrlist; /* List of valid addresses */ 256*5e7646d2SAndroid Build Coastguard Worker char wbuffer[HTTP_MAX_BUFFER]; 257*5e7646d2SAndroid Build Coastguard Worker /* Buffer for outgoing data */ 258*5e7646d2SAndroid Build Coastguard Worker int wused; /* Write buffer bytes used */ 259*5e7646d2SAndroid Build Coastguard Worker 260*5e7646d2SAndroid Build Coastguard Worker /**** New in CUPS 1.3 ****/ 261*5e7646d2SAndroid Build Coastguard Worker char *authstring; /* Current Authorization field */ 262*5e7646d2SAndroid Build Coastguard Worker # ifdef HAVE_GSSAPI 263*5e7646d2SAndroid Build Coastguard Worker gss_OID gssmech; /* Authentication mechanism */ 264*5e7646d2SAndroid Build Coastguard Worker gss_ctx_id_t gssctx; /* Authentication context */ 265*5e7646d2SAndroid Build Coastguard Worker gss_name_t gssname; /* Authentication server name */ 266*5e7646d2SAndroid Build Coastguard Worker # endif /* HAVE_GSSAPI */ 267*5e7646d2SAndroid Build Coastguard Worker # ifdef HAVE_AUTHORIZATION_H 268*5e7646d2SAndroid Build Coastguard Worker AuthorizationRef auth_ref; /* Authorization ref */ 269*5e7646d2SAndroid Build Coastguard Worker # endif /* HAVE_AUTHORIZATION_H */ 270*5e7646d2SAndroid Build Coastguard Worker 271*5e7646d2SAndroid Build Coastguard Worker /**** New in CUPS 1.5 ****/ 272*5e7646d2SAndroid Build Coastguard Worker http_tls_credentials_t tls_credentials; 273*5e7646d2SAndroid Build Coastguard Worker /* TLS credentials */ 274*5e7646d2SAndroid Build Coastguard Worker http_timeout_cb_t timeout_cb; /* Timeout callback */ 275*5e7646d2SAndroid Build Coastguard Worker void *timeout_data; /* User data pointer */ 276*5e7646d2SAndroid Build Coastguard Worker double timeout_value; /* Timeout in seconds */ 277*5e7646d2SAndroid Build Coastguard Worker int wait_value; /* httpWait value for timeout */ 278*5e7646d2SAndroid Build Coastguard Worker # ifdef HAVE_GSSAPI 279*5e7646d2SAndroid Build Coastguard Worker char gsshost[256]; /* Hostname for Kerberos */ 280*5e7646d2SAndroid Build Coastguard Worker # endif /* HAVE_GSSAPI */ 281*5e7646d2SAndroid Build Coastguard Worker 282*5e7646d2SAndroid Build Coastguard Worker /**** New in CUPS 1.7 ****/ 283*5e7646d2SAndroid Build Coastguard Worker int tls_upgrade; /* Non-zero if we are doing an upgrade */ 284*5e7646d2SAndroid Build Coastguard Worker _http_mode_t mode; /* _HTTP_MODE_CLIENT or _HTTP_MODE_SERVER */ 285*5e7646d2SAndroid Build Coastguard Worker # ifdef HAVE_LIBZ 286*5e7646d2SAndroid Build Coastguard Worker _http_coding_t coding; /* _HTTP_CODING_xxx */ 287*5e7646d2SAndroid Build Coastguard Worker void *stream; /* (De)compression stream */ 288*5e7646d2SAndroid Build Coastguard Worker unsigned char *sbuffer; /* (De)compression buffer */ 289*5e7646d2SAndroid Build Coastguard Worker # endif /* HAVE_LIBZ */ 290*5e7646d2SAndroid Build Coastguard Worker 291*5e7646d2SAndroid Build Coastguard Worker /**** New in CUPS 2.2.9 ****/ 292*5e7646d2SAndroid Build Coastguard Worker char algorithm[65], /* Algorithm from WWW-Authenticate */ 293*5e7646d2SAndroid Build Coastguard Worker nextnonce[HTTP_MAX_VALUE], 294*5e7646d2SAndroid Build Coastguard Worker /* Next nonce value from Authentication-Info */ 295*5e7646d2SAndroid Build Coastguard Worker opaque[HTTP_MAX_VALUE], 296*5e7646d2SAndroid Build Coastguard Worker /* Opaque value from WWW-Authenticate */ 297*5e7646d2SAndroid Build Coastguard Worker realm[HTTP_MAX_VALUE]; 298*5e7646d2SAndroid Build Coastguard Worker /* Realm from WWW-Authenticate */ 299*5e7646d2SAndroid Build Coastguard Worker 300*5e7646d2SAndroid Build Coastguard Worker /**** New in CUPS 2.3 ****/ 301*5e7646d2SAndroid Build Coastguard Worker char *fields[HTTP_FIELD_MAX], 302*5e7646d2SAndroid Build Coastguard Worker /* Allocated field values */ 303*5e7646d2SAndroid Build Coastguard Worker *default_fields[HTTP_FIELD_MAX]; 304*5e7646d2SAndroid Build Coastguard Worker /* Default field values, if any */ 305*5e7646d2SAndroid Build Coastguard Worker }; 306*5e7646d2SAndroid Build Coastguard Worker # endif /* !_HTTP_NO_PRIVATE */ 307*5e7646d2SAndroid Build Coastguard Worker 308*5e7646d2SAndroid Build Coastguard Worker 309*5e7646d2SAndroid Build Coastguard Worker /* 310*5e7646d2SAndroid Build Coastguard Worker * Some OS's don't have hstrerror(), most notably Solaris... 311*5e7646d2SAndroid Build Coastguard Worker */ 312*5e7646d2SAndroid Build Coastguard Worker 313*5e7646d2SAndroid Build Coastguard Worker # ifndef HAVE_HSTRERROR 314*5e7646d2SAndroid Build Coastguard Worker extern const char *_cups_hstrerror(int error); 315*5e7646d2SAndroid Build Coastguard Worker # define hstrerror _cups_hstrerror 316*5e7646d2SAndroid Build Coastguard Worker # endif /* !HAVE_HSTRERROR */ 317*5e7646d2SAndroid Build Coastguard Worker 318*5e7646d2SAndroid Build Coastguard Worker 319*5e7646d2SAndroid Build Coastguard Worker /* 320*5e7646d2SAndroid Build Coastguard Worker * Prototypes... 321*5e7646d2SAndroid Build Coastguard Worker */ 322*5e7646d2SAndroid Build Coastguard Worker 323*5e7646d2SAndroid Build Coastguard Worker extern void _httpAddrSetPort(http_addr_t *addr, int port) _CUPS_PRIVATE; 324*5e7646d2SAndroid Build Coastguard Worker extern http_tls_credentials_t 325*5e7646d2SAndroid Build Coastguard Worker _httpCreateCredentials(cups_array_t *credentials) _CUPS_PRIVATE; 326*5e7646d2SAndroid Build Coastguard Worker extern char *_httpDecodeURI(char *dst, const char *src, 327*5e7646d2SAndroid Build Coastguard Worker size_t dstsize) _CUPS_PRIVATE; 328*5e7646d2SAndroid Build Coastguard Worker extern void _httpDisconnect(http_t *http) _CUPS_PRIVATE; 329*5e7646d2SAndroid Build Coastguard Worker extern char *_httpEncodeURI(char *dst, const char *src, 330*5e7646d2SAndroid Build Coastguard Worker size_t dstsize) _CUPS_PRIVATE; 331*5e7646d2SAndroid Build Coastguard Worker extern void _httpFreeCredentials(http_tls_credentials_t credentials) _CUPS_PRIVATE; 332*5e7646d2SAndroid Build Coastguard Worker extern const char *_httpResolveURI(const char *uri, char *resolved_uri, 333*5e7646d2SAndroid Build Coastguard Worker size_t resolved_size, int options, 334*5e7646d2SAndroid Build Coastguard Worker int (*cb)(void *context), 335*5e7646d2SAndroid Build Coastguard Worker void *context) _CUPS_PRIVATE; 336*5e7646d2SAndroid Build Coastguard Worker extern int _httpSetDigestAuthString(http_t *http, const char *nonce, const char *method, const char *resource) _CUPS_PRIVATE; 337*5e7646d2SAndroid Build Coastguard Worker extern const char *_httpStatus(cups_lang_t *lang, http_status_t status) _CUPS_PRIVATE; 338*5e7646d2SAndroid Build Coastguard Worker extern void _httpTLSInitialize(void) _CUPS_PRIVATE; 339*5e7646d2SAndroid Build Coastguard Worker extern size_t _httpTLSPending(http_t *http) _CUPS_PRIVATE; 340*5e7646d2SAndroid Build Coastguard Worker extern int _httpTLSRead(http_t *http, char *buf, int len) _CUPS_PRIVATE; 341*5e7646d2SAndroid Build Coastguard Worker extern void _httpTLSSetOptions(int options, int min_version, int max_version) _CUPS_PRIVATE; 342*5e7646d2SAndroid Build Coastguard Worker extern int _httpTLSStart(http_t *http) _CUPS_PRIVATE; 343*5e7646d2SAndroid Build Coastguard Worker extern void _httpTLSStop(http_t *http) _CUPS_PRIVATE; 344*5e7646d2SAndroid Build Coastguard Worker extern int _httpTLSWrite(http_t *http, const char *buf, int len) _CUPS_PRIVATE; 345*5e7646d2SAndroid Build Coastguard Worker extern int _httpUpdate(http_t *http, http_status_t *status) _CUPS_PRIVATE; 346*5e7646d2SAndroid Build Coastguard Worker extern int _httpWait(http_t *http, int msec, int usessl) _CUPS_PRIVATE; 347*5e7646d2SAndroid Build Coastguard Worker 348*5e7646d2SAndroid Build Coastguard Worker 349*5e7646d2SAndroid Build Coastguard Worker /* 350*5e7646d2SAndroid Build Coastguard Worker * C++ magic... 351*5e7646d2SAndroid Build Coastguard Worker */ 352*5e7646d2SAndroid Build Coastguard Worker 353*5e7646d2SAndroid Build Coastguard Worker # ifdef __cplusplus 354*5e7646d2SAndroid Build Coastguard Worker } 355*5e7646d2SAndroid Build Coastguard Worker # endif /* __cplusplus */ 356*5e7646d2SAndroid Build Coastguard Worker 357*5e7646d2SAndroid Build Coastguard Worker #endif /* !_CUPS_HTTP_PRIVATE_H_ */ 358