52#define GSSKRB_APPLE_DEPRECATED(x)
56#if HAVE_GSSAPI_GSSAPI_H
57#include <gssapi/gssapi.h>
61#if HAVE_GSSAPI_GSSAPI_KRB5_H
62#include <gssapi/gssapi_krb5.h>
69#if HAVE_GSSAPI_GSSAPI_H
70#include <gssapi/gssapi.h>
74#if HAVE_GSSAPI_GSSAPI_KRB5_H
75#include <gssapi/gssapi_krb5.h>
77#if HAVE_GSSAPI_GSSAPI_GENERIC_H
78#include <gssapi/gssapi_generic.h>
80#if HAVE_GSSAPI_GSSAPI_EXT_H
81#include <gssapi/gssapi_ext.h>
85#ifndef gss_nt_service_name
86#define gss_nt_service_name GSS_C_NT_HOSTBASED_SERVICE
89#define PROGRAM "negotiate_kerberos_auth"
91#ifndef MAX_AUTHTOKEN_LEN
92#define MAX_AUTHTOKEN_LEN 65535
94#ifndef SQUID_KERB_AUTH_VERSION
95#define SQUID_KERB_AUTH_VERSION "3.1.0sq"
100static const unsigned char ntlmProtocol[] = {
'N',
'T',
'L',
'M',
'S',
'S',
'P', 0};
106 static time_t last_t = 0;
107 static char buf[128];
109 gettimeofday(&
now,
nullptr);
110 if (
now.tv_sec != last_t) {
112 tm = localtime((time_t *) &
now.tv_sec);
113 strftime(buf, 127,
"%Y/%m/%d %H:%M:%S", tm);
120 const char *function,
int log,
int sout);
124#if (HAVE_GSSKRB5_EXTRACT_AUTHZ_DATA_FROM_SEC_CONTEXT || HAVE_GSS_MAP_NAME_TO_ANY) && HAVE_KRB5_PAC
125#define HAVE_PAC_SUPPORT 1
126#define MAX_PAC_GROUP_SIZE 200*60
134void getustr(RPC_UNICODE_STRING *
string);
135char **getgids(
char **Rids, uint32_t GroupIds, uint32_t GroupCount);
136char *getdomaingids(
char *ad_groups, uint32_t DomainLogonId,
char **Rids, uint32_t GroupCount);
137char *getextrasids(
char *ad_groups, uint32_t ExtraSids, uint32_t SidCount);
138uint64_t get6byt_be(
void);
139uint32_t get4byt(
void);
140uint16_t get2byt(
void);
141uint8_t get1byt(
void);
142char *xstrcpy(
char *src,
const char*dst);
143char *xstrcat(
char *src,
const char*dst);
144int checkustr(RPC_UNICODE_STRING *
string);
145char *get_ad_groups(
char *ad_groups, krb5_context context, krb5_pac pac);
147#define HAVE_PAC_SUPPORT 0
void log(char *format,...)
char * gethost_name(void)
int check_gss_err(OM_uint32 major_status, OM_uint32 minor_status, const char *function, int log, int sout)
int check_k5_err(krb5_context context, const char *msg, krb5_error_code code)
static const unsigned char ntlmProtocol[]