+ // NOTE: HMAC_CTX object was made opaque in openssl-1.1.x, here we just use the\r
+ // fixed size as a workaround to make this API work for compatibility.\r
+ // We should retire HmacSha256GetContextSize() in future, and use HmacSha256New()\r
+ // and HmacSha256Free() for context allocation and release.\r
+ //\r
+ return (UINTN)HMAC_SHA256_CTX_SIZE;\r
+}\r
+\r
+/**\r
+ Allocates and initializes one HMAC_CTX context for subsequent HMAC-SHA256 use.\r
+\r
+ @return Pointer to the HMAC_CTX context that has been initialized.\r
+ If the allocations fails, HmacSha256New() returns NULL.\r
+\r
+**/\r
+VOID *\r
+EFIAPI\r
+HmacSha256New (\r
+ VOID\r
+ )\r
+{\r
+ //\r
+ // Allocates & Initializes HMAC_CTX Context by OpenSSL HMAC_CTX_new()\r
+ //\r
+ return (VOID *) HMAC_CTX_new ();\r
+}\r
+\r
+/**\r
+ Release the specified HMAC_CTX context.\r
+\r
+ @param[in] HmacSha256Ctx Pointer to the HMAC_CTX context to be released.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+HmacSha256Free (\r
+ IN VOID *HmacSha256Ctx\r
+ )\r
+{\r