/*
* // 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
*/
/*
*
* SPNEGO Token Handler Header File
*
* Contains the definitions required to properly parse the
* SPNEGO DER encoding.
*
*
*/
#ifndef __DERPARSE_H__
#define __DERPARSE_H__
/* C++ Specific */
#if defined(__cplusplus)
extern "C"
{
#endif
/* Identifier Types */
/* Encoding type */
/* Universal tags */
/* Length encoding */
/* SPNEGO Token Parsing Constants */
/* Fixed Length of NegTokenInit ReqFlags field */
/* Difference in bits for ReqFlags token */
/* Fixed Length of NegTokenTarg NegResult field */
/* Application Specific Construct - Always at the start of a NegTokenInit */
#define SPNEGO_NEGINIT_APP_CONSTRUCT \
/* Constructed Sequence token - after the actual token identifier token */
/* MechList Type Identifier */
/* NegTokenInit - Token Identifier and Elements */
/* NegTokenInit - 0xa0 */
/* Structure elements for NegTokenInit */
/* MechTypes element is 0xa0 */
#define SPNEGO_NEGINIT_ELEMENT_MECHTYPES \
/* ReqFlags element is 0xa1 */
#define SPNEGO_NEGINIT_ELEMENT_REQFLAGS \
/* MechToken element is 0xa2 */
#define SPNEGO_NEGINIT_ELEMENT_MECHTOKEN \
/* MechListMIC element is 0xa3 */
#define SPNEGO_NEGINIT_ELEMENT_MECHLISTMIC \
/* NegTokenTarg - Token Identifier and Elements */
/* NegTokenTarg - 0xa1 */
#define SPNEGO_NEGTARG_TOKEN_IDENTIFIER \
/* Structure elements for NegTokenTarg */
/* NegResult element is 0xa0 */
#define SPNEGO_NEGTARG_ELEMENT_NEGRESULT \
/* SupportedMech element is 0xa1 */
#define SPNEGO_NEGTARG_ELEMENT_SUPPORTMECH \
/* ResponseToken element is 0xa2 */
#define SPNEGO_NEGTARG_ELEMENT_RESPONSETKN \
/* MechListMIC element is 0xa3 */
#define SPNEGO_NEGTARG_ELEMENT_MECHLISTMIC \
/*
* Defines a GSS Mechanism OID. We keep a single static array
* of these which we'll use for validation/searches/parsing.
*/
typedef struct _mechOID
{
} MECH_OID;
/* ASN Der functions */
int smbfs_ASNDerCheckToken(unsigned char *, unsigned char,
long, long, long *, long *);
int smbfs_ASNDerCheckOID(unsigned char *, SPNEGO_MECH_OID, long, long *);
long smbfs_ASNDerCalcTokenLength(long, long);
long smbfs_ASNDerCalcElementLength(long, long *);
long smbfs_ASNDerCalcMechListLength(SPNEGO_MECH_OID, long *);
int smbfs_ASNDerWriteToken(unsigned char *, unsigned char, unsigned char *,
long);
int smbfs_ASNDerWriteOID(unsigned char *, SPNEGO_MECH_OID);
long smbfs_ASNDerWriteMechList(unsigned char *, SPNEGO_MECH_OID);
int smbfs_ASNDerWriteElement(unsigned char *, unsigned char,
unsigned char, unsigned char *, long);
/* C++ Specific */
#if defined(__cplusplus)
}
#endif
#endif /* __DERPARSE_H__ */