2003-07-29 19:00:38 +04:00
/*
Unix SMB / CIFS implementation .
RFC2478 Compliant SPNEGO implementation
Copyright ( C ) Jim McDonough < jmcd @ us . ibm . com > 2003
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
2007-07-09 23:25:36 +04:00
the Free Software Foundation ; either version 3 of the License , or
2003-07-29 19:00:38 +04:00
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
2007-07-10 04:52:41 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2003-07-29 19:00:38 +04:00
*/
# ifndef SAMBA_SPNEGO_H
# define SAMBA_SPNEGO_H
# define SPNEGO_DELEG_FLAG 0x01
# define SPNEGO_MUTUAL_FLAG 0x02
# define SPNEGO_REPLAY_FLAG 0x04
# define SPNEGO_SEQUENCE_FLAG 0x08
# define SPNEGO_ANON_FLAG 0x10
# define SPNEGO_CONF_FLAG 0x20
# define SPNEGO_INTEG_FLAG 0x40
# define SPNEGO_REQ_FLAG 0x80
# define SPNEGO_NEG_TOKEN_INIT 0
# define SPNEGO_NEG_TOKEN_TARG 1
2008-10-22 16:01:53 +04:00
/* some well known object IDs */
2008-10-22 20:57:59 +04:00
# define OID_SPNEGO "1.3.6.1.5.5.2"
# define OID_NTLMSSP "1.3.6.1.4.1.311.2.2.10"
# define OID_KERBEROS5_OLD "1.2.840.48018.1.2.2"
# define OID_KERBEROS5 "1.2.840.113554.1.2.2"
2008-10-22 16:01:53 +04:00
# define SPNEGO_NEG_RESULT_ACCEPT 0
# define SPNEGO_NEG_RESULT_INCOMPLETE 1
# define SPNEGO_NEG_RESULT_REJECT 2
/* not really ASN.1, but RFC 1964 */
# define TOK_ID_KRB_AP_REQ (uchar*)"\x01\x00"
# define TOK_ID_KRB_AP_REP (uchar*)"\x02\x00"
# define TOK_ID_KRB_ERROR (uchar*)"\x03\x00"
# define TOK_ID_GSS_GETMIC (uchar*)"\x01\x01"
# define TOK_ID_GSS_WRAP (uchar*)"\x02\x01"
2003-07-29 19:00:38 +04:00
typedef enum _spnego_negResult {
SPNEGO_ACCEPT_COMPLETED = 0 ,
SPNEGO_ACCEPT_INCOMPLETE = 1 ,
SPNEGO_REJECT = 2
} negResult_t ;
typedef struct spnego_negTokenInit {
2005-09-30 21:13:37 +04:00
const char * * mechTypes ;
2003-07-29 19:00:38 +04:00
int reqFlags ;
DATA_BLOB mechToken ;
DATA_BLOB mechListMIC ;
} negTokenInit_t ;
typedef struct spnego_negTokenTarg {
uint8 negResult ;
2005-06-25 00:25:18 +04:00
char * supportedMech ;
2003-07-29 19:00:38 +04:00
DATA_BLOB responseToken ;
DATA_BLOB mechListMIC ;
} negTokenTarg_t ;
typedef struct spnego_spnego {
int type ;
negTokenInit_t negTokenInit ;
negTokenTarg_t negTokenTarg ;
} SPNEGO_DATA ;
# endif