]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/HttpDxe/HttpProto.h
NetworkPkg: Convert files to CRLF line ending
[mirror_edk2.git] / NetworkPkg / HttpDxe / HttpProto.h
index 7b4b343b2a2e84964a67bc1667c2be1cadd5c01e..95fb4843ce32ae4be44acde2f89687ae7772768b 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   The header files of miscellaneous routines for HttpDxe driver.\r
 \r
-Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>\r
 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
@@ -47,6 +47,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define HTTP_BUFFER_SIZE_DEAULT      65535\r
 #define HTTP_MAX_SYN_BACK_LOG        5\r
 #define HTTP_CONNECTION_TIMEOUT      60\r
+#define HTTP_RESPONSE_TIMEOUT        5\r
 #define HTTP_DATA_RETRIES            12\r
 #define HTTP_FIN_TIMEOUT             2\r
 #define HTTP_KEEP_ALIVE_PROBES       6\r
@@ -58,7 +59,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 typedef struct _HTTP_SERVICE {\r
   UINT32                        Signature;\r
   EFI_SERVICE_BINDING_PROTOCOL  ServiceBinding;\r
-  EFI_HANDLE                    ImageHandle;\r
+  EFI_HANDLE                    Ip4DriverBindingHandle;\r
+  EFI_HANDLE                    Ip6DriverBindingHandle;\r
   EFI_HANDLE                    ControllerHandle;\r
   EFI_HANDLE                    Tcp4ChildHandle;\r
   EFI_HANDLE                    Tcp6ChildHandle;\r
@@ -82,6 +84,13 @@ typedef struct {
   EFI_HTTP_METHOD               Method;\r
 } HTTP_TCP_TOKEN_WRAP;\r
 \r
+typedef struct {\r
+  EFI_TLS_VERSION               Version;\r
+  EFI_TLS_CONNECTION_END        ConnectionEnd;\r
+  EFI_TLS_VERIFY                VerifyMethod;\r
+  EFI_TLS_SESSION_STATE         SessionState;\r
+} TLS_CONFIG_DATA;\r
+\r
 typedef struct _HTTP_PROTOCOL {\r
   UINT32                        Signature;\r
   EFI_HTTP_PROTOCOL             Http;\r
@@ -90,9 +99,12 @@ typedef struct _HTTP_PROTOCOL {
   LIST_ENTRY                    Link;   // Link to all HTTP instance from the service.\r
   BOOLEAN                       InDestroy;\r
   INTN                          State;\r
+  EFI_HTTP_METHOD               Method;\r
 \r
   UINTN                         StatusCode;\r
 \r
+  EFI_EVENT                     TimeoutEvent;\r
+\r
   EFI_HANDLE                    Tcp4ChildHandle;\r
   EFI_TCP4_PROTOCOL             *Tcp4;\r
   EFI_TCP4_CONFIG_DATA          Tcp4CfgData;\r
@@ -116,9 +128,7 @@ typedef struct _HTTP_PROTOCOL {
   EFI_TCP6_CLOSE_TOKEN          Tcp6CloseToken;\r
   BOOLEAN                       IsTcp6CloseDone;\r
   EFI_IPv6_ADDRESS              RemoteIpv6Addr;\r
-\r
-\r
-  \r
\r
   //\r
   // Rx4Token or Rx6Token used for receiving HTTP header.\r
   //\r
@@ -151,6 +161,35 @@ typedef struct _HTTP_PROTOCOL {
   NET_MAP                       RxTokens;\r
 \r
   CHAR8                         *Url;\r
+\r
+  //\r
+  // Https Support\r
+  //\r
+  BOOLEAN                          UseHttps;\r
+  \r
+  EFI_HANDLE                       TlsChildHandle; /// Tls ChildHandle\r
+  TLS_CONFIG_DATA                  TlsConfigData;\r
+  EFI_TLS_PROTOCOL                 *Tls;\r
+  EFI_TLS_CONFIGURATION_PROTOCOL   *TlsConfiguration;\r
+  EFI_TLS_SESSION_STATE            TlsSessionState;\r
+\r
+  //\r
+  // TlsTxData used for transmitting TLS related messages.\r
+  //\r
+  EFI_TCP4_IO_TOKEN                Tcp4TlsTxToken;\r
+  EFI_TCP4_TRANSMIT_DATA           Tcp4TlsTxData;\r
+  EFI_TCP6_IO_TOKEN                Tcp6TlsTxToken;\r
+  EFI_TCP6_TRANSMIT_DATA           Tcp6TlsTxData;\r
+  BOOLEAN                          TlsIsTxDone;\r
+\r
+  //\r
+  // TlsRxData used for receiving TLS related messages.\r
+  //\r
+  EFI_TCP4_IO_TOKEN                Tcp4TlsRxToken;\r
+  EFI_TCP4_RECEIVE_DATA            Tcp4TlsRxData;\r
+  EFI_TCP6_IO_TOKEN                Tcp6TlsRxToken;\r
+  EFI_TCP6_RECEIVE_DATA            Tcp6TlsRxData;\r
+  BOOLEAN                          TlsIsRxDone;\r
 } HTTP_PROTOCOL;\r
 \r
 typedef struct {\r
@@ -350,7 +389,8 @@ HttpConfigureTcp6 (
   );\r
 \r
 /**\r
-  Check existing TCP connection, if in error state, receover TCP4 connection.\r
+  Check existing TCP connection, if in error state, recover TCP4 connection. Then, \r
+  connect one TLS session if required.\r
 \r
   @param[in]  HttpInstance       The HTTP instance private data.\r
 \r
@@ -365,7 +405,8 @@ HttpConnectTcp4 (
   );\r
 \r
 /**\r
-  Check existing TCP connection, if in error state, recover TCP6 connection.\r
+  Check existing TCP connection, if in error state, recover TCP6 connection. Then, \r
+  connect one TLS session if required.\r
 \r
   @param[in]  HttpInstance       The HTTP instance private data.\r
 \r
@@ -380,7 +421,7 @@ HttpConnectTcp6 (
   );\r
 \r
 /**\r
-  Send the HTTP message through TCP4 or TCP6.\r
+  Send the HTTP or HTTPS message through TCP4 or TCP6.\r
 \r
   @param[in]  HttpInstance       The HTTP instance private data.\r
   @param[in]  Wrap               The HTTP token's wrap data.\r
@@ -441,25 +482,27 @@ HttpTcpNotReady (
   );\r
 \r
 /**\r
-  Initialize TCP related data.\r
+  Initialize Http session.\r
 \r
   @param[in]  HttpInstance       The HTTP instance private data.\r
   @param[in]  Wrap               The HTTP token's wrap data.\r
-  @param[in]  Configure          The Flag indicates whether the first time to initialize Tcp.\r
+  @param[in]  Configure          The Flag indicates whether need to initialize session.\r
+  @param[in]  TlsConfigure       The Flag indicates whether it's the new Tls session.\r
 \r
-  @retval EFI_SUCCESS            The initialization of TCP instance is done. \r
+  @retval EFI_SUCCESS            The initialization of session is done. \r
   @retval Others                 Other error as indicated.\r
 \r
 **/\r
 EFI_STATUS\r
-HttpInitTcp (\r
+HttpInitSession (\r
   IN  HTTP_PROTOCOL    *HttpInstance,\r
   IN  HTTP_TOKEN_WRAP  *Wrap,\r
-  IN  BOOLEAN          Configure\r
+  IN  BOOLEAN          Configure,\r
+  IN  BOOLEAN          TlsConfigure\r
   );\r
 \r
 /**\r
-  Transmit the HTTP mssage by processing the associated HTTP token.\r
+  Transmit the HTTP or HTTPS mssage by processing the associated HTTP token.\r
 \r
   @param[in]  Map                The container of TxToken or Tx6Token.\r
   @param[in]  Item               Current item to check against.\r
@@ -504,6 +547,7 @@ HttpTcpReceive (
   @param[in]       HttpInstance    The HTTP instance private data.\r
   @param[in, out]  SizeofHeaders   The HTTP header length.\r
   @param[in, out]  BufferSize      The size of buffer to cacahe the header message.\r
+  @param[in]       Timeout         The time to wait for receiving the header packet.\r
 \r
   @retval EFI_SUCCESS              The HTTP header is received.                          \r
   @retval Others                   Other errors as indicated.\r
@@ -513,7 +557,8 @@ EFI_STATUS
 HttpTcpReceiveHeader (\r
   IN  HTTP_PROTOCOL         *HttpInstance,\r
   IN  OUT UINTN             *SizeofHeaders,\r
-  IN  OUT UINTN             *BufferSize\r
+  IN  OUT UINTN             *BufferSize,\r
+  IN  EFI_EVENT             Timeout\r
   );\r
 \r
 /**\r