]>
Commit | Line | Data |
---|---|---|
b38c8945 JW |
1 | /** @file |
2 | EFI TLS Configuration Protocol as defined in UEFI 2.5. | |
3 | The EFI TLS Configuration Protocol provides a way to set and get TLS configuration. | |
4 | ||
5 | Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> | |
6 | This program and the accompanying materials | |
7 | are licensed and made available under the terms and conditions of the BSD License | |
8 | which accompanies this distribution. The full text of the license may be found at | |
9 | http://opensource.org/licenses/bsd-license.php | |
10 | ||
11 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
12 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
13 | ||
14 | @par Revision Reference: | |
15 | This Protocol is introduced in UEFI Specification 2.5 | |
16 | ||
17 | **/ | |
18 | #ifndef __EFI_TLS_CONFIGURATION_PROTOCOL_H__ | |
19 | #define __EFI_TLS_CONFIGURATION_PROTOCOL_H__ | |
20 | ||
21 | /// | |
22 | /// The EFI Configuration protocol provides a way to set and get TLS configuration. | |
23 | /// | |
24 | #define EFI_TLS_CONFIGURATION_PROTOCOL_GUID \ | |
25 | { \ | |
26 | 0x1682fe44, 0xbd7a, 0x4407, { 0xb7, 0xc7, 0xdc, 0xa3, 0x7c, 0xa3, 0x92, 0x2d } \ | |
27 | } | |
28 | ||
29 | typedef struct _EFI_TLS_CONFIGURATION_PROTOCOL EFI_TLS_CONFIGURATION_PROTOCOL; | |
30 | ||
31 | /// | |
32 | /// EFI_TLS_CONFIG_DATA_TYPE | |
33 | /// | |
34 | typedef enum { | |
35 | /// | |
36 | /// Local host configuration data: public certificate data. | |
37 | /// This data should be DER-encoded binary X.509 certificate | |
38 | /// or PEM-encoded X.509 certificate. | |
39 | /// | |
40 | EfiTlsConfigDataTypeHostPublicCert, | |
41 | /// | |
42 | /// Local host configuration data: private key data. | |
43 | /// | |
44 | EfiTlsConfigDataTypeHostPrivateKey, | |
45 | /// | |
46 | /// CA certificate to verify peer. This data should be PEM-encoded | |
47 | /// RSA or PKCS#8 private key. | |
48 | /// | |
49 | EfiTlsConfigDataTypeCACertificate, | |
50 | /// | |
51 | /// CA-supplied Certificate Revocation List data. This data should | |
52 | /// be DER-encoded CRL data. | |
53 | /// | |
54 | EfiTlsConfigDataTypeCertRevocationList, | |
55 | ||
56 | EfiTlsConfigDataTypeMaximum | |
57 | ||
58 | } EFI_TLS_CONFIG_DATA_TYPE; | |
59 | ||
60 | /** | |
61 | Set TLS configuration data. | |
62 | ||
63 | The SetData() function sets TLS configuration to non-volatile storage or volatile | |
64 | storage. | |
65 | ||
66 | @param[in] This Pointer to the EFI_TLS_CONFIGURATION_PROTOCOL instance. | |
67 | @param[in] DataType Configuration data type. | |
68 | @param[in] Data Pointer to configuration data. | |
69 | @param[in] DataSize Total size of configuration data. | |
70 | ||
71 | @retval EFI_SUCCESS The TLS configuration data is set successfully. | |
72 | @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: | |
73 | This is NULL. | |
74 | Data is NULL. | |
75 | DataSize is 0. | |
76 | @retval EFI_UNSUPPORTED The DataType is unsupported. | |
77 | @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. | |
78 | ||
79 | **/ | |
80 | typedef | |
81 | EFI_STATUS | |
82 | (EFIAPI *EFI_TLS_CONFIGURATION_SET_DATA)( | |
83 | IN EFI_TLS_CONFIGURATION_PROTOCOL *This, | |
84 | IN EFI_TLS_CONFIG_DATA_TYPE DataType, | |
85 | IN VOID *Data, | |
86 | IN UINTN DataSize | |
87 | ); | |
88 | ||
89 | /** | |
90 | Get TLS configuration data. | |
91 | ||
92 | The GetData() function gets TLS configuration. | |
93 | ||
94 | @param[in] This Pointer to the EFI_TLS_CONFIGURATION_PROTOCOL instance. | |
95 | @param[in] DataType Configuration data type. | |
96 | @param[in, out] Data Pointer to configuration data. | |
97 | @param[in, out] DataSize Total size of configuration data. On input, it means | |
98 | the size of Data buffer. On output, it means the size | |
99 | of copied Data buffer if EFI_SUCCESS, and means the | |
100 | size of desired Data buffer if EFI_BUFFER_TOO_SMALL. | |
101 | ||
102 | @retval EFI_SUCCESS The TLS configuration data is got successfully. | |
103 | @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: | |
104 | This is NULL. | |
105 | DataSize is NULL. | |
106 | Data is NULL if *DataSize is not zero. | |
107 | @retval EFI_UNSUPPORTED The DataType is unsupported. | |
108 | @retval EFI_NOT_FOUND The TLS configuration data is not found. | |
109 | @retval EFI_BUFFER_TOO_SMALL The buffer is too small to hold the data. | |
110 | ||
111 | **/ | |
112 | typedef | |
113 | EFI_STATUS | |
114 | (EFIAPI *EFI_TLS_CONFIGURATION_GET_DATA)( | |
115 | IN EFI_TLS_CONFIGURATION_PROTOCOL *This, | |
116 | IN EFI_TLS_CONFIG_DATA_TYPE DataType, | |
117 | IN OUT VOID *Data, OPTIONAL | |
118 | IN OUT UINTN *DataSize | |
119 | ); | |
120 | ||
121 | /// | |
122 | /// The EFI_TLS_CONFIGURATION_PROTOCOL is designed to provide a way to set and get | |
123 | /// TLS configuration, such as Certificate, private key data. | |
124 | /// | |
125 | struct _EFI_TLS_CONFIGURATION_PROTOCOL { | |
126 | EFI_TLS_CONFIGURATION_SET_DATA SetData; | |
127 | EFI_TLS_CONFIGURATION_GET_DATA GetData; | |
128 | }; | |
129 | ||
130 | extern EFI_GUID gEfiTlsConfigurationProtocolGuid; | |
131 | ||
132 | #endif //__EFI_TLS_CONFIGURATION_PROTOCOL_H__ |