201 lines
4.4 KiB
Plaintext
201 lines
4.4 KiB
Plaintext
|
|
//
|
|
// 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
|
|
);
|
|
|