Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

200 lines
4.4 KiB

//
// data associated with raw transport connections
//
typedef struct _UL_RAW_CONNECTION_INFO
{
//
// connection id
//
UL_HTTP_CONNECTION_ID ConnectionId;
//
// address info
//
USHORT RemoteAddressLength; // sizeof(UL_NETWORK_ADDRESS_xxx)
USHORT RemoteAddressType; // UL_NETWORK_ADDRESS_TYPE_xxx
USHORT LocalAddressLength; // sizeof(UL_NETWORK_ADDRESS_xxx)
USHORT LocalAddressType; // UL_NETWORK_ADDRESS_TYPE_xxx
PVOID pRemoteAddress; // points to a UL_NETWORK_ADDRESS_xxx
PVOID pLocalAddress; // points to a UL_NETWORK_ADDRESS_xxx
//
// initial data
//
ULONG InitialDataSize; // size of initial data
PVOID pInitialData; // pointer to initial data
} UL_RAW_CONNECTION_INFO, *PUL_RAW_CONNECTION_INFO;
//
// Data computed during SSL handshake
//
typedef struct _UL_SSL_INFO
{
USHORT ServerCertKeySize;
USHORT ConnectionKeySize;
PWCHAR pServerCertIssuer;
ULONG ServerCertIssuerSize;
PWCHAR pServerCertSubject;
ULONG ServerCertSubjectSize;
PUL_SSL_CLIENT_CERT_INFO pClientCertInfo;
} UL_SSL_INFO, *PUL_SSL_INFO;
//
// Client certificate information
//
typedef struct _UL_SSL_CLIENT_CERT_INFO
{
ULONG CertEncodedSize;
PUCHAR pCertEncoded;
ULONG CertFlags;
HANDLE Token;
} UL_SSL_CLIENT_CERT_INFO, *PUL_SSL_CLIENT_CERT_INFO;
//
// for transfers between filters and upper levels
//
typedef enum _UL_FILTER_BUFFER_TYPE
{
UlFilterBufferHttpStream, // both directions
UlFilterBufferSslInitInfo, // filter -> app
UlFilterBufferSslClientCert, // filter -> app
UlFilterBufferSslClientCertAndMap, // filter -> app
UlFilterBufferSslRenegotiate // app -> filter
}
typedef struct _UL_FILTER_BUFFER
{
UL_FILTER_BUFFER_TYPE BufferType;
PUCHAR pBuffer;
ULONG BufferSize;
} UL_FILTER_BUFFER, *PUL_FILTER_BUFFER;
//
// for adding filters to the control channel
//
// Used with: UlControlChannelFilterInformation
// UlControlChannelLegacyFilterInformation
//
typedef struct _UL_CONTROL_CHANNEL_FILTER
{
UL_PROPERTY_FLAGS Flags;
HANDLE FilterHandle;
} UL_CONTROL_CHANNEL_FILTER, *PUL_CONTROL_CHANNEL_FILTER, ;
//
// API calls for SSL/Filter helper process
//
ULAPI_LINKAGE
ULONG
WINAPI
UlCreateFilter(
OUT PHANDLE pFilterHandle,
IN PCWSTR pFilterName,
IN LPSECURITY_ATTRIBUTES pSecurityAttributes OPTIONAL,
IN ULONG Options
);
ULAPI_LINKAGE
ULONG
WINAPI
UlOpenFilter(
OUT PHANDLE pFilterHandle,
IN PCWSTR pFilterName,
IN ULONG Options
);
ULAPI_LINKAGE
ULONG
WINAPI
UlFilterAccept(
IN HANDLE FilterHandle,
OUT PUL_RAW_CONNECTION_INFO pRawConnectionInfo,
IN ULONG RawConnectionInfoSize,
OUT pBytesReceived OPTIONAL,
IN LPOVERLAPPED pOverlapped OPTIONAL
);
ULAPI_LINKAGE
ULONG
WINAPI
UlFilterClose(
IN HANDLE FilterHandle,
IN UL_HTTP_CONNECTION_ID ConnectionId,
IN LPOVERLAPPED pOverlapped OPTIONAL
);
ULAPI_LINKAGE
ULONG
WINAPI
UlFilterRawRead(
IN HANDLE FilterHandle,
IN UL_HTTP_CONNECTION_ID ConnectionId,
OUT PVOID pBuffer,
IN ULONG BufferSize,
OUT PULONG pBytesReceived OPTIONAL,
IN LPOVERLAPPED pOverlapped OPTIONAL
);
ULAPI_LINKAGE
ULONG
WINAPI
UlFilterRawWrite(
IN HANDLE FilterHandle,
IN UL_HTTP_CONNECTION_ID ConnectionId,
IN PVOID pBuffer,
IN ULONG BufferSize,
OUT PULONG pBytesReceived OPTIONAL,
IN LPOVERLAPPED pOverlapped OPTIONAL
);
ULAPI_LINKAGE
ULONG
WINAPI
UlFilterAppRead(
IN HANDLE FilterHandle,
IN UL_HTTP_CONNECTION_ID ConnectionId,
OUT PUL_FILTER_BUFFER pBuffer,
IN ULONG BufferSize
OUT PULONG pBytesReceived OPTIONAL,
IN LPOVERLAPPED pOverlapped OPTIONAL
);
ULAPI_LINKAGE
ULONG
WINAPI
UlFilterAppWrite(
IN HANDLE FilterHandle,
IN UL_HTTP_CONNECTION_ID ConnectionId,
IN PUL_FILTER_BUFFER pBuffer,
OUT PULONG pBytesReceived OPTIONAL,
IN LPOVERLAPPED pOverlapped OPTIONAL
);
//
// Application pool calls for SSL
//
ULAPI_LINKAGE
ULONG
WINAPI
UlReceiveClientCertificate(
IN HANDLE AppPoolHandle,
IN UL_HTTP_CONNECTION_ID ConnectionId,
IN ULONG Flags,
OUT PUL_SSL_CLIENT_CERT_INFO pSslClientCertInfo,
IN ULONG SslClientCertInfoSize,
OUT PULONG pBytesReceived OPTIONAL,
IN LPOVERLAPPED pOverlapped
);