|
|
// // 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 );
|