/*
* // Copyright (C) 2002 Microsoft Corporation
* // All rights reserved.
* //
* // THIS CODE AND INFORMATION IS PROVIDED "AS IS"
* // WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
* // OR IMPLIED, INCLUDING BUT NOT LIMITED
* // TO THE IMPLIED WARRANTIES OF MERCHANTIBILITY
* //
* // Date - 10/08/2002
* // Author - Sanj Surati
*/
/*
* SPNEGOPARSE.H
*
* SPNEGO Token Parser Header File
*
* Contains the definitions required to properly parse a
* SPNEGO token using ASN.1 DER helpers.
*
*
*/
#ifndef __SPNEGOPARSE_H__
#define __SPNEGOPARSE_H__
/* C++ Specific */
#if defined(__cplusplus)
extern "C"
{
#endif
/* Indicates if we copy data when creating a SPNEGO_TOKEN structure or not */
#define SPNEGO_TOKEN_INTERNAL_COPYPTR 0
/*
* Internal flag dictates whether or not we will free the binary data when
* the SPNEG_TOKEN structure is destroyed
*/
/*
* Each SPNEGO Token Type can be broken down into a max of 4 separate elements.
*/
/* Element offsets in the array */
/* INIT elements */
#define SPNEGO_INIT_MECHTYPES_ELEMENT 0
/* Response elements */
#define SPNEGO_TARG_NEGRESULT_ELEMENT 0
/* Defines an individual SPNEGO Token Element. */
typedef struct SpnegoElement
{
int iElementPresent;
/* SPNEGO_TOKEN_ELEMENT_UNAVAILABLE or SPNEGO_TOKEN_ELEMENT_AVAILABLE */
/* Structure size in case we later choose to extend the structure */
/*
* Packages a SPNEGO Token Encoding. There are two types of
* encodings: NegTokenInit and NegTokenTarg. Each encoding can
* contain up to four distinct, optional elements.
*/
typedef struct SpnegoToken
{
int ucTokenType;
/* SPNEGO_TOKEN_INIT or SPNEGO_TOKEN_TARG */
} SPNEGO_TOKEN;
/* Structure size in case we later choose to extend the structure */
/* Function definitions */
void smbfs_FreeSpnegoToken(SPNEGO_TOKEN *);
int smbfs_CalculateMinSpnegoInitTokenSize(long, long, SPNEGO_MECH_OID, int,
long *, long *);
long, long, long *, long *);
int smbfs_CreateSpnegoInitToken(SPNEGO_MECH_OID, unsigned char, unsigned char *,
unsigned long, unsigned char *, unsigned long, unsigned char *, long, long);
unsigned char *, unsigned long, unsigned char *, unsigned long,
unsigned char *, long, long);
int smbfs_IsValidContextFlags(unsigned char);
int smbfs_IsValidSpnegoToken(SPNEGO_TOKEN *);
int smbfs_InitTokenFromBinary(unsigned char, unsigned long, unsigned char *,
unsigned long, SPNEGO_TOKEN **);
/* C++ Specific */
#if defined(__cplusplus)
}
#endif
#endif /* __SPNEGOPARSE_H__ */