## @file
#  Implementation of EFI HTTP protocol interfaces.
#
#  Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
#
#  This program and the accompanying materials
#  are licensed and made available under the terms and conditions of the BSD License
#  which accompanies this distribution. The full text of the license may be found at
#  http://opensource.org/licenses/bsd-license.php.
#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#
#
##

[Defines]
  INF_VERSION               = 0x00010005
  BASE_NAME                 = HttpDxe
  FILE_GUID                 = 2366c20f-e15a-11e3-8bf1-e4115b28bc50
  MODULE_TYPE               = UEFI_DRIVER
  VERSION_STRING            = 1.0
  ENTRY_POINT               = HttpDxeDriverEntryPoint
  UNLOAD_IMAGE              = NetLibDefaultUnload
  MODULE_UNI_FILE           = HttpDxe.uni

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  NetworkPkg/NetworkPkg.dec

[Sources]
  ComponentName.h
  ComponentName.c
  HttpDns.h
  HttpDns.c
  HttpDriver.h
  HttpDriver.c
  HttpImpl.h
  HttpImpl.c
  HttpProto.h
  HttpProto.c
  HttpsSupport.h
  HttpsSupport.c

[LibraryClasses]
  UefiDriverEntryPoint
  UefiBootServicesTableLib
  UefiRuntimeServicesTableLib
  MemoryAllocationLib
  BaseLib
  UefiLib
  DebugLib
  NetLib
  HttpLib
  DpcLib

[Protocols]
  gEfiHttpServiceBindingProtocolGuid               ## BY_START
  gEfiHttpProtocolGuid                             ## BY_START
  gEfiHttpUtilitiesProtocolGuid                    ## CONSUMES
  gEfiTcp4ServiceBindingProtocolGuid               ## TO_START
  gEfiTcp4ProtocolGuid                             ## TO_START
  gEfiTcp6ServiceBindingProtocolGuid               ## TO_START
  gEfiTcp6ProtocolGuid                             ## TO_START
  gEfiDns4ServiceBindingProtocolGuid               ## SOMETIMES_CONSUMES
  gEfiDns4ProtocolGuid                             ## SOMETIMES_CONSUMES
  gEfiDns6ServiceBindingProtocolGuid               ## SOMETIMES_CONSUMES
  gEfiDns6ProtocolGuid                             ## SOMETIMES_CONSUMES
  gEfiIp4Config2ProtocolGuid                       ## SOMETIMES_CONSUMES
  gEfiIp6ConfigProtocolGuid                        ## SOMETIMES_CONSUMES
  gEfiTlsServiceBindingProtocolGuid                ## SOMETIMES_CONSUMES
  gEfiTlsProtocolGuid                              ## SOMETIMES_CONSUMES
  gEfiTlsConfigurationProtocolGuid                 ## SOMETIMES_CONSUMES

[Guids]
  gEfiTlsCaCertificateGuid                         ## SOMETIMES_CONSUMES  ## Variable:L"TlsCaCertificate"
  gEdkiiHttpTlsCipherListGuid                      ## SOMETIMES_CONSUMES  ## Variable:L"HttpTlsCipherList"
  gEfiCertX509Guid                                 ## SOMETIMES_CONSUMES  ## GUID  # Check the cert type

[Pcd]
  gEfiNetworkPkgTokenSpaceGuid.PcdAllowHttpConnections       ## CONSUMES

[UserExtensions.TianoCore."ExtraFiles"]
  HttpDxeExtra.uni
