2 Implementation of EFI TLS Configuration Protocol Interfaces.
4 Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
6 SPDX-License-Identifier: BSD-2-Clause-Patent
12 EFI_TLS_CONFIGURATION_PROTOCOL mTlsConfigurationProtocol
= {
13 TlsConfigurationSetData
,
14 TlsConfigurationGetData
18 Set TLS configuration data.
20 The SetData() function sets TLS configuration to non-volatile storage or volatile
23 @param[in] This Pointer to the EFI_TLS_CONFIGURATION_PROTOCOL instance.
24 @param[in] DataType Configuration data type.
25 @param[in] Data Pointer to configuration data.
26 @param[in] DataSize Total size of configuration data.
28 @retval EFI_SUCCESS The TLS configuration data is set successfully.
29 @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:
33 @retval EFI_UNSUPPORTED The DataType is unsupported.
34 @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated.
39 TlsConfigurationSetData (
40 IN EFI_TLS_CONFIGURATION_PROTOCOL
*This
,
41 IN EFI_TLS_CONFIG_DATA_TYPE DataType
,
47 TLS_INSTANCE
*Instance
;
52 if (This
== NULL
|| Data
== NULL
|| DataSize
== 0) {
53 return EFI_INVALID_PARAMETER
;
56 OldTpl
= gBS
->RaiseTPL (TPL_CALLBACK
);
58 Instance
= TLS_INSTANCE_FROM_CONFIGURATION (This
);
61 case EfiTlsConfigDataTypeCACertificate
:
62 Status
= TlsSetCaCertificate (Instance
->TlsConn
, Data
, DataSize
);
64 case EfiTlsConfigDataTypeHostPublicCert
:
65 Status
= TlsSetHostPublicCert (Instance
->TlsConn
, Data
, DataSize
);
67 case EfiTlsConfigDataTypeHostPrivateKey
:
68 Status
= TlsSetHostPrivateKey (Instance
->TlsConn
, Data
, DataSize
);
70 case EfiTlsConfigDataTypeCertRevocationList
:
71 Status
= TlsSetCertRevocationList (Data
, DataSize
);
74 Status
= EFI_UNSUPPORTED
;
77 gBS
->RestoreTPL (OldTpl
);
82 Get TLS configuration data.
84 The GetData() function gets TLS configuration.
86 @param[in] This Pointer to the EFI_TLS_CONFIGURATION_PROTOCOL instance.
87 @param[in] DataType Configuration data type.
88 @param[in, out] Data Pointer to configuration data.
89 @param[in, out] DataSize Total size of configuration data. On input, it means
90 the size of Data buffer. On output, it means the size
91 of copied Data buffer if EFI_SUCCESS, and means the
92 size of desired Data buffer if EFI_BUFFER_TOO_SMALL.
94 @retval EFI_SUCCESS The TLS configuration data is got successfully.
95 @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:
98 Data is NULL if *DataSize is not zero.
99 @retval EFI_UNSUPPORTED The DataType is unsupported.
100 @retval EFI_NOT_FOUND The TLS configuration data is not found.
101 @retval EFI_BUFFER_TOO_SMALL The buffer is too small to hold the data.
105 TlsConfigurationGetData (
106 IN EFI_TLS_CONFIGURATION_PROTOCOL
*This
,
107 IN EFI_TLS_CONFIG_DATA_TYPE DataType
,
108 IN OUT VOID
*Data
, OPTIONAL
109 IN OUT UINTN
*DataSize
113 TLS_INSTANCE
*Instance
;
117 Status
= EFI_SUCCESS
;
119 if (This
== NULL
|| DataSize
== NULL
|| (Data
== NULL
&& *DataSize
!= 0)) {
120 return EFI_INVALID_PARAMETER
;
123 OldTpl
= gBS
->RaiseTPL (TPL_CALLBACK
);
125 Instance
= TLS_INSTANCE_FROM_CONFIGURATION (This
);
128 case EfiTlsConfigDataTypeCACertificate
:
129 Status
= TlsGetCaCertificate (Instance
->TlsConn
, Data
, DataSize
);
131 case EfiTlsConfigDataTypeHostPublicCert
:
132 Status
= TlsGetHostPublicCert (Instance
->TlsConn
, Data
, DataSize
);
134 case EfiTlsConfigDataTypeHostPrivateKey
:
135 Status
= TlsGetHostPrivateKey (Instance
->TlsConn
, Data
, DataSize
);
137 case EfiTlsConfigDataTypeCertRevocationList
:
138 Status
= TlsGetCertRevocationList (Data
, DataSize
);
141 Status
= EFI_UNSUPPORTED
;
144 gBS
->RestoreTPL (OldTpl
);