]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/Protocol/TlsConfig.h
MdePkg/ProcessorBind: add defines for page allocation granularity
[mirror_edk2.git] / MdePkg / Include / Protocol / TlsConfig.h
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__