|
|
/*++
Copyright (c) 1999 Microsoft Corporation
Module Name:
ipsecshr.h
Abstract:
Header file for IPSec Shared lib
Author:
BrianSw 10-19-2000
Environment:
User Level: Win32 / kernel
Revision History:
--*/
#ifndef _IPSECSHR_
#define _IPSECSHR_
#ifdef __cplusplus
extern "C" { #endif
#include <validate.h>
#define IN_CLASSE(i) (((long)(i) != 0xffffffff) && (((long)(i) & 0xF0000000) == 0xF0000000))
BOOL WINAPI IsAllZero(BYTE *c, DWORD dwSize);
BOOL WINAPI CmpBlob(IPSEC_BYTE_BLOB* c1, IPSEC_BYTE_BLOB *c2); BOOL WINAPI CmpData(BYTE* c1, BYTE *c2, DWORD size); BOOL WINAPI CmpAddr(ADDR *Template, ADDR *a2); BOOL WINAPI CmpTypeStruct(BYTE *Template, BYTE *comp, DWORD dwTypeSize, DWORD dwStructSize); BOOL WINAPI CmpFilter(IPSEC_QM_FILTER *Template, IPSEC_QM_FILTER* f2); BOOL WINAPI CmpQMAlgo(PIPSEC_QM_ALGO Template, PIPSEC_QM_ALGO a2); BOOL WINAPI CmpQMOffer(PIPSEC_QM_OFFER Template, PIPSEC_QM_OFFER o2); BOOL WINAPI MatchQMSATemplate(IPSEC_QM_SA *Template,IPSEC_QM_SA *CurInfo); BOOL WINAPI MatchMMSATemplate(IPSEC_MM_SA *MMTemplate, IPSEC_MM_SA *SaData);
typedef struct _INT_IPSEC_MM_AUTH_INFO { MM_AUTH_ENUM AuthMethod; DWORD dwAuthInfoSize; LPBYTE pAuthInfo; DWORD dwAuthFlags; } INT_IPSEC_MM_AUTH_INFO, * PINT_IPSEC_MM_AUTH_INFO;
typedef struct _INT_MM_AUTH_METHODS { GUID gMMAuthID; DWORD dwFlags; DWORD dwNumAuthInfos; PINT_IPSEC_MM_AUTH_INFO pAuthenticationInfo; } INT_MM_AUTH_METHODS, * PINT_MM_AUTH_METHODS;
DWORD ValidateAddr( PADDR pAddr );
BOOL IsMulticastAddress( PADDR pAddr );
BOOL IsBroadcastAddress( PADDR pAddr );
BOOL IsSubnetBroadcastAddress( PADDR pAddr );
BOOL IsUnicastAddress( PADDR pAddr );
BOOL IsSupportedAddress( PADDR pAddr );
BOOL IsLoopbackAddress( PADDR pAddr );
BOOL IsValidTunnelEndpointAddress( PADDR pAddr );
BOOL IsSpecialServer( PADDR pAddr );
BOOL IsValidSubnet( PADDR pAddr );
BOOL IsValidSubnettedAddress( PADDR pAddr );
DWORD ValidateQMFilterAddresses( PIPSEC_QM_FILTER pIpsecQMFilter );
DWORD ValidateMMPolicy( PIPSEC_MM_POLICY pMMPolicy );
DWORD ValidateMMOffers( DWORD dwOfferCount, PIPSEC_MM_OFFER pOffers );
DWORD ValidateMMAuthMethods( PMM_AUTH_METHODS pMMAuthMethods );
DWORD ValidateQMPolicy( PIPSEC_QM_POLICY pQMPolicy );
DWORD ValidateQMOffers( DWORD dwOfferCount, PIPSEC_QM_OFFER pOffers );
DWORD ValidateMMFilter( PMM_FILTER pMMFilter );
DWORD VerifyAddresses( PADDR pAddr, BOOL bAcceptMe, BOOL bIsDesAddr );
DWORD VerifySubNetAddress( ULONG uSubNetAddr, ULONG uSubNetMask, BOOL bIsDesAddr );
BOOL bIsValidIPMask( ULONG uMask );
BOOL bIsValidIPAddress( ULONG uIpAddr, BOOL bAcceptMe, BOOL bIsDesAddr );
BOOL bIsValidSubnet( ULONG uIpAddr, ULONG uMask, BOOL bIsDesAddr );
BOOL AddressesConflict( ADDR SrcAddr, ADDR DesAddr );
BOOL HtoNAddressesConflict( ADDR SrcAddr, ADDR DesAddr );
DWORD ValidateTransportFilter( PTRANSPORT_FILTER pTransportFilter );
DWORD ValidateIPSecQMFilter( PIPSEC_QM_FILTER pQMFilter );
DWORD VerifyProtocols( PROTOCOL Protocol );
DWORD VerifyPortsForProtocol( PORT Port, PROTOCOL Protocol );
DWORD ValidateMMFilterTemplate( PMM_FILTER pMMFilter );
DWORD ValidateTxFilterTemplate( PTRANSPORT_FILTER pTxFilter );
DWORD ValidateTunnelFilter( PTUNNEL_FILTER pTunnelFilter );
DWORD ValidateTnFilterTemplate( PTUNNEL_FILTER pTnFilter );
DWORD ApplyMulticastFilterValidation( ADDR Addr, BOOL bCreateMirror );
BOOLEAN IsSpecialServ( ADDR_TYPE AddrType );
ADDR_TYPE ExTypeToAddrType( UCHAR ExType );
DWORD WINAPI ConvertExtMMAuthToInt( PMM_AUTH_METHODS pMMAuthMethods, PINT_MM_AUTH_METHODS * pIntMMAuthMethods );
DWORD WINAPI FreeIntMMAuthMethods( PINT_MM_AUTH_METHODS pIntMMAuthMethods );
DWORD WINAPI SPDFreeIntMMAuthMethods( PINT_MM_AUTH_METHODS pIntMMAuthMethods, BOOLEAN FreeTop );
DWORD WINAPI SPDFreeIntMMAuthMethodsArray( PINT_MM_AUTH_METHODS pIntMMAuthMethods, DWORD dwNumAuthMeths );
DWORD WINAPI ConvertIntMMAuthToExt( PINT_MM_AUTH_METHODS pIntMMAuthMethods, PMM_AUTH_METHODS * pMMAuthMethods );
DWORD WINAPI SPDConvertArrayIntMMAuthToExt( PINT_MM_AUTH_METHODS pIntMMAuthMethods, PMM_AUTH_METHODS *ppMMAuthMethods, DWORD dwNumAuthMeths );
DWORD WINAPI FreeExtMMAuthMethods( PMM_AUTH_METHODS pMMAuthMethods );
DWORD WINAPI SPDFreeExtMMAuthMethods( PMM_AUTH_METHODS pMMAuthMethods );
DWORD WINAPI SPDConvertIntMMAuthToExt( PINT_MM_AUTH_METHODS pIntMMAuthMethods, PMM_AUTH_METHODS * pMMAuthMethods );
#ifdef __IPSEC_VALIDATE
DWORD ValidateInitiateIKENegotiation( STRING_HANDLE pServerName, PQM_FILTER_CONTAINER pQMFilterContainer, DWORD dwClientProcessId, ULONG uhClientEvent, DWORD dwFlags, IPSEC_UDP_ENCAP_CONTEXT UdpEncapContext, IKENEGOTIATION_HANDLE * phIKENegotiation );
DWORD ValidateQueryIKENegotiationStatus( IKENEGOTIATION_HANDLE hIKENegotiation, SA_NEGOTIATION_STATUS_INFO *NegotiationStatus );
DWORD ValidateCloseIKENegotiationHandle( IKENEGOTIATION_HANDLE * phIKENegotiation );
DWORD ValidateEnumMMSAs( STRING_HANDLE pServerName, PMM_SA_CONTAINER pMMTemplate, PMM_SA_CONTAINER *ppMMSAContainer, LPDWORD pdwNumEntries, LPDWORD pdwTotalMMsAvailable, LPDWORD pdwEnumHandle, DWORD dwFlags );
DWORD ValidateDeleteMMSAs( STRING_HANDLE pServerName, PMM_SA_CONTAINER pMMTemplate, DWORD dwFlags );
DWORD ValidateQueryIKEStatistics( STRING_HANDLE pServerName, IKE_STATISTICS *pIKEStatistics );
DWORD ValidateRegisterIKENotifyClient( STRING_HANDLE pServerName, DWORD dwClientProcessId, ULONG uhClientEvent, PQM_SA_CONTAINER pQMSATemplateContainer, IKENOTIFY_HANDLE *phNotifyHandle, DWORD dwFlags );
DWORD ValidateQueryNotifyData( IKENOTIFY_HANDLE uhNotifyHandle, PDWORD pdwNumEntries, PQM_SA_CONTAINER *ppQMSAContainer, DWORD dwFlags );
DWORD ValidateCloseNotifyHandle( IKENOTIFY_HANDLE *phHandle );
DWORD ValidateIPSecAddSA( STRING_HANDLE pServerName, IPSEC_SA_DIRECTION SADirection, PIPSEC_QM_POLICY_CONTAINER pQMPolicyContainer, PQM_FILTER_CONTAINER pQMFilterContainer, DWORD *puhLarvalContext, DWORD dwInboundKeyMatLen, BYTE *pInboundKeyMat, DWORD dwOutboundKeyMatLen, BYTE *pOutboundKeyMat, BYTE *pContextInfo, UDP_ENCAP_INFO EncapInfo, DWORD dwFlags);
DWORD ValidateSetConfigurationVariables( LPWSTR pServerName, IKE_CONFIG IKEConfig );
DWORD ValidateGetConfigurationVariables( LPWSTR pServerName, PIKE_CONFIG pIKEConfig );
#endif //__IPSEC_VALIDATE
#ifdef __cplusplus
} #endif
#endif // _WINIPSEC_
|