1/* 2 Unix SMB/CIFS implementation. 3 4 RFC2478 Compliant SPNEGO implementation 5 6 Copyright (C) Jim McDonough <jmcd@us.ibm.com> 2003 7 8 This program is free software; you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation; either version 3 of the License, or 11 (at your option) any later version. 12 13 This program is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 19 You should have received a copy of the GNU General Public License 20 along with this program. If not, see <http://www.gnu.org/licenses/>. 21*/ 22 23#define OID_SPNEGO "1.3.6.1.5.5.2" 24#define OID_NTLMSSP "1.3.6.1.4.1.311.2.2.10" 25#define OID_KERBEROS5_OLD "1.2.840.48018.1.2.2" 26#define OID_KERBEROS5 "1.2.840.113554.1.2.2" 27 28#define SPNEGO_DELEG_FLAG 0x01 29#define SPNEGO_MUTUAL_FLAG 0x02 30#define SPNEGO_REPLAY_FLAG 0x04 31#define SPNEGO_SEQUENCE_FLAG 0x08 32#define SPNEGO_ANON_FLAG 0x10 33#define SPNEGO_CONF_FLAG 0x20 34#define SPNEGO_INTEG_FLAG 0x40 35 36enum spnego_negResult { 37 SPNEGO_ACCEPT_COMPLETED = 0, 38 SPNEGO_ACCEPT_INCOMPLETE = 1, 39 SPNEGO_REJECT = 2, 40 SPNEGO_NONE_RESULT = 3 41}; 42 43struct spnego_negTokenInit { 44 const char **mechTypes; 45 DATA_BLOB reqFlags; 46 uint8_t reqFlagsPadding; 47 DATA_BLOB mechToken; 48 DATA_BLOB mechListMIC; 49 char *targetPrincipal; 50}; 51 52struct spnego_negTokenTarg { 53 uint8_t negResult; 54 const char *supportedMech; 55 DATA_BLOB responseToken; 56 DATA_BLOB mechListMIC; 57}; 58 59struct spnego_data { 60 int type; 61 struct spnego_negTokenInit negTokenInit; 62 struct spnego_negTokenTarg negTokenTarg; 63}; 64 65enum spnego_message_type { 66 SPNEGO_NEG_TOKEN_INIT = 0, 67 SPNEGO_NEG_TOKEN_TARG = 1, 68}; 69 70#include "../libcli/auth/spnego_proto.h" 71