Cc: Palmer Thomas <thomas.pal...@hpe.com> Cc: Long Qin <qin.l...@intel.com> Cc: Ye Ting <ting...@intel.com> Cc: Fu Siyuan <siyuan...@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Wu Jiaxin <jiaxin...@intel.com> Signed-off-by: Jiaxin Wu <jiaxin...@intel.com> --- NetworkPkg/TlsDxe/TlsImpl.c | 56 ++++++++++++++++++++--------------------- NetworkPkg/TlsDxe/TlsImpl.h | 30 ++-------------------- NetworkPkg/TlsDxe/TlsProtocol.c | 2 +- 3 files changed, 31 insertions(+), 57 deletions(-)
diff --git a/NetworkPkg/TlsDxe/TlsImpl.c b/NetworkPkg/TlsDxe/TlsImpl.c index 8cb1c15..b840e54 100644 --- a/NetworkPkg/TlsDxe/TlsImpl.c +++ b/NetworkPkg/TlsDxe/TlsImpl.c @@ -36,22 +36,22 @@ TlsEcryptPacket ( IN TLS_INSTANCE *TlsInstance, IN OUT EFI_TLS_FRAGMENT_DATA **FragmentTable, IN UINT32 *FragmentCount ) { - UINTN Index; - UINT32 BytesCopied; - UINT32 BufferInSize; - UINT8 *BufferIn; - UINT8 *BufferInPtr; - TLSRecordHeader *RecordHeaderIn; - UINT16 ThisPlainMessageSize; - TLSRecordHeader *TempRecordHeader; - UINT16 ThisMessageSize; - UINT32 BufferOutSize; - UINT8 *BufferOut; - INTN Ret; + UINTN Index; + UINT32 BytesCopied; + UINT32 BufferInSize; + UINT8 *BufferIn; + UINT8 *BufferInPtr; + TLS_RECORD_HEADER *RecordHeaderIn; + UINT16 ThisPlainMessageSize; + TLS_RECORD_HEADER *TempRecordHeader; + UINT16 ThisMessageSize; + UINT32 BufferOutSize; + UINT8 *BufferOut; + INTN Ret; BytesCopied = 0; BufferInSize = 0; BufferIn = NULL; BufferInPtr = NULL; @@ -96,13 +96,13 @@ TlsEcryptPacket ( // // Parsing buffer. // BufferInPtr = BufferIn; - TempRecordHeader = (TLSRecordHeader *) BufferOut; + TempRecordHeader = (TLS_RECORD_HEADER *) BufferOut; while ((UINTN) BufferInPtr < (UINTN) BufferIn + BufferInSize) { - RecordHeaderIn = (TLSRecordHeader *) BufferInPtr; + RecordHeaderIn = (TLS_RECORD_HEADER *) BufferInPtr; ASSERT (RecordHeaderIn->ContentType == TLS_CONTENT_TYPE_APPLICATION_DATA); ThisPlainMessageSize = RecordHeaderIn->Length; TlsWrite (TlsInstance->TlsConn, (UINT8 *) (RecordHeaderIn + 1), ThisPlainMessageSize); if (TlsInStateError (TlsInstance->TlsConn)) { @@ -164,22 +164,22 @@ TlsDecryptPacket ( IN TLS_INSTANCE *TlsInstance, IN OUT EFI_TLS_FRAGMENT_DATA **FragmentTable, IN UINT32 *FragmentCount ) { - UINTN Index; - UINT32 BytesCopied; - UINT8 *BufferIn; - UINT32 BufferInSize; - UINT8 *BufferInPtr; - TLSRecordHeader *RecordHeaderIn; - UINT16 ThisCipherMessageSize; - TLSRecordHeader *TempRecordHeader; - UINT16 ThisPlainMessageSize; - UINT8 *BufferOut; - UINT32 BufferOutSize; - INTN Ret; + UINTN Index; + UINT32 BytesCopied; + UINT8 *BufferIn; + UINT32 BufferInSize; + UINT8 *BufferInPtr; + TLS_RECORD_HEADER *RecordHeaderIn; + UINT16 ThisCipherMessageSize; + TLS_RECORD_HEADER *TempRecordHeader; + UINT16 ThisPlainMessageSize; + UINT8 *BufferOut; + UINT32 BufferOutSize; + INTN Ret; BytesCopied = 0; BufferIn = NULL; BufferInSize = 0; BufferInPtr = NULL; @@ -224,13 +224,13 @@ TlsDecryptPacket ( // // Parsing buffer. Received packet may have multiply TLS record message. // BufferInPtr = BufferIn; - TempRecordHeader = (TLSRecordHeader *) BufferOut; + TempRecordHeader = (TLS_RECORD_HEADER *) BufferOut; while ((UINTN) BufferInPtr < (UINTN) BufferIn + BufferInSize) { - RecordHeaderIn = (TLSRecordHeader *) BufferInPtr; + RecordHeaderIn = (TLS_RECORD_HEADER *) BufferInPtr; ASSERT (RecordHeaderIn->ContentType == TLS_CONTENT_TYPE_APPLICATION_DATA); ThisCipherMessageSize = NTOHS (RecordHeaderIn->Length); Ret = TlsCtrlTrafficIn (TlsInstance->TlsConn, (UINT8 *) (RecordHeaderIn), RECORD_HEADER_LEN + ThisCipherMessageSize); if (Ret != RECORD_HEADER_LEN + ThisCipherMessageSize) { diff --git a/NetworkPkg/TlsDxe/TlsImpl.h b/NetworkPkg/TlsDxe/TlsImpl.h index cceb130..358a8d0 100644 --- a/NetworkPkg/TlsDxe/TlsImpl.h +++ b/NetworkPkg/TlsDxe/TlsImpl.h @@ -33,10 +33,12 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. // Consumed Protocols // #include <Protocol/Tls.h> #include <Protocol/TlsConfig.h> +#include <IndustryStandard/Tls1.h> + #include "TlsDriver.h" // // Protocol instances // @@ -46,38 +48,10 @@ extern EFI_TLS_CONFIGURATION_PROTOCOL mTlsConfigurationProtocol; #define RECORD_HEADER_LEN 5 /// ContentType(1) + Version(2) + Length(2) #define MAX_BUFFER_SIZE 32768 -#pragma pack (push, 1) - -//TLS Version -#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 - -// -//Content Type -// -typedef enum { - TLS_CONTENT_TYPE_CHANGE_CIPHER_SPEC = 20, - TLS_CONTENT_TYPE_ALERT = 21, - TLS_CONTENT_TYPE_HANDSHAKE = 22, - TLS_CONTENT_TYPE_APPLICATION_DATA = 23, -} TLS_CONTENT_TYPE; - -typedef struct { - UINT8 ContentType; - EFI_TLS_VERSION Version; - UINT16 Length; -} TLSRecordHeader; - -#pragma pack (pop) - /** Encrypt the message listed in fragment. @param[in] TlsInstance The pointer to the TLS instance. @param[in, out] FragmentTable Pointer to a list of fragment. diff --git a/NetworkPkg/TlsDxe/TlsProtocol.c b/NetworkPkg/TlsDxe/TlsProtocol.c index 92cd472..b780ad2 100644 --- a/NetworkPkg/TlsDxe/TlsProtocol.c +++ b/NetworkPkg/TlsDxe/TlsProtocol.c @@ -516,11 +516,11 @@ TlsBuildResponsePacket ( } } else { // // Must be alert message, Decrypt it and build the ResponsePacket. // - ASSERT (((TLSRecordHeader *) RequestBuffer)->ContentType == TLS_CONTENT_TYPE_ALERT); + ASSERT (((TLS_RECORD_HEADER *) RequestBuffer)->ContentType == TLS_CONTENT_TYPE_ALERT); Status = TlsHandeAlert ( Instance->TlsConn, RequestBuffer, RequestSize, -- 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel