]> git.proxmox.com Git - mirror_edk2.git/blob - CryptoPkg/Include/Pcd/PcdCryptoServiceFamilyEnable.h
CryptoPkg: Add BigNum API to DXE and protocol
[mirror_edk2.git] / CryptoPkg / Include / Pcd / PcdCryptoServiceFamilyEnable.h
1 /** @file
2 Defines the PCD_CRYPTO_SERVICE_FAMILY_ENABLE structure associated with
3 gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.
4
5 Copyright (c) 2019 - 2022, Intel Corporation. All rights reserved.<BR>
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8 **/
9
10 #ifndef __PCD_CRYPTO_SERVICE_FAMILY_ENABLE_H__
11 #define __PCD_CRYPTO_SERVICE_FAMILY_ENABLE_H__
12
13 ///
14 /// Define used to enable all the crypto services in a family
15 ///
16 #define PCD_CRYPTO_SERVICE_ENABLE_FAMILY 0xFFFFFFFF
17
18 ///
19 /// PCD_CRYPTO_SERVICE_FAMILY_ENABLE structure. Each field in this structure
20 /// is associated with a service in the EDK II Crypto Protocol/PPI. This allows
21 /// each individual service to be enabled/disabled in a DSC file. Services are
22 /// also grouped into families. Unions are used to support enabling or
23 /// disabling an entire family in a single DSC statement.
24 ///
25 typedef struct {
26 union {
27 struct {
28 UINT8 New : 1;
29 UINT8 Free : 1;
30 UINT8 SetKey : 1;
31 UINT8 Duplicate : 1;
32 UINT8 Update : 1;
33 UINT8 Final : 1;
34 } Services;
35 UINT32 Family;
36 } HmacMd5;
37 union {
38 struct {
39 UINT8 New : 1;
40 UINT8 Free : 1;
41 UINT8 SetKey : 1;
42 UINT8 Duplicate : 1;
43 UINT8 Update : 1;
44 UINT8 Final : 1;
45 } Services;
46 UINT32 Family;
47 } HmacSha1;
48 union {
49 struct {
50 UINT8 New : 1;
51 UINT8 Free : 1;
52 UINT8 SetKey : 1;
53 UINT8 Duplicate : 1;
54 UINT8 Update : 1;
55 UINT8 Final : 1;
56 UINT8 All : 1;
57 } Services;
58 UINT32 Family;
59 } HmacSha256;
60 union {
61 struct {
62 UINT8 New : 1;
63 UINT8 Free : 1;
64 UINT8 SetKey : 1;
65 UINT8 Duplicate : 1;
66 UINT8 Update : 1;
67 UINT8 Final : 1;
68 UINT8 All : 1;
69 } Services;
70 UINT32 Family;
71 } HmacSha384;
72 union {
73 struct {
74 UINT8 GetContextSize : 1;
75 UINT8 Init : 1;
76 UINT8 Duplicate : 1;
77 UINT8 Update : 1;
78 UINT8 Final : 1;
79 UINT8 HashAll : 1;
80 } Services;
81 UINT32 Family;
82 } Md4;
83 union {
84 struct {
85 UINT8 GetContextSize : 1;
86 UINT8 Init : 1;
87 UINT8 Duplicate : 1;
88 UINT8 Update : 1;
89 UINT8 Final : 1;
90 UINT8 HashAll : 1;
91 } Services;
92 UINT32 Family;
93 } Md5;
94 union {
95 struct {
96 UINT8 Pkcs1v2Encrypt : 1;
97 UINT8 Pkcs5HashPassword : 1;
98 UINT8 Pkcs7Verify : 1;
99 UINT8 VerifyEKUsInPkcs7Signature : 1;
100 UINT8 Pkcs7GetSigners : 1;
101 UINT8 Pkcs7FreeSigners : 1;
102 UINT8 Pkcs7Sign : 1;
103 UINT8 Pkcs7GetAttachedContent : 1;
104 UINT8 Pkcs7GetCertificatesList : 1;
105 UINT8 AuthenticodeVerify : 1;
106 UINT8 ImageTimestampVerify : 1;
107 } Services;
108 UINT32 Family;
109 } Pkcs;
110 union {
111 struct {
112 UINT8 New : 1;
113 UINT8 Free : 1;
114 UINT8 GenerateParameter : 1;
115 UINT8 SetParameter : 1;
116 UINT8 GenerateKey : 1;
117 UINT8 ComputeKey : 1;
118 } Services;
119 UINT32 Family;
120 } Dh;
121 union {
122 struct {
123 UINT8 Seed : 1;
124 UINT8 Bytes : 1;
125 } Services;
126 UINT32 Family;
127 } Random;
128 union {
129 struct {
130 UINT8 VerifyPkcs1 : 1;
131 UINT8 New : 1;
132 UINT8 Free : 1;
133 UINT8 SetKey : 1;
134 UINT8 GetKey : 1;
135 UINT8 GenerateKey : 1;
136 UINT8 CheckKey : 1;
137 UINT8 Pkcs1Sign : 1;
138 UINT8 Pkcs1Verify : 1;
139 UINT8 GetPrivateKeyFromPem : 1;
140 UINT8 GetPublicKeyFromX509 : 1;
141 } Services;
142 UINT32 Family;
143 } Rsa;
144 union {
145 struct {
146 UINT8 GetContextSize : 1;
147 UINT8 Init : 1;
148 UINT8 Duplicate : 1;
149 UINT8 Update : 1;
150 UINT8 Final : 1;
151 UINT8 HashAll : 1;
152 } Services;
153 UINT32 Family;
154 } Sha1;
155 union {
156 struct {
157 UINT8 GetContextSize : 1;
158 UINT8 Init : 1;
159 UINT8 Duplicate : 1;
160 UINT8 Update : 1;
161 UINT8 Final : 1;
162 UINT8 HashAll : 1;
163 } Services;
164 UINT32 Family;
165 } Sha256;
166 union {
167 struct {
168 UINT8 GetContextSize : 1;
169 UINT8 Init : 1;
170 UINT8 Duplicate : 1;
171 UINT8 Update : 1;
172 UINT8 Final : 1;
173 UINT8 HashAll : 1;
174 } Services;
175 UINT32 Family;
176 } Sha384;
177 union {
178 struct {
179 UINT8 GetContextSize : 1;
180 UINT8 Init : 1;
181 UINT8 Duplicate : 1;
182 UINT8 Update : 1;
183 UINT8 Final : 1;
184 UINT8 HashAll : 1;
185 } Services;
186 UINT32 Family;
187 } Sha512;
188 union {
189 struct {
190 UINT8 GetSubjectName : 1;
191 UINT8 GetCommonName : 1;
192 UINT8 GetOrganizationName : 1;
193 UINT8 VerifyCert : 1;
194 UINT8 ConstructCertificate : 1;
195 UINT8 ConstructCertificateStack : 1;
196 UINT8 ConstructCertificateStackV : 1;
197 UINT8 Free : 1;
198 UINT8 StackFree : 1;
199 UINT8 GetTBSCert : 1;
200 } Services;
201 UINT32 Family;
202 } X509;
203 union {
204 struct {
205 UINT8 GetContextSize : 1;
206 UINT8 Init : 1;
207 UINT8 EcbEncrypt : 1;
208 UINT8 EcbDecrypt : 1;
209 UINT8 CbcEncrypt : 1;
210 UINT8 CbcDecrypt : 1;
211 } Services;
212 UINT32 Family;
213 } Tdes;
214 union {
215 struct {
216 UINT8 GetContextSize : 1;
217 UINT8 Init : 1;
218 UINT8 EcbEncrypt : 1;
219 UINT8 EcbDecrypt : 1;
220 UINT8 CbcEncrypt : 1;
221 UINT8 CbcDecrypt : 1;
222 } Services;
223 UINT32 Family;
224 } Aes;
225 union {
226 struct {
227 UINT8 GetContextSize : 1;
228 UINT8 Init : 1;
229 UINT8 Encrypt : 1;
230 UINT8 Decrypt : 1;
231 UINT8 Reset : 1;
232 } Services;
233 UINT32 Family;
234 } Arc4;
235 union {
236 struct {
237 UINT8 GetContextSize : 1;
238 UINT8 Init : 1;
239 UINT8 Duplicate : 1;
240 UINT8 Update : 1;
241 UINT8 Final : 1;
242 UINT8 HashAll : 1;
243 } Services;
244 UINT32 Family;
245 } Sm3;
246 union {
247 struct {
248 UINT8 Sha256ExtractAndExpand : 1;
249 UINT8 Sha256Extract : 1;
250 UINT8 Sha256Expand : 1;
251 UINT8 Sha384ExtractAndExpand : 1;
252 UINT8 Sha384Extract : 1;
253 UINT8 Sha384Expand : 1;
254 } Services;
255 UINT32 Family;
256 } Hkdf;
257 union {
258 struct {
259 UINT8 Initialize : 1;
260 UINT8 CtxFree : 1;
261 UINT8 CtxNew : 1;
262 UINT8 Free : 1;
263 UINT8 New : 1;
264 UINT8 InHandshake : 1;
265 UINT8 DoHandshake : 1;
266 UINT8 HandleAlert : 1;
267 UINT8 CloseNotify : 1;
268 UINT8 CtrlTrafficOut : 1;
269 UINT8 CtrlTrafficIn : 1;
270 UINT8 Read : 1;
271 UINT8 Write : 1;
272 } Services;
273 UINT32 Family;
274 } Tls;
275 union {
276 struct {
277 UINT8 Version : 1;
278 UINT8 ConnectionEnd : 1;
279 UINT8 CipherList : 1;
280 UINT8 CompressionMethod : 1;
281 UINT8 Verify : 1;
282 UINT8 VerifyHost : 1;
283 UINT8 SessionId : 1;
284 UINT8 CaCertificate : 1;
285 UINT8 HostPublicCert : 1;
286 UINT8 HostPrivateKey : 1;
287 UINT8 CertRevocationList : 1;
288 } Services;
289 UINT32 Family;
290 } TlsSet;
291 union {
292 struct {
293 UINT8 Version : 1;
294 UINT8 ConnectionEnd : 1;
295 UINT8 CurrentCipher : 1;
296 UINT8 CurrentCompressionId : 1;
297 UINT8 Verify : 1;
298 UINT8 SessionId : 1;
299 UINT8 ClientRandom : 1;
300 UINT8 ServerRandom : 1;
301 UINT8 KeyMaterial : 1;
302 UINT8 CaCertificate : 1;
303 UINT8 HostPublicCert : 1;
304 UINT8 HostPrivateKey : 1;
305 UINT8 CertRevocationList : 1;
306 } Services;
307 UINT32 Family;
308 } TlsGet;
309 union {
310 struct {
311 UINT8 Sign : 1;
312 UINT8 Verify : 1;
313 } Services;
314 UINT32 Family;
315 } RsaPss;
316 union {
317 struct {
318 UINT8 HashAll : 1;
319 } Services;
320 UINT32 Family;
321 } ParallelHash;
322 union {
323 struct {
324 UINT8 Encrypt : 1;
325 UINT8 Decrypt : 1;
326 } Services;
327 UINT32 Family;
328 } AeadAesGcm;
329 union {
330 struct {
331 UINT8 Init : 1;
332 UINT8 FromBin : 1;
333 UINT8 ToBin : 1;
334 UINT8 Free : 1;
335 UINT8 Add : 1;
336 UINT8 Sub : 1;
337 UINT8 Mod : 1;
338 UINT8 ExpMod : 1;
339 UINT8 InverseMod : 1;
340 UINT8 Div : 1;
341 UINT8 MulMod : 1;
342 UINT8 Cmp : 1;
343 UINT8 Bits : 1;
344 UINT8 Bytes : 1;
345 UINT8 IsWord : 1;
346 UINT8 IsOdd : 1;
347 UINT8 Copy : 1;
348 UINT8 ValueOne : 1;
349 UINT8 RShift : 1;
350 UINT8 ConstTime : 1;
351 UINT8 SqrMod : 1;
352 UINT8 NewContext : 1;
353 UINT8 ContextFree : 1;
354 UINT8 SetUint : 1;
355 UINT8 AddMod : 1;
356 } Services;
357 UINT32 Family;
358 } Bn;
359 } PCD_CRYPTO_SERVICE_FAMILY_ENABLE;
360
361 #endif