/*++ Copyright (c) 1997-2001 Microsoft Corporation Module Name: ah.h Abstract: Contains ESP specific structures Author: Sanjay Anand (SanjayAn) 11-November-1997 ChunYe Environment: Kernel mode Revision History: --*/ #ifndef _ESP_ #define _ESP_ typedef struct _CONF_STATE_BUFFER { union { DESTable desTable; DES3TABLE des3Table; }; } CONF_STATE_BUFFER, *PCONF_STATE_BUFFER; typedef VOID (*PCONF_ALGO_INIT) ( PVOID pState, PUCHAR pKey ); typedef NTSTATUS (*PCONF_ALGO_ENCRYPT) ( PVOID pState, PUCHAR pOut, PUCHAR pIn, PUCHAR pIV ); VOID esp_nullinit (PVOID, PUCHAR); NTSTATUS esp_nullencrypt (PVOID, PUCHAR, PUCHAR, PUCHAR); NTSTATUS esp_nulldecrypt (PVOID, PUCHAR, PUCHAR, PUCHAR); VOID esp_desinit (PVOID, PVOID); NTSTATUS esp_desencrypt (PVOID, PUCHAR, PUCHAR, PUCHAR); NTSTATUS esp_desdecrypt (PVOID, PUCHAR, PUCHAR, PUCHAR); VOID esp_3_desinit (PVOID, PVOID); NTSTATUS esp_3_desencrypt (PVOID, PUCHAR, PUCHAR, PUCHAR); NTSTATUS esp_3_desdecrypt (PVOID, PUCHAR, PUCHAR, PUCHAR); // // Array of function ptrs for the ESP confidentiality algorithms // typedef struct _confid_algorithm { PCONF_ALGO_INIT init; // ptr to init fn for alg. PCONF_ALGO_ENCRYPT encrypt; // ptr to encrypt fn for alg PCONF_ALGO_ENCRYPT decrypt; // ptr to encrypt fn for alg ULONG blocklen; // Length (in u_int8s) of output // data. MUST be a multiple of 4 } CONFID_ALGO, *PCONFID_ALGO; #define NUM_CONF_ALGOS (sizeof(conf_algorithms)/sizeof(CONFID_ALGO)-1) IPRcvBuf * CopyToRcvBuf( IN IPRcvBuf *DestBuf, IN PUCHAR SrcBuf, IN ULONG Size, IN PULONG StartOffset ); NTSTATUS IPSecEncryptBuffer( IN PVOID pData, IN PNDIS_BUFFER *ppNewMdl, IN PSA_TABLE_ENTRY pSA, IN PNDIS_BUFFER pPadBuf, OUT PULONG pPadLen, IN ULONG PayloadType, IN ULONG Index, IN PUCHAR feedback ); NTSTATUS IPSecDecryptBuffer( IN PVOID pData, IN PSA_TABLE_ENTRY pSA, OUT PUCHAR pPadLen, OUT PUCHAR pPayloadType, IN ULONG Index, IN ULONG EspOffset ); NTSTATUS IPSecFindAndSetMdlByOffset(IN IPRcvBuf *pData, IN ULONG Offset, OUT IPRcvBuf **OutMdl, OUT PUCHAR *savePtr, OUT PLONG saveLen); #endif _ESP_