From: "Gao, Liming" <liming.gao@intel.com>
To: "Wu, Hao A" <hao.a.wu@intel.com>,
"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: "Kinney, Michael D" <michael.d.kinney@intel.com>
Subject: Re: [PATCH 5/6] MdePkg: Convert files to CRLF line ending
Date: Thu, 6 Apr 2017 04:45:23 +0000 [thread overview]
Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14D719F40@shsmsx102.ccr.corp.intel.com> (raw)
In-Reply-To: <20170406022515.42504-6-hao.a.wu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
>-----Original Message-----
>From: Wu, Hao A
>Sent: Thursday, April 06, 2017 10:25 AM
>To: edk2-devel@lists.01.org
>Cc: Wu, Hao A <hao.a.wu@intel.com>; Kinney, Michael D
><michael.d.kinney@intel.com>; Gao, Liming <liming.gao@intel.com>
>Subject: [PATCH 5/6] MdePkg: Convert files to CRLF line ending
>
>Cc: Michael Kinney <michael.d.kinney@intel.com>
>Cc: Liming Gao <liming.gao@intel.com>
>Contributed-under: TianoCore Contribution Agreement 1.0
>Signed-off-by: Hao Wu <hao.a.wu@intel.com>
>---
> MdePkg/Include/IndustryStandard/Tls1.h | 186 ++--
> MdePkg/Include/Protocol/Tls.h | 921 ++++++++++----------
> MdePkg/Include/Protocol/TlsConfig.h | 265 +++---
> MdePkg/Library/BaseLib/SafeString.c | 39 +-
> 4 files changed, 707 insertions(+), 704 deletions(-)
>
>diff --git a/MdePkg/Include/IndustryStandard/Tls1.h
>b/MdePkg/Include/IndustryStandard/Tls1.h
>index 019ff617de..9009291ee3 100644
>--- a/MdePkg/Include/IndustryStandard/Tls1.h
>+++ b/MdePkg/Include/IndustryStandard/Tls1.h
>@@ -1,93 +1,93 @@
>-/** @file
>- Transport Layer Security -- TLS 1.0/1.1/1.2 Standard definitions, from RFC
>2246/4346/5246
>-
>- This file contains common TLS 1.0/1.1/1.2 definitions from RFC
>2246/4346/5246
>-
>- Copyright (c) 2016 - 2017, 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.
>-**/
>-
>-#ifndef __TLS_1_H__
>-#define __TLS_1_H__
>-
>-#pragma pack(1)
>-
>-///
>-/// TLS Cipher Suite, refers to A.5 of rfc-2246, rfc-4346 and rfc-5246.
>-///
>-#define TLS_RSA_WITH_NULL_MD5 {0x00, 0x01}
>-#define TLS_RSA_WITH_NULL_SHA {0x00, 0x02}
>-#define TLS_RSA_WITH_RC4_128_MD5 {0x00, 0x04}
>-#define TLS_RSA_WITH_RC4_128_SHA {0x00, 0x05}
>-#define TLS_RSA_WITH_IDEA_CBC_SHA {0x00, 0x07}
>-#define TLS_RSA_WITH_DES_CBC_SHA {0x00, 0x09}
>-#define TLS_RSA_WITH_3DES_EDE_CBC_SHA {0x00, 0x0A}
>-#define TLS_DH_DSS_WITH_DES_CBC_SHA {0x00, 0x0C}
>-#define TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA {0x00, 0x0D}
>-#define TLS_DH_RSA_WITH_DES_CBC_SHA {0x00, 0x0F}
>-#define TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA {0x00, 0x10}
>-#define TLS_DHE_DSS_WITH_DES_CBC_SHA {0x00, 0x12}
>-#define TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA {0x00, 0x13}
>-#define TLS_DHE_RSA_WITH_DES_CBC_SHA {0x00, 0x15}
>-#define TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA {0x00, 0x16}
>-#define TLS_RSA_WITH_AES_128_CBC_SHA {0x00, 0x2F}
>-#define TLS_DH_DSS_WITH_AES_128_CBC_SHA {0x00, 0x30}
>-#define TLS_DH_RSA_WITH_AES_128_CBC_SHA {0x00, 0x31}
>-#define TLS_DHE_DSS_WITH_AES_128_CBC_SHA {0x00, 0x32}
>-#define TLS_DHE_RSA_WITH_AES_128_CBC_SHA {0x00, 0x33}
>-#define TLS_RSA_WITH_AES_256_CBC_SHA {0x00, 0x35}
>-#define TLS_DH_DSS_WITH_AES_256_CBC_SHA {0x00, 0x36}
>-#define TLS_DH_RSA_WITH_AES_256_CBC_SHA {0x00, 0x37}
>-#define TLS_DHE_DSS_WITH_AES_256_CBC_SHA {0x00, 0x38}
>-#define TLS_DHE_RSA_WITH_AES_256_CBC_SHA {0x00, 0x39}
>-#define TLS_RSA_WITH_NULL_SHA256 {0x00, 0x3B}
>-#define TLS_RSA_WITH_AES_128_CBC_SHA256 {0x00, 0x3C}
>-#define TLS_RSA_WITH_AES_256_CBC_SHA256 {0x00, 0x3D}
>-#define TLS_DH_DSS_WITH_AES_128_CBC_SHA256 {0x00, 0x3E}
>-#define TLS_DH_RSA_WITH_AES_128_CBC_SHA256 {0x00, 0x3F}
>-#define TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 {0x00, 0x40}
>-#define TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 {0x00, 0x67}
>-#define TLS_DH_DSS_WITH_AES_256_CBC_SHA256 {0x00, 0x68}
>-#define TLS_DH_RSA_WITH_AES_256_CBC_SHA256 {0x00, 0x69}
>-#define TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 {0x00, 0x6A}
>-#define TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 {0x00, 0x6B}
>-
>-///
>-/// TLS Version, refers to A.1 of rfc-2246, rfc-4346 and rfc-5246.
>-///
>-#define TLS10_PROTOCOL_VERSION_MAJOR 0x03
>-#define TLS10_PROTOCOL_VERSION_MINOR 0x01
>-#define TLS11_PROTOCOL_VERSION_MAJOR 0x03
>-#define TLS11_PROTOCOL_VERSION_MINOR 0x02
>-#define TLS12_PROTOCOL_VERSION_MAJOR 0x03
>-#define TLS12_PROTOCOL_VERSION_MINOR 0x03
>-
>-///
>-/// TLS Content Type, refers to A.1 of rfc-2246, rfc-4346 and rfc-5246.
>-///
>-typedef enum {
>- TlsContentTypeChangeCipherSpec = 20,
>- TlsContentTypeAlert = 21,
>- TlsContentTypeHandshake = 22,
>- TlsContentTypeApplicationData = 23,
>-} TLS_CONTENT_TYPE;
>-
>-///
>-/// TLS Record Header, refers to A.1 of rfc-2246, rfc-4346 and rfc-5246.
>-///
>-typedef struct {
>- UINT8 ContentType;
>- EFI_TLS_VERSION Version;
>- UINT16 Length;
>-} TLS_RECORD_HEADER;
>-
>-#pragma pack()
>-
>-#endif
>-
>+/** @file
>+ Transport Layer Security -- TLS 1.0/1.1/1.2 Standard definitions, from RFC
>2246/4346/5246
>+
>+ This file contains common TLS 1.0/1.1/1.2 definitions from RFC
>2246/4346/5246
>+
>+ Copyright (c) 2016 - 2017, 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.
>+**/
>+
>+#ifndef __TLS_1_H__
>+#define __TLS_1_H__
>+
>+#pragma pack(1)
>+
>+///
>+/// TLS Cipher Suite, refers to A.5 of rfc-2246, rfc-4346 and rfc-5246.
>+///
>+#define TLS_RSA_WITH_NULL_MD5 {0x00, 0x01}
>+#define TLS_RSA_WITH_NULL_SHA {0x00, 0x02}
>+#define TLS_RSA_WITH_RC4_128_MD5 {0x00, 0x04}
>+#define TLS_RSA_WITH_RC4_128_SHA {0x00, 0x05}
>+#define TLS_RSA_WITH_IDEA_CBC_SHA {0x00, 0x07}
>+#define TLS_RSA_WITH_DES_CBC_SHA {0x00, 0x09}
>+#define TLS_RSA_WITH_3DES_EDE_CBC_SHA {0x00, 0x0A}
>+#define TLS_DH_DSS_WITH_DES_CBC_SHA {0x00, 0x0C}
>+#define TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA {0x00, 0x0D}
>+#define TLS_DH_RSA_WITH_DES_CBC_SHA {0x00, 0x0F}
>+#define TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA {0x00, 0x10}
>+#define TLS_DHE_DSS_WITH_DES_CBC_SHA {0x00, 0x12}
>+#define TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA {0x00, 0x13}
>+#define TLS_DHE_RSA_WITH_DES_CBC_SHA {0x00, 0x15}
>+#define TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA {0x00, 0x16}
>+#define TLS_RSA_WITH_AES_128_CBC_SHA {0x00, 0x2F}
>+#define TLS_DH_DSS_WITH_AES_128_CBC_SHA {0x00, 0x30}
>+#define TLS_DH_RSA_WITH_AES_128_CBC_SHA {0x00, 0x31}
>+#define TLS_DHE_DSS_WITH_AES_128_CBC_SHA {0x00, 0x32}
>+#define TLS_DHE_RSA_WITH_AES_128_CBC_SHA {0x00, 0x33}
>+#define TLS_RSA_WITH_AES_256_CBC_SHA {0x00, 0x35}
>+#define TLS_DH_DSS_WITH_AES_256_CBC_SHA {0x00, 0x36}
>+#define TLS_DH_RSA_WITH_AES_256_CBC_SHA {0x00, 0x37}
>+#define TLS_DHE_DSS_WITH_AES_256_CBC_SHA {0x00, 0x38}
>+#define TLS_DHE_RSA_WITH_AES_256_CBC_SHA {0x00, 0x39}
>+#define TLS_RSA_WITH_NULL_SHA256 {0x00, 0x3B}
>+#define TLS_RSA_WITH_AES_128_CBC_SHA256 {0x00, 0x3C}
>+#define TLS_RSA_WITH_AES_256_CBC_SHA256 {0x00, 0x3D}
>+#define TLS_DH_DSS_WITH_AES_128_CBC_SHA256 {0x00, 0x3E}
>+#define TLS_DH_RSA_WITH_AES_128_CBC_SHA256 {0x00, 0x3F}
>+#define TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 {0x00, 0x40}
>+#define TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 {0x00, 0x67}
>+#define TLS_DH_DSS_WITH_AES_256_CBC_SHA256 {0x00, 0x68}
>+#define TLS_DH_RSA_WITH_AES_256_CBC_SHA256 {0x00, 0x69}
>+#define TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 {0x00, 0x6A}
>+#define TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 {0x00, 0x6B}
>+
>+///
>+/// TLS Version, refers to A.1 of rfc-2246, rfc-4346 and rfc-5246.
>+///
>+#define TLS10_PROTOCOL_VERSION_MAJOR 0x03
>+#define TLS10_PROTOCOL_VERSION_MINOR 0x01
>+#define TLS11_PROTOCOL_VERSION_MAJOR 0x03
>+#define TLS11_PROTOCOL_VERSION_MINOR 0x02
>+#define TLS12_PROTOCOL_VERSION_MAJOR 0x03
>+#define TLS12_PROTOCOL_VERSION_MINOR 0x03
>+
>+///
>+/// TLS Content Type, refers to A.1 of rfc-2246, rfc-4346 and rfc-5246.
>+///
>+typedef enum {
>+ TlsContentTypeChangeCipherSpec = 20,
>+ TlsContentTypeAlert = 21,
>+ TlsContentTypeHandshake = 22,
>+ TlsContentTypeApplicationData = 23,
>+} TLS_CONTENT_TYPE;
>+
>+///
>+/// TLS Record Header, refers to A.1 of rfc-2246, rfc-4346 and rfc-5246.
>+///
>+typedef struct {
>+ UINT8 ContentType;
>+ EFI_TLS_VERSION Version;
>+ UINT16 Length;
>+} TLS_RECORD_HEADER;
>+
>+#pragma pack()
>+
>+#endif
>+
>diff --git a/MdePkg/Include/Protocol/Tls.h b/MdePkg/Include/Protocol/Tls.h
>index f3cfccc953..2119f33c0f 100644
>--- a/MdePkg/Include/Protocol/Tls.h
>+++ b/MdePkg/Include/Protocol/Tls.h
>@@ -1,460 +1,461 @@
>-/** @file
>- EFI TLS Protocols as defined in UEFI 2.5.
>-
>- The EFI TLS Service Binding Protocol is used to locate EFI TLS Protocol drivers
>- to create and destroy child of the driver to communicate with other host
>using
>- TLS protocol.
>- The EFI TLS Protocol provides the ability to manage TLS session.
>-
>- Copyright (c) 2016, 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.
>-
>- @par Revision Reference:
>- This Protocol is introduced in UEFI Specification 2.5
>-
>-**/
>-
>-#ifndef __EFI_TLS_PROTOCOL_H__
>-#define __EFI_TLS_PROTOCOL_H__
>-
>-///
>-/// The EFI TLS Service Binding Protocol is used to locate EFI TLS Protocol
>drivers to
>-/// create and destroy child of the driver to communicate with other host
>using TLS
>-/// protocol.
>-///
>-#define EFI_TLS_SERVICE_BINDING_PROTOCOL_GUID \
>- { \
>- 0x952cb795, 0xff36, 0x48cf, {0xa2, 0x49, 0x4d, 0xf4, 0x86, 0xd6, 0xab, 0x8d }
>\
>- }
>-
>-///
>-/// The EFI TLS protocol provides the ability to manage TLS session.
>-///
>-#define EFI_TLS_PROTOCOL_GUID \
>- { \
>- 0xca959f, 0x6cfa, 0x4db1, {0x95, 0xbc, 0xe4, 0x6c, 0x47, 0x51, 0x43, 0x90 } \
>- }
>-
>-typedef struct _EFI_TLS_PROTOCOL EFI_TLS_PROTOCOL;
>-
>-///
>-/// EFI_TLS_SESSION_DATA_TYPE
>-///
>-typedef enum {
>- ///
>- /// Session Configuration
>- ///
>-
>- ///
>- /// TLS session Version. The corresponding Data is of type EFI_TLS_VERSION.
>- ///
>- EfiTlsVersion,
>- ///
>- /// TLS session as client or as server. The corresponding Data is of
>- /// EFI_TLS_CONNECTION_END.
>- ///
>- EfiTlsConnectionEnd,
>- ///
>- /// A priority list of preferred algorithms for the TLS session.
>- /// The corresponding Data is a list of EFI_TLS_CIPHER.
>- ///
>- EfiTlsCipherList,
>- ///
>- /// TLS session compression method.
>- /// The corresponding Data is of type EFI_TLS_COMPRESSION.
>- ///
>- EfiTlsCompressionMethod,
>- ///
>- /// TLS session extension data.
>- /// The corresponding Data is a list of type EFI_TLS_EXTENSION .
>- ///
>- EfiTlsExtensionData,
>- ///
>- /// TLS session verify method.
>- /// The corresponding Data is of type EFI_TLS_VERIFY.
>- ///
>- EfiTlsVerifyMethod,
>- ///
>- /// TLS session data session ID.
>- /// For SetSessionData(), it is TLS session ID used for session resumption.
>- /// For GetSessionData(), it is the TLS session ID used for current session.
>- /// The corresponding Data is of type EFI_TLS_SESSION_ID.
>- ///
>- EfiTlsSessionID,
>- ///
>- /// TLS session data session state.
>- /// The corresponding Data is of type EFI_TLS_SESSION_STATE.
>- ///
>- EfiTlsSessionState,
>-
>- ///
>- /// Session information
>- ///
>-
>- ///
>- /// TLS session data client random.
>- /// The corresponding Data is of type EFI_TLS_RANDOM.
>- ///
>- EfiTlsClientRandom,
>- ///
>- /// TLS session data server random.
>- /// The corresponding Data is of type EFI_TLS_RANDOM.
>- ///
>- EfiTlsServerRandom,
>- ///
>- /// TLS session data key material.
>- /// The corresponding Data is of type EFI_TLS_MASTER_SECRET.
>- ///
>- EfiTlsKeyMaterial,
>-
>- EfiTlsSessionDataTypeMaximum
>-
>-} EFI_TLS_SESSION_DATA_TYPE;
>-
>-///
>-/// EFI_TLS_VERSION
>-/// Note: The TLS version definition is from SSL3.0 to the latest TLS (e.g. 1.2).
>-/// SSL2.0 is obsolete and should not be used.
>-///
>-typedef struct {
>- UINT8 Major;
>- UINT8 Minor;
>-} EFI_TLS_VERSION;
>-
>-///
>-/// EFI_TLS_CONNECTION_END to define TLS session as client or server.
>-///
>-typedef enum {
>- EfiTlsClient,
>- EfiTlsServer,
>-} EFI_TLS_CONNECTION_END;
>-
>-///
>-/// EFI_TLS_CIPHER
>-/// Note: The definition of EFI_TLS_CIPHER definition is from "RFC 5246, A.4.1.
>-/// Hello Messages". The value of EFI_TLS_CIPHER is from TLS Cipher
>-/// Suite Registry of IANA.
>-///
>-typedef struct {
>- UINT8 Data1;
>- UINT8 Data2;
>-} EFI_TLS_CIPHER;
>-
>-///
>-/// EFI_TLS_COMPRESSION
>-/// Note: The value of EFI_TLS_COMPRESSION definition is from "RFC 3749".
>-///
>-typedef UINT8 EFI_TLS_COMPRESSION;
>-
>-///
>-/// EFI_TLS_EXTENSION
>-/// Note: The definition of EFI_TLS_EXTENSION if from "RFC 5246 A.4.1.
>-/// Hello Messages".
>-///
>-typedef struct {
>- UINT16 ExtensionType;
>- UINT16 Length;
>- UINT8 Data[1];
>-} EFI_TLS_EXTENSION;
>-
>-///
>-/// EFI_TLS_VERIFY
>-/// Use either EFI_TLS_VERIFY_NONE or EFI_TLS_VERIFY_PEER, the last two
>options
>-/// are 'ORed' with EFI_TLS_VERIFY_PEER if they are desired.
>-///
>-typedef UINT32 EFI_TLS_VERIFY;
>-///
>-/// No certificates will be sent or the TLS/SSL handshake will be continued
>regardless
>-/// of the certificate verification result.
>-///
>-#define EFI_TLS_VERIFY_NONE 0x0
>-///
>-/// The TLS/SSL handshake is immediately terminated with an alert message
>containing
>-/// the reason for the certificate verification failure.
>-///
>-#define EFI_TLS_VERIFY_PEER 0x1
>-///
>-/// TLS session will fail peer certificate is absent.
>-///
>-#define EFI_TLS_VERIFY_FAIL_IF_NO_PEER_CERT 0x2
>-///
>-/// TLS session only verify client once, and doesn't request certificate during
>-/// re-negotiation.
>-///
>-#define EFI_TLS_VERIFY_CLIENT_ONCE 0x4
>-
>-///
>-/// EFI_TLS_RANDOM
>-/// Note: The definition of EFI_TLS_RANDOM is from "RFC 5246 A.4.1.
>-/// Hello Messages".
>-///
>-typedef struct {
>- UINT32 GmtUnixTime;
>- UINT8 RandomBytes[28];
>-} EFI_TLS_RANDOM;
>-
>-///
>-/// EFI_TLS_MASTER_SECRET
>-/// Note: The definition of EFI_TLS_MASTER_SECRET is from "RFC 5246 8.1.
>-/// Computing the Master Secret".
>-///
>-typedef struct {
>- UINT8 Data[48];
>-} EFI_TLS_MASTER_SECRET;
>-
>-///
>-/// EFI_TLS_SESSION_ID
>-/// Note: The definition of EFI_TLS_SESSION_ID is from "RFC 5246 A.4.1. Hello
>Messages".
>-///
>-#define MAX_TLS_SESSION_ID_LENGTH 32
>-typedef struct {
>- UINT16 Length;
>- UINT8 Data[MAX_TLS_SESSION_ID_LENGTH];
>-} EFI_TLS_SESSION_ID;
>-
>-///
>-/// EFI_TLS_SESSION_STATE
>-///
>-typedef enum {
>- ///
>- /// When a new child of TLS protocol is created, the initial state of TLS
>session
>- /// is EfiTlsSessionNotStarted.
>- ///
>- EfiTlsSessionNotStarted,
>- ///
>- /// The consumer can call BuildResponsePacket() with NULL to get
>ClientHello to
>- /// start the TLS session. Then the status is EfiTlsSessionHandShaking.
>- ///
>- EfiTlsSessionHandShaking,
>- ///
>- /// During handshake, the consumer need call BuildResponsePacket() with
>input
>- /// data from peer, then get response packet and send to peer. After
>handshake
>- /// finish, the TLS session status becomes EfiTlsSessionDataTransferring, and
>- /// consumer can use ProcessPacket() for data transferring.
>- ///
>- EfiTlsSessionDataTransferring,
>- ///
>- /// Finally, if consumer wants to active close TLS session, consumer need
>- /// call SetSessionData to set TLS session state to EfiTlsSessionClosing, and
>- /// call BuildResponsePacket() with NULL to get CloseNotify alert message,
>- /// and sent it out.
>- ///
>- EfiTlsSessionClosing,
>- ///
>- /// If any error happen during parsing ApplicationData content type,
>EFI_ABORT
>- /// will be returned by ProcessPacket(), and TLS session state will become
>- /// EfiTlsSessionError. Then consumer need call BuildResponsePacket() with
>- /// NULL to get alert message and sent it out.
>- ///
>- EfiTlsSessionError,
>-
>- EfiTlsSessionStateMaximum
>-
>-} EFI_TLS_SESSION_STATE;
>-
>-///
>-/// EFI_TLS_FRAGMENT_DATA
>-///
>-typedef struct {
>- ///
>- /// Length of data buffer in the fragment.
>- ///
>- UINT32 FragmentLength;
>- ///
>- /// Pointer to the data buffer in the fragment.
>- ///
>- VOID *FragmentBuffer;
>-} EFI_TLS_FRAGMENT_DATA;
>-
>-///
>-/// EFI_TLS_CRYPT_MODE
>-///
>-typedef enum {
>- ///
>- /// Encrypt data provided in the fragment buffers.
>- ///
>- EfiTlsEncrypt,
>- ///
>- /// Decrypt data provided in the fragment buffers.
>- ///
>- EfiTlsDecrypt,
>-} EFI_TLS_CRYPT_MODE;
>-
>-/**
>- Set TLS session data.
>-
>- The SetSessionData() function set data for a new TLS session. All session
>data should
>- be set before BuildResponsePacket() invoked.
>-
>- @param[in] This Pointer to the EFI_TLS_PROTOCOL instance.
>- @param[in] DataType TLS session data type.
>- @param[in] Data Pointer to session data.
>- @param[in] DataSize Total size of session data.
>-
>- @retval EFI_SUCCESS The TLS session data is set successfully.
>- @retval EFI_INVALID_PARAMETER One or more of the following conditions
>is TRUE:
>- This is NULL.
>- Data is NULL.
>- DataSize is 0.
>- @retval EFI_UNSUPPORTED The DataType is unsupported.
>- @retval EFI_ACCESS_DENIED If the DataType is one of below:
>- EfiTlsClientRandom
>- EfiTlsServerRandom
>- EfiTlsKeyMaterial
>- @retval EFI_NOT_READY Current TLS session state is NOT
>- EfiTlsSessionStateNotStarted.
>- @retval EFI_OUT_OF_RESOURCES Required system resources could not
>be allocated.
>-**/
>-typedef
>-EFI_STATUS
>-(EFIAPI *EFI_TLS_SET_SESSION_DATA) (
>- IN EFI_TLS_PROTOCOL *This,
>- IN EFI_TLS_SESSION_DATA_TYPE DataType,
>- IN VOID *Data,
>- IN UINTN DataSize
>- );
>-
>-/**
>- Get TLS session data.
>-
>- The GetSessionData() function return the TLS session information.
>-
>- @param[in] This Pointer to the EFI_TLS_PROTOCOL instance.
>- @param[in] DataType TLS session data type.
>- @param[in, out] Data Pointer to session data.
>- @param[in, out] DataSize Total size of session data. On input, it means
>- the size of Data buffer. On output, it means the size
>- of copied Data buffer if EFI_SUCCESS, and means the
>- size of desired Data buffer if EFI_BUFFER_TOO_SMALL.
>-
>- @retval EFI_SUCCESS The TLS session data is got successfully.
>- @retval EFI_INVALID_PARAMETER One or more of the following conditions
>is TRUE:
>- This is NULL.
>- DataSize is NULL.
>- Data is NULL if *DataSize is not zero.
>- @retval EFI_UNSUPPORTED The DataType is unsupported.
>- @retval EFI_NOT_FOUND The TLS session data is not found.
>- @retval EFI_NOT_READY The DataType is not ready in current session
>state.
>- @retval EFI_BUFFER_TOO_SMALL The buffer is too small to hold the data.
>-**/
>-typedef
>-EFI_STATUS
>-(EFIAPI *EFI_TLS_GET_SESSION_DATA) (
>- IN EFI_TLS_PROTOCOL *This,
>- IN EFI_TLS_SESSION_DATA_TYPE DataType,
>- IN OUT VOID *Data, OPTIONAL
>- IN OUT UINTN *DataSize
>- );
>-
>-/**
>- Build response packet according to TLS state machine. This function is only
>valid for
>- alert, handshake and change_cipher_spec content type.
>-
>- The BuildResponsePacket() function builds TLS response packet in response
>to the TLS
>- request packet specified by RequestBuffer and RequestSize. If
>RequestBuffer is NULL and
>- RequestSize is 0, and TLS session status is EfiTlsSessionNotStarted, the TLS
>session
>- will be initiated and the response packet needs to be ClientHello. If
>RequestBuffer is
>- NULL and RequestSize is 0, and TLS session status is EfiTlsSessionClosing, the
>TLS
>- session will be closed and response packet needs to be CloseNotify. If
>RequestBuffer is
>- NULL and RequestSize is 0, and TLS session status is EfiTlsSessionError, the
>TLS
>- session has errors and the response packet needs to be Alert message
>based on error
>- type.
>-
>- @param[in] This Pointer to the EFI_TLS_PROTOCOL instance.
>- @param[in] RequestBuffer Pointer to the most recently received TLS
>packet. NULL
>- means TLS need initiate the TLS session and response
>- packet need to be ClientHello.
>- @param[in] RequestSize Packet size in bytes for the most recently
>received TLS
>- packet. 0 is only valid when RequestBuffer is NULL.
>- @param[out] Buffer Pointer to the buffer to hold the built packet.
>- @param[in, out] BufferSize Pointer to the buffer size in bytes. On input, it
>is
>- the buffer size provided by the caller. On output, it
>- is the buffer size in fact needed to contain the
>- packet.
>-
>- @retval EFI_SUCCESS The required TLS packet is built successfully.
>- @retval EFI_INVALID_PARAMETER One or more of the following conditions
>is TRUE:
>- This is NULL.
>- RequestBuffer is NULL but RequestSize is NOT 0.
>- RequestSize is 0 but RequestBuffer is NOT NULL.
>- BufferSize is NULL.
>- Buffer is NULL if *BufferSize is not zero.
>- @retval EFI_BUFFER_TOO_SMALL BufferSize is too small to hold the
>response packet.
>- @retval EFI_NOT_READY Current TLS session state is NOT ready to
>build
>- ResponsePacket.
>- @retval EFI_ABORTED Something wrong build response packet.
>-**/
>-typedef
>-EFI_STATUS
>-(EFIAPI *EFI_TLS_BUILD_RESPONSE_PACKET) (
>- IN EFI_TLS_PROTOCOL *This,
>- IN UINT8 *RequestBuffer, OPTIONAL
>- IN UINTN RequestSize, OPTIONAL
>- OUT UINT8 *Buffer, OPTIONAL
>- IN OUT UINTN *BufferSize
>- );
>-
>-/**
>- Decrypt or encrypt TLS packet during session. This function is only valid after
>- session connected and for application_data content type.
>-
>- The ProcessPacket () function process each inbound or outbound TLS APP
>packet.
>-
>- @param[in] This Pointer to the EFI_TLS_PROTOCOL instance.
>- @param[in, out] FragmentTable Pointer to a list of fragment. The caller will
>take
>- responsible to handle the original FragmentTable while
>- it may be reallocated in TLS driver. If CryptMode is
>- EfiTlsEncrypt, on input these fragments contain the TLS
>- header and plain text TLS APP payload; on output these
>- fragments contain the TLS header and cipher text TLS
>- APP payload. If CryptMode is EfiTlsDecrypt, on input
>- these fragments contain the TLS header and cipher text
>- TLS APP payload; on output these fragments contain the
>- TLS header and plain text TLS APP payload.
>- @param[in] FragmentCount Number of fragment.
>- @param[in] CryptMode Crypt mode.
>-
>- @retval EFI_SUCCESS The operation completed successfully.
>- @retval EFI_INVALID_PARAMETER One or more of the following conditions
>is TRUE:
>- This is NULL.
>- FragmentTable is NULL.
>- FragmentCount is NULL.
>- CryptoMode is invalid.
>- @retval EFI_NOT_READY Current TLS session state is NOT
>- EfiTlsSessionDataTransferring.
>- @retval EFI_ABORTED Something wrong decryption the message. TLS
>session
>- status will become EfiTlsSessionError. The caller need
>- call BuildResponsePacket() to generate Error Alert
>- message and send it out.
>- @retval EFI_OUT_OF_RESOURCES No enough resource to finish the
>operation.
>-**/
>-typedef
>-EFI_STATUS
>-(EFIAPI *EFI_TLS_PROCESS_PACKET) (
>- IN EFI_TLS_PROTOCOL *This,
>- IN OUT EFI_TLS_FRAGMENT_DATA **FragmentTable,
>- IN UINT32 *FragmentCount,
>- IN EFI_TLS_CRYPT_MODE CryptMode
>- );
>-
>-///
>-/// The EFI_TLS_PROTOCOL is used to create, destroy and manage TLS
>session.
>-/// For detail of TLS, please refer to TLS related RFC.
>-///
>-struct _EFI_TLS_PROTOCOL {
>- EFI_TLS_SET_SESSION_DATA SetSessionData;
>- EFI_TLS_GET_SESSION_DATA GetSessionData;
>- EFI_TLS_BUILD_RESPONSE_PACKET BuildResponsePacket;
>- EFI_TLS_PROCESS_PACKET ProcessPacket;
>-};
>-
>-extern EFI_GUID gEfiTlsServiceBindingProtocolGuid;
>-extern EFI_GUID gEfiTlsProtocolGuid;
>-
>-#endif // __EFI_TLS_PROTOCOL_H__
>+/** @file
>+ EFI TLS Protocols as defined in UEFI 2.5.
>+
>+ The EFI TLS Service Binding Protocol is used to locate EFI TLS Protocol drivers
>+ to create and destroy child of the driver to communicate with other host
>using
>+ TLS protocol.
>+ The EFI TLS Protocol provides the ability to manage TLS session.
>+
>+ Copyright (c) 2016, 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.
>+
>+ @par Revision Reference:
>+ This Protocol is introduced in UEFI Specification 2.5
>+
>+**/
>+
>+#ifndef __EFI_TLS_PROTOCOL_H__
>+#define __EFI_TLS_PROTOCOL_H__
>+
>+///
>+/// The EFI TLS Service Binding Protocol is used to locate EFI TLS Protocol
>drivers to
>+/// create and destroy child of the driver to communicate with other host
>using TLS
>+/// protocol.
>+///
>+#define EFI_TLS_SERVICE_BINDING_PROTOCOL_GUID \
>+ { \
>+ 0x952cb795, 0xff36, 0x48cf, {0xa2, 0x49, 0x4d, 0xf4, 0x86, 0xd6, 0xab, 0x8d }
>\
>+ }
>+
>+///
>+/// The EFI TLS protocol provides the ability to manage TLS session.
>+///
>+#define EFI_TLS_PROTOCOL_GUID \
>+ { \
>+ 0xca959f, 0x6cfa, 0x4db1, {0x95, 0xbc, 0xe4, 0x6c, 0x47, 0x51, 0x43, 0x90 } \
>+ }
>+
>+typedef struct _EFI_TLS_PROTOCOL EFI_TLS_PROTOCOL;
>+
>+///
>+/// EFI_TLS_SESSION_DATA_TYPE
>+///
>+typedef enum {
>+ ///
>+ /// Session Configuration
>+ ///
>+
>+ ///
>+ /// TLS session Version. The corresponding Data is of type EFI_TLS_VERSION.
>+ ///
>+ EfiTlsVersion,
>+ ///
>+ /// TLS session as client or as server. The corresponding Data is of
>+ /// EFI_TLS_CONNECTION_END.
>+ ///
>+ EfiTlsConnectionEnd,
>+ ///
>+ /// A priority list of preferred algorithms for the TLS session.
>+ /// The corresponding Data is a list of EFI_TLS_CIPHER.
>+ ///
>+ EfiTlsCipherList,
>+ ///
>+ /// TLS session compression method.
>+ /// The corresponding Data is of type EFI_TLS_COMPRESSION.
>+ ///
>+ EfiTlsCompressionMethod,
>+ ///
>+ /// TLS session extension data.
>+ /// The corresponding Data is a list of type EFI_TLS_EXTENSION .
>+ ///
>+ EfiTlsExtensionData,
>+ ///
>+ /// TLS session verify method.
>+ /// The corresponding Data is of type EFI_TLS_VERIFY.
>+ ///
>+ EfiTlsVerifyMethod,
>+ ///
>+ /// TLS session data session ID.
>+ /// For SetSessionData(), it is TLS session ID used for session resumption.
>+ /// For GetSessionData(), it is the TLS session ID used for current session.
>+ /// The corresponding Data is of type EFI_TLS_SESSION_ID.
>+ ///
>+ EfiTlsSessionID,
>+ ///
>+ /// TLS session data session state.
>+ /// The corresponding Data is of type EFI_TLS_SESSION_STATE.
>+ ///
>+ EfiTlsSessionState,
>+
>+ ///
>+ /// Session information
>+ ///
>+
>+ ///
>+ /// TLS session data client random.
>+ /// The corresponding Data is of type EFI_TLS_RANDOM.
>+ ///
>+ EfiTlsClientRandom,
>+ ///
>+ /// TLS session data server random.
>+ /// The corresponding Data is of type EFI_TLS_RANDOM.
>+ ///
>+ EfiTlsServerRandom,
>+ ///
>+ /// TLS session data key material.
>+ /// The corresponding Data is of type EFI_TLS_MASTER_SECRET.
>+ ///
>+ EfiTlsKeyMaterial,
>+
>+ EfiTlsSessionDataTypeMaximum
>+
>+} EFI_TLS_SESSION_DATA_TYPE;
>+
>+///
>+/// EFI_TLS_VERSION
>+/// Note: The TLS version definition is from SSL3.0 to the latest TLS (e.g. 1.2).
>+/// SSL2.0 is obsolete and should not be used.
>+///
>+typedef struct {
>+ UINT8 Major;
>+ UINT8 Minor;
>+} EFI_TLS_VERSION;
>+
>+///
>+/// EFI_TLS_CONNECTION_END to define TLS session as client or server.
>+///
>+typedef enum {
>+ EfiTlsClient,
>+ EfiTlsServer,
>+} EFI_TLS_CONNECTION_END;
>+
>+///
>+/// EFI_TLS_CIPHER
>+/// Note: The definition of EFI_TLS_CIPHER definition is from "RFC 5246,
>A.4.1.
>+/// Hello Messages". The value of EFI_TLS_CIPHER is from TLS Cipher
>+/// Suite Registry of IANA.
>+///
>+typedef struct {
>+ UINT8 Data1;
>+ UINT8 Data2;
>+} EFI_TLS_CIPHER;
>+
>+///
>+/// EFI_TLS_COMPRESSION
>+/// Note: The value of EFI_TLS_COMPRESSION definition is from "RFC 3749".
>+///
>+typedef UINT8 EFI_TLS_COMPRESSION;
>+
>+///
>+/// EFI_TLS_EXTENSION
>+/// Note: The definition of EFI_TLS_EXTENSION if from "RFC 5246 A.4.1.
>+/// Hello Messages".
>+///
>+typedef struct {
>+ UINT16 ExtensionType;
>+ UINT16 Length;
>+ UINT8 Data[1];
>+} EFI_TLS_EXTENSION;
>+
>+///
>+/// EFI_TLS_VERIFY
>+/// Use either EFI_TLS_VERIFY_NONE or EFI_TLS_VERIFY_PEER, the last two
>options
>+/// are 'ORed' with EFI_TLS_VERIFY_PEER if they are desired.
>+///
>+typedef UINT32 EFI_TLS_VERIFY;
>+///
>+/// No certificates will be sent or the TLS/SSL handshake will be continued
>regardless
>+/// of the certificate verification result.
>+///
>+#define EFI_TLS_VERIFY_NONE 0x0
>+///
>+/// The TLS/SSL handshake is immediately terminated with an alert message
>containing
>+/// the reason for the certificate verification failure.
>+///
>+#define EFI_TLS_VERIFY_PEER 0x1
>+///
>+/// TLS session will fail peer certificate is absent.
>+///
>+#define EFI_TLS_VERIFY_FAIL_IF_NO_PEER_CERT 0x2
>+///
>+/// TLS session only verify client once, and doesn't request certificate during
>+/// re-negotiation.
>+///
>+#define EFI_TLS_VERIFY_CLIENT_ONCE 0x4
>+
>+///
>+/// EFI_TLS_RANDOM
>+/// Note: The definition of EFI_TLS_RANDOM is from "RFC 5246 A.4.1.
>+/// Hello Messages".
>+///
>+typedef struct {
>+ UINT32 GmtUnixTime;
>+ UINT8 RandomBytes[28];
>+} EFI_TLS_RANDOM;
>+
>+///
>+/// EFI_TLS_MASTER_SECRET
>+/// Note: The definition of EFI_TLS_MASTER_SECRET is from "RFC 5246 8.1.
>+/// Computing the Master Secret".
>+///
>+typedef struct {
>+ UINT8 Data[48];
>+} EFI_TLS_MASTER_SECRET;
>+
>+///
>+/// EFI_TLS_SESSION_ID
>+/// Note: The definition of EFI_TLS_SESSION_ID is from "RFC 5246 A.4.1.
>Hello Messages".
>+///
>+#define MAX_TLS_SESSION_ID_LENGTH 32
>+typedef struct {
>+ UINT16 Length;
>+ UINT8 Data[MAX_TLS_SESSION_ID_LENGTH];
>+} EFI_TLS_SESSION_ID;
>+
>+///
>+/// EFI_TLS_SESSION_STATE
>+///
>+typedef enum {
>+ ///
>+ /// When a new child of TLS protocol is created, the initial state of TLS
>session
>+ /// is EfiTlsSessionNotStarted.
>+ ///
>+ EfiTlsSessionNotStarted,
>+ ///
>+ /// The consumer can call BuildResponsePacket() with NULL to get
>ClientHello to
>+ /// start the TLS session. Then the status is EfiTlsSessionHandShaking.
>+ ///
>+ EfiTlsSessionHandShaking,
>+ ///
>+ /// During handshake, the consumer need call BuildResponsePacket() with
>input
>+ /// data from peer, then get response packet and send to peer. After
>handshake
>+ /// finish, the TLS session status becomes EfiTlsSessionDataTransferring,
>and
>+ /// consumer can use ProcessPacket() for data transferring.
>+ ///
>+ EfiTlsSessionDataTransferring,
>+ ///
>+ /// Finally, if consumer wants to active close TLS session, consumer need
>+ /// call SetSessionData to set TLS session state to EfiTlsSessionClosing, and
>+ /// call BuildResponsePacket() with NULL to get CloseNotify alert message,
>+ /// and sent it out.
>+ ///
>+ EfiTlsSessionClosing,
>+ ///
>+ /// If any error happen during parsing ApplicationData content type,
>EFI_ABORT
>+ /// will be returned by ProcessPacket(), and TLS session state will become
>+ /// EfiTlsSessionError. Then consumer need call BuildResponsePacket() with
>+ /// NULL to get alert message and sent it out.
>+ ///
>+ EfiTlsSessionError,
>+
>+ EfiTlsSessionStateMaximum
>+
>+} EFI_TLS_SESSION_STATE;
>+
>+///
>+/// EFI_TLS_FRAGMENT_DATA
>+///
>+typedef struct {
>+ ///
>+ /// Length of data buffer in the fragment.
>+ ///
>+ UINT32 FragmentLength;
>+ ///
>+ /// Pointer to the data buffer in the fragment.
>+ ///
>+ VOID *FragmentBuffer;
>+} EFI_TLS_FRAGMENT_DATA;
>+
>+///
>+/// EFI_TLS_CRYPT_MODE
>+///
>+typedef enum {
>+ ///
>+ /// Encrypt data provided in the fragment buffers.
>+ ///
>+ EfiTlsEncrypt,
>+ ///
>+ /// Decrypt data provided in the fragment buffers.
>+ ///
>+ EfiTlsDecrypt,
>+} EFI_TLS_CRYPT_MODE;
>+
>+/**
>+ Set TLS session data.
>+
>+ The SetSessionData() function set data for a new TLS session. All session
>data should
>+ be set before BuildResponsePacket() invoked.
>+
>+ @param[in] This Pointer to the EFI_TLS_PROTOCOL instance.
>+ @param[in] DataType TLS session data type.
>+ @param[in] Data Pointer to session data.
>+ @param[in] DataSize Total size of session data.
>+
>+ @retval EFI_SUCCESS The TLS session data is set successfully.
>+ @retval EFI_INVALID_PARAMETER One or more of the following
>conditions is TRUE:
>+ This is NULL.
>+ Data is NULL.
>+ DataSize is 0.
>+ @retval EFI_UNSUPPORTED The DataType is unsupported.
>+ @retval EFI_ACCESS_DENIED If the DataType is one of below:
>+ EfiTlsClientRandom
>+ EfiTlsServerRandom
>+ EfiTlsKeyMaterial
>+ @retval EFI_NOT_READY Current TLS session state is NOT
>+ EfiTlsSessionStateNotStarted.
>+ @retval EFI_OUT_OF_RESOURCES Required system resources could not
>be allocated.
>+**/
>+typedef
>+EFI_STATUS
>+(EFIAPI *EFI_TLS_SET_SESSION_DATA) (
>+ IN EFI_TLS_PROTOCOL *This,
>+ IN EFI_TLS_SESSION_DATA_TYPE DataType,
>+ IN VOID *Data,
>+ IN UINTN DataSize
>+ );
>+
>+/**
>+ Get TLS session data.
>+
>+ The GetSessionData() function return the TLS session information.
>+
>+ @param[in] This Pointer to the EFI_TLS_PROTOCOL instance.
>+ @param[in] DataType TLS session data type.
>+ @param[in, out] Data Pointer to session data.
>+ @param[in, out] DataSize Total size of session data. On input, it means
>+ the size of Data buffer. On output, it means the size
>+ of copied Data buffer if EFI_SUCCESS, and means the
>+ size of desired Data buffer if EFI_BUFFER_TOO_SMALL.
>+
>+ @retval EFI_SUCCESS The TLS session data is got successfully.
>+ @retval EFI_INVALID_PARAMETER One or more of the following
>conditions is TRUE:
>+ This is NULL.
>+ DataSize is NULL.
>+ Data is NULL if *DataSize is not zero.
>+ @retval EFI_UNSUPPORTED The DataType is unsupported.
>+ @retval EFI_NOT_FOUND The TLS session data is not found.
>+ @retval EFI_NOT_READY The DataType is not ready in current session
>state.
>+ @retval EFI_BUFFER_TOO_SMALL The buffer is too small to hold the data.
>+**/
>+typedef
>+EFI_STATUS
>+(EFIAPI *EFI_TLS_GET_SESSION_DATA) (
>+ IN EFI_TLS_PROTOCOL *This,
>+ IN EFI_TLS_SESSION_DATA_TYPE DataType,
>+ IN OUT VOID *Data, OPTIONAL
>+ IN OUT UINTN *DataSize
>+ );
>+
>+/**
>+ Build response packet according to TLS state machine. This function is only
>valid for
>+ alert, handshake and change_cipher_spec content type.
>+
>+ The BuildResponsePacket() function builds TLS response packet in response
>to the TLS
>+ request packet specified by RequestBuffer and RequestSize. If
>RequestBuffer is NULL and
>+ RequestSize is 0, and TLS session status is EfiTlsSessionNotStarted, the TLS
>session
>+ will be initiated and the response packet needs to be ClientHello. If
>RequestBuffer is
>+ NULL and RequestSize is 0, and TLS session status is EfiTlsSessionClosing, the
>TLS
>+ session will be closed and response packet needs to be CloseNotify. If
>RequestBuffer is
>+ NULL and RequestSize is 0, and TLS session status is EfiTlsSessionError, the
>TLS
>+ session has errors and the response packet needs to be Alert message
>based on error
>+ type.
>+
>+ @param[in] This Pointer to the EFI_TLS_PROTOCOL instance.
>+ @param[in] RequestBuffer Pointer to the most recently received TLS
>packet. NULL
>+ means TLS need initiate the TLS session and response
>+ packet need to be ClientHello.
>+ @param[in] RequestSize Packet size in bytes for the most recently
>received TLS
>+ packet. 0 is only valid when RequestBuffer is NULL.
>+ @param[out] Buffer Pointer to the buffer to hold the built packet.
>+ @param[in, out] BufferSize Pointer to the buffer size in bytes. On input,
>it is
>+ the buffer size provided by the caller. On output, it
>+ is the buffer size in fact needed to contain the
>+ packet.
>+
>+ @retval EFI_SUCCESS The required TLS packet is built successfully.
>+ @retval EFI_INVALID_PARAMETER One or more of the following
>conditions is TRUE:
>+ This is NULL.
>+ RequestBuffer is NULL but RequestSize is NOT 0.
>+ RequestSize is 0 but RequestBuffer is NOT NULL.
>+ BufferSize is NULL.
>+ Buffer is NULL if *BufferSize is not zero.
>+ @retval EFI_BUFFER_TOO_SMALL BufferSize is too small to hold the
>response packet.
>+ @retval EFI_NOT_READY Current TLS session state is NOT ready to
>build
>+ ResponsePacket.
>+ @retval EFI_ABORTED Something wrong build response packet.
>+**/
>+typedef
>+EFI_STATUS
>+(EFIAPI *EFI_TLS_BUILD_RESPONSE_PACKET) (
>+ IN EFI_TLS_PROTOCOL *This,
>+ IN UINT8 *RequestBuffer, OPTIONAL
>+ IN UINTN RequestSize, OPTIONAL
>+ OUT UINT8 *Buffer, OPTIONAL
>+ IN OUT UINTN *BufferSize
>+ );
>+
>+/**
>+ Decrypt or encrypt TLS packet during session. This function is only valid after
>+ session connected and for application_data content type.
>+
>+ The ProcessPacket () function process each inbound or outbound TLS APP
>packet.
>+
>+ @param[in] This Pointer to the EFI_TLS_PROTOCOL instance.
>+ @param[in, out] FragmentTable Pointer to a list of fragment. The caller will
>take
>+ responsible to handle the original FragmentTable while
>+ it may be reallocated in TLS driver. If CryptMode is
>+ EfiTlsEncrypt, on input these fragments contain the TLS
>+ header and plain text TLS APP payload; on output these
>+ fragments contain the TLS header and cipher text TLS
>+ APP payload. If CryptMode is EfiTlsDecrypt, on input
>+ these fragments contain the TLS header and cipher text
>+ TLS APP payload; on output these fragments contain the
>+ TLS header and plain text TLS APP payload.
>+ @param[in] FragmentCount Number of fragment.
>+ @param[in] CryptMode Crypt mode.
>+
>+ @retval EFI_SUCCESS The operation completed successfully.
>+ @retval EFI_INVALID_PARAMETER One or more of the following
>conditions is TRUE:
>+ This is NULL.
>+ FragmentTable is NULL.
>+ FragmentCount is NULL.
>+ CryptoMode is invalid.
>+ @retval EFI_NOT_READY Current TLS session state is NOT
>+ EfiTlsSessionDataTransferring.
>+ @retval EFI_ABORTED Something wrong decryption the message. TLS
>session
>+ status will become EfiTlsSessionError. The caller need
>+ call BuildResponsePacket() to generate Error Alert
>+ message and send it out.
>+ @retval EFI_OUT_OF_RESOURCES No enough resource to finish the
>operation.
>+**/
>+typedef
>+EFI_STATUS
>+(EFIAPI *EFI_TLS_PROCESS_PACKET) (
>+ IN EFI_TLS_PROTOCOL *This,
>+ IN OUT EFI_TLS_FRAGMENT_DATA **FragmentTable,
>+ IN UINT32 *FragmentCount,
>+ IN EFI_TLS_CRYPT_MODE CryptMode
>+ );
>+
>+///
>+/// The EFI_TLS_PROTOCOL is used to create, destroy and manage TLS
>session.
>+/// For detail of TLS, please refer to TLS related RFC.
>+///
>+struct _EFI_TLS_PROTOCOL {
>+ EFI_TLS_SET_SESSION_DATA SetSessionData;
>+ EFI_TLS_GET_SESSION_DATA GetSessionData;
>+ EFI_TLS_BUILD_RESPONSE_PACKET BuildResponsePacket;
>+ EFI_TLS_PROCESS_PACKET ProcessPacket;
>+};
>+
>+extern EFI_GUID gEfiTlsServiceBindingProtocolGuid;
>+extern EFI_GUID gEfiTlsProtocolGuid;
>+
>+#endif // __EFI_TLS_PROTOCOL_H__
>+
>diff --git a/MdePkg/Include/Protocol/TlsConfig.h
>b/MdePkg/Include/Protocol/TlsConfig.h
>index 012f4ce75e..3e5916cb9d 100644
>--- a/MdePkg/Include/Protocol/TlsConfig.h
>+++ b/MdePkg/Include/Protocol/TlsConfig.h
>@@ -1,132 +1,133 @@
>-/** @file
>- EFI TLS Configuration Protocol as defined in UEFI 2.5.
>- The EFI TLS Configuration Protocol provides a way to set and get TLS
>configuration.
>-
>- Copyright (c) 2016, 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.
>-
>- @par Revision Reference:
>- This Protocol is introduced in UEFI Specification 2.5
>-
>-**/
>-#ifndef __EFI_TLS_CONFIGURATION_PROTOCOL_H__
>-#define __EFI_TLS_CONFIGURATION_PROTOCOL_H__
>-
>-///
>-/// The EFI Configuration protocol provides a way to set and get TLS
>configuration.
>-///
>-#define EFI_TLS_CONFIGURATION_PROTOCOL_GUID \
>- { \
>- 0x1682fe44, 0xbd7a, 0x4407, { 0xb7, 0xc7, 0xdc, 0xa3, 0x7c, 0xa3, 0x92,
>0x2d } \
>- }
>-
>-typedef struct _EFI_TLS_CONFIGURATION_PROTOCOL
>EFI_TLS_CONFIGURATION_PROTOCOL;
>-
>-///
>-/// EFI_TLS_CONFIG_DATA_TYPE
>-///
>-typedef enum {
>- ///
>- /// Local host configuration data: public certificate data.
>- /// This data should be DER-encoded binary X.509 certificate
>- /// or PEM-encoded X.509 certificate.
>- ///
>- EfiTlsConfigDataTypeHostPublicCert,
>- ///
>- /// Local host configuration data: private key data.
>- ///
>- EfiTlsConfigDataTypeHostPrivateKey,
>- ///
>- /// CA certificate to verify peer. This data should be PEM-encoded
>- /// RSA or PKCS#8 private key.
>- ///
>- EfiTlsConfigDataTypeCACertificate,
>- ///
>- /// CA-supplied Certificate Revocation List data. This data should
>- /// be DER-encoded CRL data.
>- ///
>- EfiTlsConfigDataTypeCertRevocationList,
>-
>- EfiTlsConfigDataTypeMaximum
>-
>-} EFI_TLS_CONFIG_DATA_TYPE;
>-
>-/**
>- Set TLS configuration data.
>-
>- The SetData() function sets TLS configuration to non-volatile storage or
>volatile
>- storage.
>-
>- @param[in] This Pointer to the
>EFI_TLS_CONFIGURATION_PROTOCOL instance.
>- @param[in] DataType Configuration data type.
>- @param[in] Data Pointer to configuration data.
>- @param[in] DataSize Total size of configuration data.
>-
>- @retval EFI_SUCCESS The TLS configuration data is set successfully.
>- @retval EFI_INVALID_PARAMETER One or more of the following conditions
>is TRUE:
>- This is NULL.
>- Data is NULL.
>- DataSize is 0.
>- @retval EFI_UNSUPPORTED The DataType is unsupported.
>- @retval EFI_OUT_OF_RESOURCES Required system resources could not
>be allocated.
>-
>-**/
>-typedef
>-EFI_STATUS
>-(EFIAPI *EFI_TLS_CONFIGURATION_SET_DATA)(
>- IN EFI_TLS_CONFIGURATION_PROTOCOL *This,
>- IN EFI_TLS_CONFIG_DATA_TYPE DataType,
>- IN VOID *Data,
>- IN UINTN DataSize
>- );
>-
>-/**
>- Get TLS configuration data.
>-
>- The GetData() function gets TLS configuration.
>-
>- @param[in] This Pointer to the
>EFI_TLS_CONFIGURATION_PROTOCOL instance.
>- @param[in] DataType Configuration data type.
>- @param[in, out] Data Pointer to configuration data.
>- @param[in, out] DataSize Total size of configuration data. On input, it
>means
>- the size of Data buffer. On output, it means the size
>- of copied Data buffer if EFI_SUCCESS, and means the
>- size of desired Data buffer if EFI_BUFFER_TOO_SMALL.
>-
>- @retval EFI_SUCCESS The TLS configuration data is got successfully.
>- @retval EFI_INVALID_PARAMETER One or more of the following conditions
>is TRUE:
>- This is NULL.
>- DataSize is NULL.
>- Data is NULL if *DataSize is not zero.
>- @retval EFI_UNSUPPORTED The DataType is unsupported.
>- @retval EFI_NOT_FOUND The TLS configuration data is not found.
>- @retval EFI_BUFFER_TOO_SMALL The buffer is too small to hold the data.
>-
>-**/
>-typedef
>-EFI_STATUS
>-(EFIAPI *EFI_TLS_CONFIGURATION_GET_DATA)(
>- IN EFI_TLS_CONFIGURATION_PROTOCOL *This,
>- IN EFI_TLS_CONFIG_DATA_TYPE DataType,
>- IN OUT VOID *Data, OPTIONAL
>- IN OUT UINTN *DataSize
>- );
>-
>-///
>-/// The EFI_TLS_CONFIGURATION_PROTOCOL is designed to provide a way
>to set and get
>-/// TLS configuration, such as Certificate, private key data.
>-///
>-struct _EFI_TLS_CONFIGURATION_PROTOCOL {
>- EFI_TLS_CONFIGURATION_SET_DATA SetData;
>- EFI_TLS_CONFIGURATION_GET_DATA GetData;
>-};
>-
>-extern EFI_GUID gEfiTlsConfigurationProtocolGuid;
>-
>-#endif //__EFI_TLS_CONFIGURATION_PROTOCOL_H__
>+/** @file
>+ EFI TLS Configuration Protocol as defined in UEFI 2.5.
>+ The EFI TLS Configuration Protocol provides a way to set and get TLS
>configuration.
>+
>+ Copyright (c) 2016, 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.
>+
>+ @par Revision Reference:
>+ This Protocol is introduced in UEFI Specification 2.5
>+
>+**/
>+#ifndef __EFI_TLS_CONFIGURATION_PROTOCOL_H__
>+#define __EFI_TLS_CONFIGURATION_PROTOCOL_H__
>+
>+///
>+/// The EFI Configuration protocol provides a way to set and get TLS
>configuration.
>+///
>+#define EFI_TLS_CONFIGURATION_PROTOCOL_GUID \
>+ { \
>+ 0x1682fe44, 0xbd7a, 0x4407, { 0xb7, 0xc7, 0xdc, 0xa3, 0x7c, 0xa3, 0x92,
>0x2d } \
>+ }
>+
>+typedef struct _EFI_TLS_CONFIGURATION_PROTOCOL
>EFI_TLS_CONFIGURATION_PROTOCOL;
>+
>+///
>+/// EFI_TLS_CONFIG_DATA_TYPE
>+///
>+typedef enum {
>+ ///
>+ /// Local host configuration data: public certificate data.
>+ /// This data should be DER-encoded binary X.509 certificate
>+ /// or PEM-encoded X.509 certificate.
>+ ///
>+ EfiTlsConfigDataTypeHostPublicCert,
>+ ///
>+ /// Local host configuration data: private key data.
>+ ///
>+ EfiTlsConfigDataTypeHostPrivateKey,
>+ ///
>+ /// CA certificate to verify peer. This data should be PEM-encoded
>+ /// RSA or PKCS#8 private key.
>+ ///
>+ EfiTlsConfigDataTypeCACertificate,
>+ ///
>+ /// CA-supplied Certificate Revocation List data. This data should
>+ /// be DER-encoded CRL data.
>+ ///
>+ EfiTlsConfigDataTypeCertRevocationList,
>+
>+ EfiTlsConfigDataTypeMaximum
>+
>+} EFI_TLS_CONFIG_DATA_TYPE;
>+
>+/**
>+ Set TLS configuration data.
>+
>+ The SetData() function sets TLS configuration to non-volatile storage or
>volatile
>+ storage.
>+
>+ @param[in] This Pointer to the
>EFI_TLS_CONFIGURATION_PROTOCOL instance.
>+ @param[in] DataType Configuration data type.
>+ @param[in] Data Pointer to configuration data.
>+ @param[in] DataSize Total size of configuration data.
>+
>+ @retval EFI_SUCCESS The TLS configuration data is set successfully.
>+ @retval EFI_INVALID_PARAMETER One or more of the following
>conditions is TRUE:
>+ This is NULL.
>+ Data is NULL.
>+ DataSize is 0.
>+ @retval EFI_UNSUPPORTED The DataType is unsupported.
>+ @retval EFI_OUT_OF_RESOURCES Required system resources could not
>be allocated.
>+
>+**/
>+typedef
>+EFI_STATUS
>+(EFIAPI *EFI_TLS_CONFIGURATION_SET_DATA)(
>+ IN EFI_TLS_CONFIGURATION_PROTOCOL *This,
>+ IN EFI_TLS_CONFIG_DATA_TYPE DataType,
>+ IN VOID *Data,
>+ IN UINTN DataSize
>+ );
>+
>+/**
>+ Get TLS configuration data.
>+
>+ The GetData() function gets TLS configuration.
>+
>+ @param[in] This Pointer to the
>EFI_TLS_CONFIGURATION_PROTOCOL instance.
>+ @param[in] DataType Configuration data type.
>+ @param[in, out] Data Pointer to configuration data.
>+ @param[in, out] DataSize Total size of configuration data. On input, it
>means
>+ the size of Data buffer. On output, it means the size
>+ of copied Data buffer if EFI_SUCCESS, and means the
>+ size of desired Data buffer if EFI_BUFFER_TOO_SMALL.
>+
>+ @retval EFI_SUCCESS The TLS configuration data is got successfully.
>+ @retval EFI_INVALID_PARAMETER One or more of the following
>conditions is TRUE:
>+ This is NULL.
>+ DataSize is NULL.
>+ Data is NULL if *DataSize is not zero.
>+ @retval EFI_UNSUPPORTED The DataType is unsupported.
>+ @retval EFI_NOT_FOUND The TLS configuration data is not found.
>+ @retval EFI_BUFFER_TOO_SMALL The buffer is too small to hold the data.
>+
>+**/
>+typedef
>+EFI_STATUS
>+(EFIAPI *EFI_TLS_CONFIGURATION_GET_DATA)(
>+ IN EFI_TLS_CONFIGURATION_PROTOCOL *This,
>+ IN EFI_TLS_CONFIG_DATA_TYPE DataType,
>+ IN OUT VOID *Data, OPTIONAL
>+ IN OUT UINTN *DataSize
>+ );
>+
>+///
>+/// The EFI_TLS_CONFIGURATION_PROTOCOL is designed to provide a way
>to set and get
>+/// TLS configuration, such as Certificate, private key data.
>+///
>+struct _EFI_TLS_CONFIGURATION_PROTOCOL {
>+ EFI_TLS_CONFIGURATION_SET_DATA SetData;
>+ EFI_TLS_CONFIGURATION_GET_DATA GetData;
>+};
>+
>+extern EFI_GUID gEfiTlsConfigurationProtocolGuid;
>+
>+#endif //__EFI_TLS_CONFIGURATION_PROTOCOL_H__
>+
>diff --git a/MdePkg/Library/BaseLib/SafeString.c
>b/MdePkg/Library/BaseLib/SafeString.c
>index 249fe477b4..68c33e9b7b 100644
>--- a/MdePkg/Library/BaseLib/SafeString.c
>+++ b/MdePkg/Library/BaseLib/SafeString.c
>@@ -217,7 +217,7 @@ StrnSizeS (
> @retval RETURN_INVALID_PARAMETER If Destination is NULL.
> If Source is NULL.
> If PcdMaximumUnicodeStringLength is not zero,
>- and DestMax is greater than
>+ and DestMax is greater than
> PcdMaximumUnicodeStringLength.
> If DestMax is 0.
> @retval RETURN_ACCESS_DENIED If Source and Destination overlap.
>@@ -231,7 +231,7 @@ StrCpyS (
> )
> {
> UINTN SourceLen;
>-
>+
> ASSERT (((UINTN) Destination & BIT0) == 0);
> ASSERT (((UINTN) Source & BIT0) == 0);
>
>@@ -296,12 +296,12 @@ StrCpyS (
> @param Length The maximum number of Unicode characters to
>copy.
>
> @retval RETURN_SUCCESS String is copied.
>- @retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than
>+ @retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than
> MIN(StrLen(Source), Length).
> @retval RETURN_INVALID_PARAMETER If Destination is NULL.
> If Source is NULL.
> If PcdMaximumUnicodeStringLength is not zero,
>- and DestMax is greater than
>+ and DestMax is greater than
> PcdMaximumUnicodeStringLength.
> If DestMax is 0.
> @retval RETURN_ACCESS_DENIED If Source and Destination overlap.
>@@ -388,14 +388,14 @@ StrnCpyS (
> @param Source A pointer to a Null-terminated Unicode string.
>
> @retval RETURN_SUCCESS String is appended.
>- @retval RETURN_BAD_BUFFER_SIZE If DestMax is NOT greater than
>+ @retval RETURN_BAD_BUFFER_SIZE If DestMax is NOT greater than
> StrLen(Destination).
> @retval RETURN_BUFFER_TOO_SMALL If (DestMax - StrLen(Destination)) is
>NOT
> greater than StrLen(Source).
> @retval RETURN_INVALID_PARAMETER If Destination is NULL.
> If Source is NULL.
> If PcdMaximumUnicodeStringLength is not zero,
>- and DestMax is greater than
>+ and DestMax is greater than
> PcdMaximumUnicodeStringLength.
> If DestMax is 0.
> @retval RETURN_ACCESS_DENIED If Source and Destination overlap.
>@@ -411,7 +411,7 @@ StrCatS (
> UINTN DestLen;
> UINTN CopyLen;
> UINTN SourceLen;
>-
>+
> ASSERT (((UINTN) Destination & BIT0) == 0);
> ASSERT (((UINTN) Source & BIT0) == 0);
>
>@@ -497,7 +497,7 @@ StrCatS (
> @retval RETURN_INVALID_PARAMETER If Destination is NULL.
> If Source is NULL.
> If PcdMaximumUnicodeStringLength is not zero,
>- and DestMax is greater than
>+ and DestMax is greater than
> PcdMaximumUnicodeStringLength.
> If DestMax is 0.
> @retval RETURN_ACCESS_DENIED If Source and Destination overlap.
>@@ -514,7 +514,7 @@ StrnCatS (
> UINTN DestLen;
> UINTN CopyLen;
> UINTN SourceLen;
>-
>+
> ASSERT (((UINTN) Destination & BIT0) == 0);
> ASSERT (((UINTN) Source & BIT0) == 0);
>
>@@ -1799,7 +1799,7 @@ AsciiStrnSizeS (
> @retval RETURN_INVALID_PARAMETER If Destination is NULL.
> If Source is NULL.
> If PcdMaximumAsciiStringLength is not zero,
>- and DestMax is greater than
>+ and DestMax is greater than
> PcdMaximumAsciiStringLength.
> If DestMax is 0.
> @retval RETURN_ACCESS_DENIED If Source and Destination overlap.
>@@ -1813,7 +1813,7 @@ AsciiStrCpyS (
> )
> {
> UINTN SourceLen;
>-
>+
> //
> // 1. Neither Destination nor Source shall be a null pointer.
> //
>@@ -1873,12 +1873,12 @@ AsciiStrCpyS (
> @param Length The maximum number of Ascii characters to copy.
>
> @retval RETURN_SUCCESS String is copied.
>- @retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than
>+ @retval RETURN_BUFFER_TOO_SMALL If DestMax is NOT greater than
> MIN(StrLen(Source), Length).
> @retval RETURN_INVALID_PARAMETER If Destination is NULL.
> If Source is NULL.
> If PcdMaximumAsciiStringLength is not zero,
>- and DestMax is greater than
>+ and DestMax is greater than
> PcdMaximumAsciiStringLength.
> If DestMax is 0.
> @retval RETURN_ACCESS_DENIED If Source and Destination overlap.
>@@ -1960,14 +1960,14 @@ AsciiStrnCpyS (
> @param Source A pointer to a Null-terminated Ascii string.
>
> @retval RETURN_SUCCESS String is appended.
>- @retval RETURN_BAD_BUFFER_SIZE If DestMax is NOT greater than
>+ @retval RETURN_BAD_BUFFER_SIZE If DestMax is NOT greater than
> StrLen(Destination).
> @retval RETURN_BUFFER_TOO_SMALL If (DestMax - StrLen(Destination)) is
>NOT
> greater than StrLen(Source).
> @retval RETURN_INVALID_PARAMETER If Destination is NULL.
> If Source is NULL.
> If PcdMaximumAsciiStringLength is not zero,
>- and DestMax is greater than
>+ and DestMax is greater than
> PcdMaximumAsciiStringLength.
> If DestMax is 0.
> @retval RETURN_ACCESS_DENIED If Source and Destination overlap.
>@@ -1983,7 +1983,7 @@ AsciiStrCatS (
> UINTN DestLen;
> UINTN CopyLen;
> UINTN SourceLen;
>-
>+
> //
> // Let CopyLen denote the value DestMax - AsciiStrnLenS(Destination,
>DestMax) upon entry to AsciiStrCatS.
> //
>@@ -2064,7 +2064,7 @@ AsciiStrCatS (
> @retval RETURN_INVALID_PARAMETER If Destination is NULL.
> If Source is NULL.
> If PcdMaximumAsciiStringLength is not zero,
>- and DestMax is greater than
>+ and DestMax is greater than
> PcdMaximumAsciiStringLength.
> If DestMax is 0.
> @retval RETURN_ACCESS_DENIED If Source and Destination overlap.
>@@ -2081,7 +2081,7 @@ AsciiStrnCatS (
> UINTN DestLen;
> UINTN CopyLen;
> UINTN SourceLen;
>-
>+
> //
> // Let CopyLen denote the value DestMax - AsciiStrnLenS(Destination,
>DestMax) upon entry to AsciiStrnCatS.
> //
>@@ -3265,7 +3265,8 @@ AsciiStrToIpv6Address (
> &Address->Addr[CompressStart + ARRAY_SIZE (Address->Addr) -
>AddressIndex],
> &LocalAddress.Addr[CompressStart],
> AddressIndex - CompressStart
>- );
>
>+ );
>+
> }
>
> if (PrefixLength != NULL) {
>--
>2.12.0.windows.1
next prev parent reply other threads:[~2017-04-06 4:45 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-06 2:25 [PATCH 0/6] Convert files to CRLF line ending Hao Wu
2017-04-06 2:25 ` [PATCH 1/6] CryptoPkg: " Hao Wu
2017-04-06 2:56 ` Long, Qin
2017-04-06 2:25 ` [PATCH 2/6] IntelFsp2Pkg: " Hao Wu
2017-04-06 3:08 ` Yao, Jiewen
2017-04-06 2:25 ` [PATCH 3/6] IntelFsp2WrapperPkg: " Hao Wu
2017-04-06 3:08 ` Yao, Jiewen
2017-04-06 2:25 ` [PATCH 4/6] SignedCapsulePkg: " Hao Wu
2017-04-06 3:08 ` Yao, Jiewen
2017-04-06 2:25 ` [PATCH 5/6] MdePkg: " Hao Wu
2017-04-06 4:45 ` Gao, Liming [this message]
2017-04-06 2:25 ` [PATCH 6/6] NetworkPkg: " Hao Wu
2017-04-06 5:29 ` Wu, Jiaxin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A89E2EF3DFEDB4C8BFDE51014F606A14D719F40@shsmsx102.ccr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox