-/** @file
- Implementation of EFI TLS Configuration Protocol Interfaces.
-
- 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.
-
-**/
-
-#include "TlsImpl.h"
-
-EFI_TLS_CONFIGURATION_PROTOCOL mTlsConfigurationProtocol = {
- TlsConfigurationSetData,
- TlsConfigurationGetData
-};
-
-/**
- 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.
-
-**/
-EFI_STATUS
-EFIAPI
-TlsConfigurationSetData (
- IN EFI_TLS_CONFIGURATION_PROTOCOL *This,
- IN EFI_TLS_CONFIG_DATA_TYPE DataType,
- IN VOID *Data,
- IN UINTN DataSize
- )
-{
- EFI_STATUS Status;
- TLS_INSTANCE *Instance;
- EFI_TPL OldTpl;
-
- Status = EFI_SUCCESS;
-
- if (This == NULL || Data == NULL || DataSize == 0) {
- return EFI_INVALID_PARAMETER;
- }
-
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
-
- Instance = TLS_INSTANCE_FROM_CONFIGURATION (This);
-
- switch (DataType) {
- case EfiTlsConfigDataTypeCACertificate:
- Status = TlsSetCaCertificate (Instance->TlsConn, Data, DataSize);
- break;
- case EfiTlsConfigDataTypeHostPublicCert:
- Status = TlsSetHostPublicCert (Instance->TlsConn, Data, DataSize);
- break;
- case EfiTlsConfigDataTypeHostPrivateKey:
- Status = TlsSetHostPrivateKey (Instance->TlsConn, Data, DataSize);
- break;
- case EfiTlsConfigDataTypeCertRevocationList:
- Status = TlsSetCertRevocationList (Data, DataSize);
- break;
- default:
- Status = EFI_UNSUPPORTED;
- }
-
- gBS->RestoreTPL (OldTpl);
- return Status;
-}
-
-/**
- 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.
-**/
-EFI_STATUS
-EFIAPI
-TlsConfigurationGetData (
- IN EFI_TLS_CONFIGURATION_PROTOCOL *This,
- IN EFI_TLS_CONFIG_DATA_TYPE DataType,
- IN OUT VOID *Data, OPTIONAL
- IN OUT UINTN *DataSize
- )
-{
- EFI_STATUS Status;
- TLS_INSTANCE *Instance;
-
- EFI_TPL OldTpl;
-
- Status = EFI_SUCCESS;
-
- if (This == NULL || DataSize == NULL || (Data == NULL && *DataSize != 0)) {
- return EFI_INVALID_PARAMETER;
- }
-
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
-
- Instance = TLS_INSTANCE_FROM_CONFIGURATION (This);
-
- switch (DataType) {
- case EfiTlsConfigDataTypeCACertificate:
- Status = TlsGetCaCertificate (Instance->TlsConn, Data, DataSize);
- break;
- case EfiTlsConfigDataTypeHostPublicCert:
- Status = TlsGetHostPublicCert (Instance->TlsConn, Data, DataSize);
- break;
- case EfiTlsConfigDataTypeHostPrivateKey:
- Status = TlsGetHostPrivateKey (Instance->TlsConn, Data, DataSize);
- break;
- case EfiTlsConfigDataTypeCertRevocationList:
- Status = TlsGetCertRevocationList (Data, DataSize);
- break;
- default:
- Status = EFI_UNSUPPORTED;
- }
-
- gBS->RestoreTPL (OldTpl);
- return Status;
-}
+/** @file\r
+ Implementation of EFI TLS Configuration Protocol Interfaces.\r
+\r
+ Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>\r
+\r
+ This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php.\r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+\r
+#include "TlsImpl.h"\r
+\r
+EFI_TLS_CONFIGURATION_PROTOCOL mTlsConfigurationProtocol = {\r
+ TlsConfigurationSetData,\r
+ TlsConfigurationGetData\r
+};\r
+\r
+/**\r
+ Set TLS configuration data.\r
+\r
+ The SetData() function sets TLS configuration to non-volatile storage or volatile\r
+ storage.\r
+\r
+ @param[in] This Pointer to the EFI_TLS_CONFIGURATION_PROTOCOL instance.\r
+ @param[in] DataType Configuration data type.\r
+ @param[in] Data Pointer to configuration data.\r
+ @param[in] DataSize Total size of configuration data.\r
+\r
+ @retval EFI_SUCCESS The TLS configuration data is set successfully.\r
+ @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:\r
+ This is NULL.\r
+ Data is NULL.\r
+ DataSize is 0.\r
+ @retval EFI_UNSUPPORTED The DataType is unsupported.\r
+ @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+TlsConfigurationSetData (\r
+ IN EFI_TLS_CONFIGURATION_PROTOCOL *This,\r
+ IN EFI_TLS_CONFIG_DATA_TYPE DataType,\r
+ IN VOID *Data,\r
+ IN UINTN DataSize\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ TLS_INSTANCE *Instance;\r
+ EFI_TPL OldTpl;\r
+\r
+ Status = EFI_SUCCESS;\r
+\r
+ if (This == NULL || Data == NULL || DataSize == 0) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
+ OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
+\r
+ Instance = TLS_INSTANCE_FROM_CONFIGURATION (This);\r
+\r
+ switch (DataType) {\r
+ case EfiTlsConfigDataTypeCACertificate:\r
+ Status = TlsSetCaCertificate (Instance->TlsConn, Data, DataSize);\r
+ break;\r
+ case EfiTlsConfigDataTypeHostPublicCert:\r
+ Status = TlsSetHostPublicCert (Instance->TlsConn, Data, DataSize);\r
+ break;\r
+ case EfiTlsConfigDataTypeHostPrivateKey:\r
+ Status = TlsSetHostPrivateKey (Instance->TlsConn, Data, DataSize);\r
+ break;\r
+ case EfiTlsConfigDataTypeCertRevocationList:\r
+ Status = TlsSetCertRevocationList (Data, DataSize);\r
+ break;\r
+ default:\r
+ Status = EFI_UNSUPPORTED;\r
+ }\r
+\r
+ gBS->RestoreTPL (OldTpl);\r
+ return Status;\r
+}\r
+\r
+/**\r
+ Get TLS configuration data.\r
+\r
+ The GetData() function gets TLS configuration.\r
+\r
+ @param[in] This Pointer to the EFI_TLS_CONFIGURATION_PROTOCOL instance.\r
+ @param[in] DataType Configuration data type.\r
+ @param[in, out] Data Pointer to configuration data.\r
+ @param[in, out] DataSize Total size of configuration data. On input, it means\r
+ the size of Data buffer. On output, it means the size\r
+ of copied Data buffer if EFI_SUCCESS, and means the\r
+ size of desired Data buffer if EFI_BUFFER_TOO_SMALL.\r
+\r
+ @retval EFI_SUCCESS The TLS configuration data is got successfully.\r
+ @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:\r
+ This is NULL.\r
+ DataSize is NULL.\r
+ Data is NULL if *DataSize is not zero.\r
+ @retval EFI_UNSUPPORTED The DataType is unsupported.\r
+ @retval EFI_NOT_FOUND The TLS configuration data is not found.\r
+ @retval EFI_BUFFER_TOO_SMALL The buffer is too small to hold the data.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+TlsConfigurationGetData (\r
+ IN EFI_TLS_CONFIGURATION_PROTOCOL *This,\r
+ IN EFI_TLS_CONFIG_DATA_TYPE DataType,\r
+ IN OUT VOID *Data, OPTIONAL\r
+ IN OUT UINTN *DataSize\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ TLS_INSTANCE *Instance;\r
+\r
+ EFI_TPL OldTpl;\r
+\r
+ Status = EFI_SUCCESS;\r
+\r
+ if (This == NULL || DataSize == NULL || (Data == NULL && *DataSize != 0)) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
+ OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
+\r
+ Instance = TLS_INSTANCE_FROM_CONFIGURATION (This);\r
+\r
+ switch (DataType) {\r
+ case EfiTlsConfigDataTypeCACertificate:\r
+ Status = TlsGetCaCertificate (Instance->TlsConn, Data, DataSize);\r
+ break;\r
+ case EfiTlsConfigDataTypeHostPublicCert:\r
+ Status = TlsGetHostPublicCert (Instance->TlsConn, Data, DataSize);\r
+ break;\r
+ case EfiTlsConfigDataTypeHostPrivateKey:\r
+ Status = TlsGetHostPrivateKey (Instance->TlsConn, Data, DataSize);\r
+ break;\r
+ case EfiTlsConfigDataTypeCertRevocationList:\r
+ Status = TlsGetCertRevocationList (Data, DataSize);\r
+ break;\r
+ default:\r
+ Status = EFI_UNSUPPORTED;\r
+ }\r
+\r
+ gBS->RestoreTPL (OldTpl);\r
+ return Status;\r
+}\r
+\r