亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? spnego.c

?? 代理服務(wù)器 squid-2.6.STABLE16
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
// 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.C//// SPNEGO Token Handler Source File//// Contains implementation of SPNEGO Token Handling API// as defined in SPNEGO.H.///////////////////////////////////////////////////////////////#include <stdlib.h>#include <stdio.h>#include <memory.h>#include "spnego.h"#include "derparse.h"#include "spnegoparse.h"//// Defined in DERPARSE.C//extern MECH_OID g_stcMechOIDList [];/**********************************************************************//**                                                                  **//**                                                                  **//**                                                                  **//**                                                                  **//**               SPNEGO Token Handler API implementation            **//**                                                                  **//**                                                                  **//**                                                                  **//**                                                                  **//**********************************************************************////////////////////////////////////////////////////////////////////////////////// Function://    spnegoInitFromBinary//// Parameters://    [in]  pbTokenData       -  Binary Token Data//    [in]  ulLength          -  Length of binary Token Data//    [out] phSpnegoToken     -  SPNEGO_TOKEN_HANDLE pointer//// Returns://    int   Success - SPNEGO_E_SUCCESS//          Failure - SPNEGO API Error code//// Comments ://    Initializes a SPNEGO_TOKEN_HANDLE from the supplied//    binary data.  Data is copied locally.  Returned data structure//    must be freed by calling spnegoFreeData().//////////////////////////////////////////////////////////////////////////////int spnegoInitFromBinary( unsigned char* pbTokenData, unsigned long ulLength, SPNEGO_TOKEN_HANDLE* phSpnegoToken ){   int            nReturn = SPNEGO_E_INVALID_PARAMETER;   SPNEGO_TOKEN** ppSpnegoToken = (SPNEGO_TOKEN**) phSpnegoToken;   // Pass off to a handler function that allows tighter control over how the token structure   // is handled.  In this case, we want the token data copied and we want the associated buffer   // freed.   nReturn = InitTokenFromBinary( SPNEGO_TOKEN_INTERNAL_COPYDATA,                                 SPNEGO_TOKEN_INTERNAL_FLAGS_FREEDATA, pbTokenData,                                 ulLength, ppSpnegoToken );   LOG(("spnegoInitFromBinary returned %d\n",nReturn));   return nReturn;}///////////////////////////////////////////////////////////////////////////////// Function://    spnegoCreateNegTokenInit//// Parameters://    [in]  MechType          -  MechType to specify in MechTypeList element//    [in]  ucContextFlags    -  Context Flags element value//    [in]  pbMechToken       -  Pointer to binary MechToken Data//    [in]  ulMechTokenLen    -  Length of MechToken Data//    [in]  pbMechListMIC     -  Pointer to binary MechListMIC Data//    [in]  ulMechListMICLen  -  Length of MechListMIC Data//    [out] phSpnegoToken     -  SPNEGO_TOKEN_HANDLE pointer//// Returns://    int   Success - SPNEGO_E_SUCCESS//          Failure - SPNEGO API Error code//// Comments ://    Initializes a SPNEGO_TOKEN_HANDLE for a NegTokenInit type//    from the supplied parameters.  ucContextFlags may be 0 or must be//    a valid flag combination.  MechToken data can be NULL - if not, it//    must correspond to the MechType.  MechListMIC can also be NULL.//    Returned data structure must be freed by calling spnegoFreeData().//////////////////////////////////////////////////////////////////////////////int spnegoCreateNegTokenInit( SPNEGO_MECH_OID MechType,          unsigned char ucContextFlags, unsigned char* pbMechToken,          unsigned long ulMechTokenLen, unsigned char* pbMechListMIC,          unsigned long ulMechListMICLen, SPNEGO_TOKEN_HANDLE* phSpnegoToken ){   int   nReturn = SPNEGO_E_INVALID_PARAMETER;   long  nTokenLength = 0L;   long  nInternalTokenLength = 0L;   unsigned char* pbTokenData = NULL;   SPNEGO_TOKEN** ppSpnegoToken = (SPNEGO_TOKEN**) phSpnegoToken;   if ( NULL != ppSpnegoToken &&         IsValidMechOid( MechType ) &&         IsValidContextFlags( ucContextFlags ) )   {      // Get the actual token size      if ( ( nReturn = CalculateMinSpnegoInitTokenSize( ulMechTokenLen, ulMechListMICLen,                                                          MechType, ( ucContextFlags != 0L ),                                                          &nTokenLength, &nInternalTokenLength ) )                        == SPNEGO_E_SUCCESS )      {         // Allocate a buffer to hold the data.         pbTokenData = calloc( 1, nTokenLength );         if ( NULL != pbTokenData )         {            // Now write the token            if ( ( nReturn = CreateSpnegoInitToken( MechType,                                                 ucContextFlags, pbMechToken,                                                 ulMechTokenLen, pbMechListMIC,                                                 ulMechListMICLen, pbTokenData,                                                 nTokenLength, nInternalTokenLength ) )                              == SPNEGO_E_SUCCESS )            {               // This will copy our allocated pointer, and ensure that the sructure cleans               // up the data later               nReturn = InitTokenFromBinary( SPNEGO_TOKEN_INTERNAL_COPYPTR,                                             SPNEGO_TOKEN_INTERNAL_FLAGS_FREEDATA,                                             pbTokenData, nTokenLength, ppSpnegoToken );            }            // Cleanup on failure            if ( SPNEGO_E_SUCCESS != nReturn )            {               free( pbTokenData );            }         }  // IF alloc succeeded         else         {            nReturn = SPNEGO_E_OUT_OF_MEMORY;         }      }  // If calculated token size   }  // IF Valid Parameters   LOG(("spnegoCreateNegTokenInit returned %d\n",nReturn));   return nReturn;}///////////////////////////////////////////////////////////////////////////////// Function://    spnegoCreateNegTokenTarg//// Parameters://    [in]  MechType          -  MechType to specify in supported MechType element//    [in]  spnegoNegResult   -  NegResult value//    [in]  pbMechToken       -  Pointer to response MechToken Data//    [in]  ulMechTokenLen    -  Length of MechToken Data//    [in]  pbMechListMIC     -  Pointer to binary MechListMIC Data//    [in]  ulMechListMICLen  -  Length of MechListMIC Data//    [out] phSpnegoToken     -  SPNEGO_TOKEN_HANDLE pointer//// Returns://    int   Success - SPNEGO_E_SUCCESS//          Failure - SPNEGO API Error code//// Comments ://    Initializes a SPNEGO_TOKEN_HANDLE for a NegTokenTarg type//    from the supplied parameters.  MechToken data can be NULL - if not,//    it must correspond to the MechType.  MechListMIC can also be NULL.//    Returned data structure must be freed by calling spnegoFreeData().//////////////////////////////////////////////////////////////////////////////int spnegoCreateNegTokenTarg( SPNEGO_MECH_OID MechType,           SPNEGO_NEGRESULT spnegoNegResult, unsigned char* pbMechToken,          unsigned long ulMechTokenLen, unsigned char* pbMechListMIC,          unsigned long ulMechListMICLen, SPNEGO_TOKEN_HANDLE* phSpnegoToken ){   int   nReturn = SPNEGO_E_INVALID_PARAMETER;   long  nTokenLength = 0L;   long  nInternalTokenLength = 0L;   unsigned char* pbTokenData = NULL;   SPNEGO_TOKEN** ppSpnegoToken = (SPNEGO_TOKEN**) phSpnegoToken;   //   // spnego_mech_oid_NotUsed and spnego_negresult_NotUsed   // are okay here, however a valid MechOid is required   // if spnego_negresult_success or spnego_negresult_incomplete   // is specified.   //   if ( NULL != ppSpnegoToken &&         ( IsValidMechOid( MechType ) ||            spnego_mech_oid_NotUsed == MechType ) &&         ( IsValidNegResult( spnegoNegResult ) ||            spnego_negresult_NotUsed == spnegoNegResult ) &&         !( !IsValidMechOid( MechType ) &&            ( spnego_negresult_success == spnegoNegResult ||              spnego_negresult_incomplete == spnegoNegResult ) ) )   {      // Get the actual token size      if ( ( nReturn = CalculateMinSpnegoTargTokenSize( MechType, spnegoNegResult, ulMechTokenLen,                                                         ulMechListMICLen, &nTokenLength,                                                          &nInternalTokenLength ) )                        == SPNEGO_E_SUCCESS )      {         // Allocate a buffer to hold the data.         pbTokenData = calloc( 1, nTokenLength );         if ( NULL != pbTokenData )         {            // Now write the token            if ( ( nReturn = CreateSpnegoTargToken( MechType,                                                 spnegoNegResult, pbMechToken,                                                 ulMechTokenLen, pbMechListMIC,                                                 ulMechListMICLen, pbTokenData,                                                 nTokenLength, nInternalTokenLength ) )                              == SPNEGO_E_SUCCESS )            {               // This will copy our allocated pointer, and ensure that the sructure cleans               // up the data later               nReturn = InitTokenFromBinary( SPNEGO_TOKEN_INTERNAL_COPYPTR,                                             SPNEGO_TOKEN_INTERNAL_FLAGS_FREEDATA,                                             pbTokenData, nTokenLength, ppSpnegoToken );            }            // Cleanup on failure            if ( SPNEGO_E_SUCCESS != nReturn )            {               free( pbTokenData );            }         }  // IF alloc succeeded         else         {            nReturn = SPNEGO_E_OUT_OF_MEMORY;         }      }  // If calculated token size   }  // IF Valid Parameters   LOG(("spnegoCreateNegTokenTarg returned %d\n",nReturn));   return nReturn;}///////////////////////////////////////////////////////////////////////////////// Function://    spnegoTokenGetBinary//// Parameters://    [in]     hSpnegoToken   -  Initialized SPNEGO_TOKEN_HANDLE//    [out]    pbTokenData    -  Buffer to copy token into//    [in/out] pulDataLen     -  Length of pbTokenData buffer, filled out//                               with actual size used upon function return.//// Returns://    int   Success - SPNEGO_E_SUCCESS//          Failure - SPNEGO API Error code//// Comments ://    Copies binary SPNEGO token data from hSpnegoToken into the user//    supplied buffer.  If pbTokenData is NULL, or the value in pulDataLen//    is too small, the function will return SPNEGO_E_BUFFER_TOO_SMALL and//    fill out pulDataLen with the minimum required buffer size.//////////////////////////////////////////////////////////////////////////////int spnegoTokenGetBinary( SPNEGO_TOKEN_HANDLE hSpnegoToken, unsigned char* pbTokenData,                           unsigned long * pulDataLen ){   int   nReturn = SPNEGO_E_INVALID_PARAMETER;   SPNEGO_TOKEN*  pSpnegoToken = (SPNEGO_TOKEN*) hSpnegoToken;      // Check parameters - pbTokenData is optional   if (  IsValidSpnegoToken( pSpnegoToken ) &&         NULL != pulDataLen )   {      // Check for Buffer too small conditions      if ( NULL == pbTokenData ||            pSpnegoToken->ulBinaryDataLen > *pulDataLen )      {         *pulDataLen = pSpnegoToken->ulBinaryDataLen;         nReturn = SPNEGO_E_BUFFER_TOO_SMALL;      }      else      {         memcpy( pbTokenData, pSpnegoToken->pbBinaryData, pSpnegoToken->ulBinaryDataLen );         *pulDataLen = pSpnegoToken->ulBinaryDataLen;         nReturn = SPNEGO_E_SUCCESS;      }   }  // IF parameters OK   LOG(("spnegoTokenGetBinary returned %d\n",nReturn));   return nReturn;;}///////////////////////////////////////////////////////////////////////////////// Function://    spnegoFreeData//// Parameters://    [in]     hSpnegoToken   -  Initialized SPNEGO_TOKEN_HANDLE//// Returns://    void//// Comments ://    Frees up resources consumed by hSpnegoToken.  The supplied data//    pointer is invalidated by this function.//////////////////////////////////////////////////////////////////////////////void spnegoFreeData( SPNEGO_TOKEN_HANDLE hSpnegoToken ){   FreeSpnegoToken( (SPNEGO_TOKEN*) hSpnegoToken);   return;}///////////////////////////////////////////////////////////////////////////////// Function://    spnegoGetTokenType//// Parameters://    [in]  hSpnegoToken      -  Initialized SPNEGO_TOKEN_HANDLE//    [out] piTokenType       -  Filled out with token type value.//// Returns://    int   Success - SPNEGO_E_SUCCESS//          Failure - SPNEGO API Error code//// Comments ://    The function will analyze hSpnegoToken and return the appropriate//    type in piTokenType.//////////////////////////////////////////////////////////////////////////////int spnegoGetTokenType( SPNEGO_TOKEN_HANDLE hSpnegoToken, int * piTokenType ){   int   nReturn = SPNEGO_E_INVALID_PARAMETER;   SPNEGO_TOKEN*  pSpnegoToken = (SPNEGO_TOKEN*) hSpnegoToken;      // Check parameters   if (  IsValidSpnegoToken( pSpnegoToken ) &&         NULL != piTokenType &&         pSpnegoToken)   {      // Check that the type in the structure makes sense      if ( SPNEGO_TOKEN_INIT == pSpnegoToken->ucTokenType ||            SPNEGO_TOKEN_TARG == pSpnegoToken->ucTokenType )      {         *piTokenType = pSpnegoToken->ucTokenType;         nReturn = SPNEGO_E_SUCCESS;      }   }  // IF parameters OK   LOG(("spnegoGetTokenType returned %d\n",nReturn));

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区影院| 色婷婷久久久亚洲一区二区三区| 不卡电影一区二区三区| 欧美日韩免费观看一区三区| 日韩精品一区国产麻豆| 久久蜜臀精品av| 亚洲国产欧美在线| 成人一区二区三区| 欧美日本一区二区| 中文字幕中文乱码欧美一区二区 | 成人av免费在线播放| 欧美性色综合网| 国产精品视频九色porn| 日本美女一区二区三区视频| 成人h动漫精品一区二| 日韩欧美国产成人一区二区| 亚洲精品福利视频网站| 国产成人av自拍| 欧美一级生活片| 亚洲精品视频免费观看| 高清在线成人网| 日韩欧美你懂的| 一区二区欧美精品| 成人午夜精品一区二区三区| 日韩视频免费观看高清完整版在线观看| 一区视频在线播放| 国产精品一区二区三区乱码| 欧美人狂配大交3d怪物一区| 最新国产の精品合集bt伙计| 国产一区日韩二区欧美三区| 欧美一区二区在线观看| 国产精品久久三| 九色porny丨国产精品| 在线日韩一区二区| 成人免费一区二区三区在线观看| 精品一区二区在线播放| 欧美一区二区三区在线电影| 亚洲综合精品自拍| 99re成人精品视频| 欧美激情一区二区三区在线| 美美哒免费高清在线观看视频一区二区 | 91精品免费在线| 亚洲免费观看在线观看| 97久久超碰国产精品| 久久精品欧美一区二区三区麻豆 | 欧美成人猛片aaaaaaa| 午夜精品久久久久久久| 日本道在线观看一区二区| 国产精品第一页第二页第三页| 国产精品2024| 久久久久久电影| 国内精品第一页| 精品久久国产字幕高潮| 久久精品国产99国产| 91精品国产乱码久久蜜臀| 亚洲伦理在线精品| 国产精品99久久久久久似苏梦涵 | 亚洲高清免费在线| 欧美亚洲日本国产| 亚洲va欧美va天堂v国产综合| 欧美日韩在线播放一区| 午夜影院久久久| 欧美日韩美少妇| 天天av天天翘天天综合网色鬼国产| 欧美视频一区二区三区在线观看| 亚洲专区一二三| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 高清免费成人av| 日本一区二区成人在线| 成人av资源下载| 成人免费一区二区三区视频| 91麻豆免费视频| 亚洲国产成人tv| 欧美一区二区日韩一区二区| 日韩不卡一区二区三区 | 99精品久久99久久久久| 日韩一区中文字幕| 粉嫩绯色av一区二区在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 大胆欧美人体老妇| 亚洲女人****多毛耸耸8| 91美女片黄在线观看91美女| 亚洲综合一二三区| 精品视频色一区| 久久成人久久鬼色| 中文字幕欧美激情一区| 懂色av一区二区夜夜嗨| 中文字幕一区二区三区乱码在线| 日本乱人伦一区| 日韩国产高清在线| 久久久久国产精品人| 91香蕉国产在线观看软件| 亚洲综合清纯丝袜自拍| 日韩美女视频一区二区在线观看| 国产麻豆一精品一av一免费 | youjizz久久| 亚洲国产精品久久人人爱| 日韩欧美激情四射| aaa亚洲精品| 天天综合天天综合色| 久久久无码精品亚洲日韩按摩| 91免费视频网| 免费高清在线一区| 国产精品毛片无遮挡高清| 91黄色激情网站| 极品少妇一区二区| 亚洲手机成人高清视频| 日韩精品一区二区三区三区免费 | 一二三区精品福利视频| 日韩一级二级三级精品视频| 成人午夜免费视频| 日韩成人精品视频| 国产精品欧美一区喷水| 欧美精品自拍偷拍| 成人午夜av电影| 午夜伦欧美伦电影理论片| 精品国产伦一区二区三区免费| av午夜一区麻豆| 九九热在线视频观看这里只有精品| 亚洲日本电影在线| 2023国产精品| 日本久久一区二区三区| 国产精品羞羞答答xxdd| 天天影视涩香欲综合网| 国产精品久久久久影院亚瑟| 日韩一级免费观看| 91网站在线观看视频| 日韩福利电影在线观看| 亚洲色图欧美偷拍| 2023国产精品视频| 欧美精品日韩综合在线| 99在线精品免费| 精彩视频一区二区三区| 婷婷久久综合九色综合绿巨人| 国产精品超碰97尤物18| 精品国产凹凸成av人网站| 欧美系列亚洲系列| av中文字幕不卡| 久久av中文字幕片| 日日夜夜免费精品视频| 亚洲欧美区自拍先锋| 国产三级精品在线| 日韩无一区二区| 欧美日韩一区二区三区免费看| 99久久伊人精品| 国产高清亚洲一区| 久久狠狠亚洲综合| 亚洲电影视频在线| 国产精品国产三级国产普通话蜜臀| 视频一区二区三区入口| 亚洲精品国产一区二区三区四区在线| 国产欧美日韩三区| 久久色在线观看| 欧美大胆一级视频| 日韩一区二区在线看片| 欧美日韩高清一区二区不卡| 一本大道av伊人久久综合| 成人黄色网址在线观看| 国产高清不卡一区二区| 色八戒一区二区三区| 麻豆一区二区三| 美女国产一区二区| 九九国产精品视频| 极品少妇xxxx精品少妇| 精品一区二区国语对白| 国产一区不卡精品| 懂色av中文字幕一区二区三区| 成人福利视频网站| 91香蕉视频污在线| 欧美色图激情小说| 在线成人免费观看| 欧美成人福利视频| 国产欧美一区二区三区沐欲| 国产精品午夜在线观看| 最新中文字幕一区二区三区| 亚洲美女一区二区三区| 亚洲韩国精品一区| 美国毛片一区二区三区| 国产乱码精品1区2区3区| 不卡在线观看av| 91热门视频在线观看| 欧洲国内综合视频| 欧美精品xxxxbbbb| 精品久久久久久综合日本欧美| 久久综合久久综合久久| 久久精品视频免费观看| 中文字幕永久在线不卡| 亚洲欧美偷拍三级| 亚洲一区二区在线免费看| 中文字幕在线不卡国产视频| 亚洲国产va精品久久久不卡综合| 天天色 色综合| 免费看黄色91| 成人精品视频一区二区三区| 91麻豆蜜桃一区二区三区| 91精品福利视频| 日韩精品一区在线| 中文在线一区二区| 亚洲视频一区在线| 亚洲成av人在线观看|