⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spnego.h

📁 代理服务器 squid-2.6.STABLE16
💻 H
字号:
// 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// AND/OR FITNESS FOR A PARTICULAR PURPOSE.//// Date    - 10/08/2002// Author  - Sanj Surati///////////////////////////////////////////////////////////////// SPNEGO.H//// SPNEGO Token Handler Header File//// Contains the definitions required to interpret and create// SPNEGO tokens so that Kerberos GSS tokens can be// Unpackaged/packaged.///////////////////////////////////////////////////////////////#ifndef __SPNEGO_H__#define __SPNEGO_H__// C++ Specific#if defined(__cplusplus)extern "C"{#endif// Type Definitions//// Users of SPNEGO Token Handler API will request// these as well as free them,//typedef void*  SPNEGO_TOKEN_HANDLE;//// Defines the element types that are found// in each of the tokens.//typedef enum spnego_element_type{   spnego_element_min,  // Lower bound   // Init token elements   spnego_init_mechtypes,    spnego_init_reqFlags,   spnego_init_mechToken,   spnego_init_mechListMIC,   // Targ token elements   spnego_targ_negResult,   spnego_targ_supportedMech,   spnego_targ_responseToken,   spnego_targ_mechListMIC,   spnego_element_max   // Upper bound} SPNEGO_ELEMENT_TYPE;//// Token Element Availability.  Elements in both// token types are optional.  Since there are only// 4 elements in each Token, we will allocate space// to hold the information, but we need a way to// indicate whether or not an element is available//#define SPNEGO_TOKEN_ELEMENT_UNAVAILABLE 0#define SPNEGO_TOKEN_ELEMENT_AVAILABLE 1//// Token type values.  SPNEGO has 2 token types:// NegTokenInit and NegTokenTarg//#define SPNEGO_TOKEN_INIT 0#define SPNEGO_TOKEN_TARG 1//// GSS Mechanism OID enumeration.  We only really handle// 3 different OIDs.  These are stored in an array structure// defined in the parsing code.//typedef enum spnego_mech_oid{   // Init token elements   spnego_mech_oid_Kerberos_V5_Legacy, // Really V5, but OID off by 1 bit   spnego_mech_oid_Kerberos_V5,   spnego_mech_oid_Spnego,   spnego_mech_oid_NotUsed = -1} SPNEGO_MECH_OID;//// Defines the negResult values.//typedef enum spnego_negResult{   spnego_negresult_success,   spnego_negresult_incomplete,   spnego_negresult_rejected,   spnego_negresult_NotUsed = -1} SPNEGO_NEGRESULT;//// Context Flags in NegTokenInit////// ContextFlags values MUST be zero or a combination// of the below//#define SPNEGO_NEGINIT_CONTEXT_DELEG_FLAG    0x80#define SPNEGO_NEGINIT_CONTEXT_MUTUAL_FLAG   0x40#define SPNEGO_NEGINIT_CONTEXT_REPLAY_FLAG   0x20#define SPNEGO_NEGINIT_CONTEXT_SEQUENCE_FLAG 0x10#define SPNEGO_NEGINIT_CONTEXT_ANON_FLAG     0x8#define SPNEGO_NEGINIT_CONTEXT_CONF_FLAG     0x4#define SPNEGO_NEGINIT_CONTEXT_INTEG_FLAG    0x2//// Mask to retrieve valid values.//#define SPNEGO_NEGINIT_CONTEXT_MASK          0xFE  // Logical combination of above flags//// SPNEGO API return codes.//// API function was successful#define SPNEGO_E_SUCCESS               0// The supplied Token was invalid#define SPNEGO_E_INVALID_TOKEN         -1// An invalid length was encountered#define SPNEGO_E_INVALID_LENGTH        -2// The Token Parse failed#define SPNEGO_E_PARSE_FAILED          -3// The requested value was not found#define SPNEGO_E_NOT_FOUND             -4// The requested element is not available#define SPNEGO_E_ELEMENT_UNAVAILABLE   -5// Out of Memory#define SPNEGO_E_OUT_OF_MEMORY         -6// Not Implemented#define SPNEGO_E_NOT_IMPLEMENTED       -7// Invalid Parameter#define SPNEGO_E_INVALID_PARAMETER     -8// Token Handler encountered an unexpected OID#define SPNEGO_E_UNEXPECTED_OID        -9// The requested token was not found#define SPNEGO_E_TOKEN_NOT_FOUND       -10// An unexpected type was encountered in the encoding#define SPNEGO_E_UNEXPECTED_TYPE       -11// The buffer was too small#define SPNEGO_E_BUFFER_TOO_SMALL      -12// A Token Element was invalid (e.g. improper length or value)#define SPNEGO_E_INVALID_ELEMENT       -13/* Miscelaneous API Functions */// Frees opaque datavoid spnegoFreeData( SPNEGO_TOKEN_HANDLE hSpnegoToken );// Initializes SPNEGO_TOKEN structure from DER encoded binary dataint spnegoInitFromBinary( unsigned char* pbTokenData, unsigned long ulLength, SPNEGO_TOKEN_HANDLE* phSpnegoToken );// Initializes SPNEGO_TOKEN structure for a NegTokenInit type using the// supplied parametersint spnegoCreateNegTokenInit( SPNEGO_MECH_OID MechType,          unsigned char ucContextFlags, unsigned char* pbMechToken,          unsigned long ulMechTokenLen, unsigned char* pbMechTokenMIC,          unsigned long ulMechTokenMIC, SPNEGO_TOKEN_HANDLE* phSpnegoToken );// Initializes SPNEGO_TOKEN structure for a NegTokenTarg type using the// supplied parametersint spnegoCreateNegTokenTarg( SPNEGO_MECH_OID MechType,           SPNEGO_NEGRESULT spnegoNegResult, unsigned char* pbMechToken,          unsigned long ulMechTokenLen, unsigned char* pbMechListMIC,          unsigned long ulMechListMICLen, SPNEGO_TOKEN_HANDLE* phSpnegoToken );// Copies binary representation of SPNEGO Data into user supplied bufferint spnegoTokenGetBinary( SPNEGO_TOKEN_HANDLE hSpnegoToken, unsigned char* pbTokenData,                           unsigned long * pulDataLen );// Returns SPNEGO Token Typeint spnegoGetTokenType( SPNEGO_TOKEN_HANDLE hSpnegoToken, int * piTokenType );/* Reading an Init Token */// Returns the Initial Mech Type in the MechList element in the NegInitToken.int spnegoIsMechTypeAvailable( SPNEGO_TOKEN_HANDLE hSpnegoToken, SPNEGO_MECH_OID MechOID, int * piMechTypeIndex );// Returns the value from the context flags element in the NegInitToken as an unsigned longint spnegoGetContextFlags( SPNEGO_TOKEN_HANDLE hSpnegoToken, unsigned char* pucContextFlags );/* Reading a Response Token */// Returns the value from the negResult element (Status code of GSS call - 0,1,2)int spnegoGetNegotiationResult( SPNEGO_TOKEN_HANDLE hSpnegoToken, SPNEGO_NEGRESULT* pnegResult );// Returns the Supported Mech Type from the NegTokenTarg.int spnegoGetSupportedMechType( SPNEGO_TOKEN_HANDLE hSpnegoToken, SPNEGO_MECH_OID* pMechOID  );/* Reading either Token Type */// Returns the actual Mechanism data from the token (this is what is passed into GSS-API functionsint spnegoGetMechToken( SPNEGO_TOKEN_HANDLE hSpnegoToken, unsigned char* pbTokenData, unsigned long* pulDataLen );// Returns the Message Integrity BLOB in the tokenint spnegoGetMechListMIC( SPNEGO_TOKEN_HANDLE hSpnegoToken, unsigned char* pbMICData, unsigned long* pulDataLen );// C++ Specific#if defined(__cplusplus)}#endif#ifdef DEBUG#include <stdio.h>  #define PRERR(...) fprintf(stderr, __VA_ARGS__)  #define LOG(x) PRERR x#else  #define LOG(x)#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -