From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-002e3701.pphosted.com (mx0a-002e3701.pphosted.com [148.163.147.86]) by mx.groups.io with SMTP id smtpd.web11.29078.1610943364453106636 for ; Sun, 17 Jan 2021 20:16:04 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=O677KF8k; spf=pass (domain: hpe.com, ip: 148.163.147.86, mailfrom: prvs=06524ce5c2=abner.chang@hpe.com) Received: from pps.filterd (m0134420.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 10I4Do7I011864; Mon, 18 Jan 2021 04:16:04 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id; s=pps0720; bh=7f/IazD+yVTCaKmgxbUShK8DQl1bC3X6dQiaTM0YoDw=; b=O677KF8kz93qUJltEmFx/PBHqY27Jz35jxC/msCgLIsTfuPI3vZd6m5p6fIZfNxThQ3x 759+EYVCLmhJxXFpsTF6RGwTByYdNJzV7peyYILgEVRH37nX/IrD84ytvlzIFM4dUpTy Kp4lB1T3m7h0yauJB8Grx3l4T8QCggSQ3HSvH0N8i1q6MFz3/xdySitITrShuAo6GcFq dqFzCoFR7oH+/gEgcG8CQ1NTF8jk+v5v1TFex8ZkaljEbl2PCUMDbykBcg7RxQCSL8BK 09BGhw8iFrNm0GFf5SKaup0RpB+QbZyO1qTyKDYMSuPfqzYKO6pnS1gydyDz2I0RYy1E YQ== Received: from g4t3427.houston.hpe.com (g4t3427.houston.hpe.com [15.241.140.73]) by mx0b-002e3701.pphosted.com with ESMTP id 3649tunkq5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 18 Jan 2021 04:16:03 +0000 Received: from g9t2301.houston.hpecorp.net (g9t2301.houston.hpecorp.net [16.220.97.129]) by g4t3427.houston.hpe.com (Postfix) with ESMTP id 1E9E672; Mon, 18 Jan 2021 04:16:03 +0000 (UTC) Received: from abner-virtual-machine.asiapacific.hpqcorp.net (abner-virtual-machine.asiapacific.hpqcorp.net [15.119.210.153]) by g9t2301.houston.hpecorp.net (Postfix) with ESMTP id A15944B; Mon, 18 Jan 2021 04:16:01 +0000 (UTC) From: "Abner Chang" To: devel@edk2.groups.io Cc: Nickle Wang , Ray Ni , Michael D Kinney Subject: [PATCH] RedfishPkg/RedfishContentCodingLib: EDKII Redfish En/Decode library Date: Mon, 18 Jan 2021 11:27:43 +0800 Message-Id: <20210118032743.10632-1-abner.chang@hpe.com> X-Mailer: git-send-email 2.17.1 X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.343,18.0.737 definitions=2021-01-18_02:2021-01-15,2021-01-18 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 priorityscore=1501 clxscore=1015 phishscore=0 impostorscore=0 bulkscore=0 lowpriorityscore=0 adultscore=0 spamscore=0 mlxscore=0 suspectscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2101180022 BZ#:3174 Platform library to provide the encoding/decoding algorithms for the Redfish packets. The supported value could be one of below or any which is platform-specific. - HTTP_CONTENT_ENCODING_IDENTITY "identity" - HTTP_CONTENT_ENCODING_GZIP "gzip" - HTTP_CONTENT_ENCODING_COMPRESS "compress" - HTTP_CONTENT_ENCODING_DEFLATE "deflate" - HTTP_CONTENT_ENCODING_BROTLI "br" Signed-off-by: Abner Chang Cc: Nickle Wang Cc: Ray Ni Cc: Michael D Kinney --- RedfishPkg/RedfishPkg.dec | 7 +- RedfishPkg/RedfishPkg.dsc | 4 +- .../RedfishContentCodingLibNull.inf | 31 +++++++ .../Include/Library/RedfishContentCodingLib.h | 78 ++++++++++++++++++ .../RedfishContentCodingLibNull.c | 81 +++++++++++++++++++ 5 files changed, 199 insertions(+), 2 deletions(-) create mode 100644 RedfishPkg/Library/RedfishContentCodingLibNull/RedfishContentCodingLibNull.inf create mode 100644 RedfishPkg/Include/Library/RedfishContentCodingLib.h create mode 100644 RedfishPkg/Library/RedfishContentCodingLibNull/RedfishContentCodingLibNull.c diff --git a/RedfishPkg/RedfishPkg.dec b/RedfishPkg/RedfishPkg.dec index 2985676b60..016d0e87d3 100644 --- a/RedfishPkg/RedfishPkg.dec +++ b/RedfishPkg/RedfishPkg.dec @@ -2,7 +2,7 @@ # Redfish Package # # Copyright (c) 2019, Intel Corporation. All rights reserved.
-# (C) Copyright 2020 Hewlett Packard Enterprise Development LP
+# (C) Copyright 2021 Hewlett Packard Enterprise Development LP
# # SPDX-License-Identifier: BSD-2-Clause-Patent ## @@ -50,6 +50,11 @@ # JsonLib|Include/Library/JsonLib.h + ## @libraryclass Provides the library functions to encode/decode + # Redfish packet. + # + RedfishContentCodingLib|Include/Library/RedfishContentCodingLib.h + [LibraryClasses.Common.Private] ## @libraryclass Provides the private C runtime library functions. # CRT library is currently used by edk2 JsonLib (open source diff --git a/RedfishPkg/RedfishPkg.dsc b/RedfishPkg/RedfishPkg.dsc index bffa8f1f89..2cae8a46d8 100644 --- a/RedfishPkg/RedfishPkg.dsc +++ b/RedfishPkg/RedfishPkg.dsc @@ -2,7 +2,7 @@ # Redfish Package # # Copyright (c) 2019, Intel Corporation. All rights reserved.
-# (C) Copyright 2020 Hewlett-Packard Enterprise Development LP. +# (C) Copyright 2021 Hewlett-Packard Enterprise Development LP. # # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -37,6 +37,7 @@ NetLib|NetworkPkg/Library/DxeNetLib/DxeNetLib.inf DpcLib|NetworkPkg/Library/DxeDpcLib/DxeDpcLib.inf RedfishPlatformCredentialLib|RedfishPkg/Library/PlatformCredentialLibNull/PlatformCredentialLibNull.inf + RedfishContentCodingLib|RedfishPkg/Library/RedfishContentCodingLibNull/RedfishContentCodingLibNull.inf [LibraryClasses.ARM, LibraryClasses.AARCH64] # @@ -49,6 +50,7 @@ [Components] RedfishPkg/Library/PlatformHostInterfaceLibNull/PlatformHostInterfaceLibNull.inf RedfishPkg/Library/PlatformCredentialLibNull/PlatformCredentialLibNull.inf + RedfishPkg/Library/RedfishContentCodingLibNull/RedfishContentCodingLibNull.inf RedfishPkg/Library/DxeRestExLib/DxeRestExLib.inf RedfishPkg/Library/BaseUcs2Utf8Lib/BaseUcs2Utf8Lib.inf RedfishPkg/PrivateLibrary/RedfishCrtLib/RedfishCrtLib.inf diff --git a/RedfishPkg/Library/RedfishContentCodingLibNull/RedfishContentCodingLibNull.inf b/RedfishPkg/Library/RedfishContentCodingLibNull/RedfishContentCodingLibNull.inf new file mode 100644 index 0000000000..d8c5cb583e --- /dev/null +++ b/RedfishPkg/Library/RedfishContentCodingLibNull/RedfishContentCodingLibNull.inf @@ -0,0 +1,31 @@ +## @file +# NULL instance of RedfishContentCodingLibNull +# This library is used to encode/decode Redfish payload. +# +# (C) Copyright 2021 Hewlett Packard Enterprise Development LP
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x0001000b + BASE_NAME = RedfishContentCodingLibNull + FILE_GUID = 06B10249-4D38-FF37-0CA5-13AFB6D625CC + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + LIBRARY_CLASS = RedfishContentCodingLib + +# +# VALID_ARCHITECTURES = IA32 X64 ARM AARCH64 RISCV64 +# + +[Sources] + RedfishContentCodingLibNull.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + RedfishPkg/RedfishPkg.dec + + diff --git a/RedfishPkg/Include/Library/RedfishContentCodingLib.h b/RedfishPkg/Include/Library/RedfishContentCodingLib.h new file mode 100644 index 0000000000..71a8adcb26 --- /dev/null +++ b/RedfishPkg/Include/Library/RedfishContentCodingLib.h @@ -0,0 +1,78 @@ +/** @file + Definitinos of RedfishContentCodingLib. + + (C) Copyright 2021 Hewlett Packard Enterprise Development LP
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ +#ifndef REDFISH_CONTENT_CODING_LIB_H_ +#define REDFISH_CONTENT_CODING_LIB_H_ + +/** + This is the function to encode the content use the + algorithm indicated in ContentEncodedValue. The naming of + ContentEncodedValue is follow HTTP spec or could be a + platform-specific value. + + @param[in] ContentEncodedValue HTTP conent encoded value. + The value could be one of below + or any which is platform-specific. + - HTTP_CONTENT_ENCODING_IDENTITY "identity" + - HTTP_CONTENT_ENCODING_GZIP "gzip" + - HTTP_CONTENT_ENCODING_COMPRESS "compress" + - HTTP_CONTENT_ENCODING_DEFLATE "deflate" + - HTTP_CONTENT_ENCODING_BROTLI "br" + @param[in] OriginalContent Original content. + @param[in] OriginalContentLength The length of original content. + @param[out] EncodedContentPointer Pointer to receive the encoded content pointer. + @param[out] EncodedContentLength Length of encoded content. + + @retval EFI_SUCCESS Content is encoded successfully. + @retval EFI_UNSUPPORTED No supported encoding funciton, + @retval EFI_INVALID_PARAMETER One of the given parameter is invalid. + +**/ + +EFI_STATUS +RedfishContentEncode ( + IN CHAR8 *ContentEncodedValue, + IN CHAR8 *OriginalContent, + IN UINTN OriginalContentLength, + OUT VOID **EncodedContentPointer, + OUT UINTN *EncodedLength + ); + +/** + This is the function to decode the content use the + algorithm indicated in ContentEncodedValue. The naming of + ContentEncodedValue is follow HTTP spec or could be a + platform-specific value. + + @param[in] ContentDecodedValue HTTP conent decoded value. + The value could be one of below + or any which is platform-specific. + - HTTP_CONTENT_ENCODING_IDENTITY "identity" + - HTTP_CONTENT_ENCODING_GZIP "gzip" + - HTTP_CONTENT_ENCODING_COMPRESS "compress" + - HTTP_CONTENT_ENCODING_DEFLATE "deflate" + - HTTP_CONTENT_ENCODING_BROTLI "br" + @param[in] ContentPointer Original content. + @param[in] ContentLength The length of original content. + @param[out] DecodedContentPointer Pointer to receive decoded content pointer. + @param[out] DecodedContentLength Length of decoded content. + + @retval EFI_SUCCESS Content is decoded successfully. + @retval EFI_UNSUPPORTED No supported decoding funciton, + @retval EFI_INVALID_PARAMETER One of the given parameter is invalid. + +**/ +EFI_STATUS +RedfishContentDecode ( + IN CHAR8 *ContentEncodedValue, + IN VOID *ContentPointer, + IN UINTN ContentLength, + OUT VOID **DecodedContentPointer, + OUT UINTN *DecodedLength + ); +#endif diff --git a/RedfishPkg/Library/RedfishContentCodingLibNull/RedfishContentCodingLibNull.c b/RedfishPkg/Library/RedfishContentCodingLibNull/RedfishContentCodingLibNull.c new file mode 100644 index 0000000000..6d13256e83 --- /dev/null +++ b/RedfishPkg/Library/RedfishContentCodingLibNull/RedfishContentCodingLibNull.c @@ -0,0 +1,81 @@ +/** @file + NULL instace of RedfishContentCodingLib + + (C) Copyright 2021 Hewlett Packard Enterprise Development LP
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ +#include + +/** + This is the function to encode the content use the + algorithm indicated in ContentEncodedValue. The naming of + ContentEncodedValue is follow HTTP spec or could be a + platform-specific value. + + @param[in] ContentEncodedValue HTTP conent encoded value. + The value could be one of below + or any which is platform-specific. + - HTTP_CONTENT_ENCODING_IDENTITY "identity" + - HTTP_CONTENT_ENCODING_GZIP "gzip" + - HTTP_CONTENT_ENCODING_COMPRESS "compress" + - HTTP_CONTENT_ENCODING_DEFLATE "deflate" + - HTTP_CONTENT_ENCODING_BROTLI "br" + @param[in] OriginalContent Original content. + @param[in] OriginalContentLength The length of original content. + @param[out] EncodedContentPointer Pointer to receive the encoded content pointer. + @param[out] EncodedContentLength Length of encoded content. + + @retval EFI_SUCCESS Content is encoded successfully. + @retval EFI_UNSUPPORTED No supported encoding funciton, + @retval EFI_INVALID_PARAMETER One of the given parameter is invalid. + +**/ +EFI_STATUS +RedfishContentEncode ( + IN CHAR8 *ContentEncodedValue, + IN CHAR8 *OriginalContent, + IN UINTN OriginalContentLength, + OUT VOID **EncodedContentPointer, + OUT UINTN *EncodedContentLength + ) +{ + return EFI_UNSUPPORTED; +} + +/** + This is the function to decode the content use the + algorithm indicated in ContentEncodedValue. The naming of + ContentEncodedValue is follow HTTP spec or could be a + platform-specific value. + + @param[in] ContentDecodedValue HTTP conent decoded value. + The value could be one of below + or any which is platform-specific. + - HTTP_CONTENT_ENCODING_IDENTITY "identity" + - HTTP_CONTENT_ENCODING_GZIP "gzip" + - HTTP_CONTENT_ENCODING_COMPRESS "compress" + - HTTP_CONTENT_ENCODING_DEFLATE "deflate" + - HTTP_CONTENT_ENCODING_BROTLI "br" + @param[in] ContentPointer Original content. + @param[in] ContentLength The length of original content. + @param[out] DecodedContentPointer Pointer to receive decoded content pointer. + @param[out] DecodedContentLength Length of decoded content. + + @retval EFI_SUCCESS Content is decoded successfully. + @retval EFI_UNSUPPORTED No supported decoding funciton, + @retval EFI_INVALID_PARAMETER One of the given parameter is invalid. + +**/ +EFI_STATUS +RedfishContentDecode ( + IN CHAR8 *ContentDecodedValue, + IN VOID *ContentPointer, + IN UINTN ContentLength, + OUT VOID **DecodedContentPointer, + OUT UINTN *DecodedContentLength + ) +{ + return EFI_UNSUPPORTED; +} -- 2.17.1