VirtualBox

source: vbox/trunk/src/libs/libtpms-0.10.0/src/tpm2/X509.h@ 108932

Last change on this file since 108932 was 108932, checked in by vboxsync, 12 days ago

libtpms-0.10.0: Applied and adjusted our libtpms changes to 0.9.6. jiraref:VBP-1320

File size: 6.5 KB
Line 
1/********************************************************************************/
2/* */
3/* Macro and Structure Definitions for the X509 Commands and Functions. */
4/* Written by Ken Goldman */
5/* IBM Thomas J. Watson Research Center */
6/* $Id: X509.h 1658 2021-01-22 23:14:01Z kgoldman $ */
7/* */
8/* Licenses and Notices */
9/* */
10/* 1. Copyright Licenses: */
11/* */
12/* - Trusted Computing Group (TCG) grants to the user of the source code in */
13/* this specification (the "Source Code") a worldwide, irrevocable, */
14/* nonexclusive, royalty free, copyright license to reproduce, create */
15/* derivative works, distribute, display and perform the Source Code and */
16/* derivative works thereof, and to grant others the rights granted herein. */
17/* */
18/* - The TCG grants to the user of the other parts of the specification */
19/* (other than the Source Code) the rights to reproduce, distribute, */
20/* display, and perform the specification solely for the purpose of */
21/* developing products based on such documents. */
22/* */
23/* 2. Source Code Distribution Conditions: */
24/* */
25/* - Redistributions of Source Code must retain the above copyright licenses, */
26/* this list of conditions and the following disclaimers. */
27/* */
28/* - Redistributions in binary form must reproduce the above copyright */
29/* licenses, this list of conditions and the following disclaimers in the */
30/* documentation and/or other materials provided with the distribution. */
31/* */
32/* 3. Disclaimers: */
33/* */
34/* - THE COPYRIGHT LICENSES SET FORTH ABOVE DO NOT REPRESENT ANY FORM OF */
35/* LICENSE OR WAIVER, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, WITH */
36/* RESPECT TO PATENT RIGHTS HELD BY TCG MEMBERS (OR OTHER THIRD PARTIES) */
37/* THAT MAY BE NECESSARY TO IMPLEMENT THIS SPECIFICATION OR OTHERWISE. */
38/* Contact TCG Administration ([email protected]) for */
39/* information on specification licensing rights available through TCG */
40/* membership agreements. */
41/* */
42/* - THIS SPECIFICATION IS PROVIDED "AS IS" WITH NO EXPRESS OR IMPLIED */
43/* WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY OR */
44/* FITNESS FOR A PARTICULAR PURPOSE, ACCURACY, COMPLETENESS, OR */
45/* NONINFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS, OR ANY WARRANTY */
46/* OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION OR SAMPLE. */
47/* */
48/* - Without limitation, TCG and its members and licensors disclaim all */
49/* liability, including liability for infringement of any proprietary */
50/* rights, relating to use of information in this specification and to the */
51/* implementation of this specification, and TCG disclaims all liability for */
52/* cost of procurement of substitute goods or services, lost profits, loss */
53/* of use, loss of data or any incidental, consequential, direct, indirect, */
54/* or special damages, whether under contract, tort, warranty or otherwise, */
55/* arising in any way out of use or reliance upon this specification or any */
56/* information herein. */
57/* */
58/* (c) Copyright IBM Corp. and others, 2019 - 2021 */
59/* */
60/********************************************************************************/
61
62// 10.1.16 X509.h
63// 10.1.16.1 Introduction
64// This file contains the macro and structure definitions for the X509 commands and functions.
65#ifndef _X509_H_
66#define _X509_H_
67// 10.1.16.2 Includes
68#include "Tpm.h"
69#include "TpmASN1.h"
70// 10.1.16.3 Defined Constants
71// 10.1.16.3.1 X509 Application-specific types
72#define X509_SELECTION 0xA0
73#define X509_ISSUER_UNIQUE_ID 0xA1
74#define X509_SUBJECT_UNIQUE_ID 0xA2
75#define X509_EXTENSIONS 0xA3
76// These defines give the order in which values appear in the TBScertificate of an x.509
77// certificate. These values are used to index into an array of
78#define ENCODED_SIZE_REF 0
79#define VERSION_REF (ENCODED_SIZE_REF + 1)
80#define SERIAL_NUMBER_REF (VERSION_REF + 1)
81#define SIGNATURE_REF (SERIAL_NUMBER_REF + 1)
82#define ISSUER_REF (SIGNATURE_REF + 1)
83#define VALIDITY_REF (ISSUER_REF + 1)
84#define SUBJECT_KEY_REF (VALIDITY_REF + 1)
85#define SUBJECT_PUBLIC_KEY_REF (SUBJECT_KEY_REF + 1)
86#define EXTENSIONS_REF (SUBJECT_PUBLIC_KEY_REF + 1)
87#define REF_COUNT (EXTENSIONS_REF + 1)
88
89// 10.1.16.4 Structures Used to access the fields of a TBSsignature some of which are in the
90// in_CertifyX509 structure and some of which are in the out_CertifyX509 structure.
91typedef struct stringRef
92{
93 BYTE *buf;
94 INT16 len;
95} stringRef;
96// This is defined to avoid bit by bit comparisons within a UINT32
97typedef union x509KeyUsageUnion {
98 TPMA_X509_KEY_USAGE x509;
99 UINT32 integer;
100} x509KeyUsageUnion;
101
102// 10.1.16.5 Global X509 Constants
103
104// These values are instanced by X509_spt.c and referenced by other X509-related files. This is the
105// DER-encoded value for the Key Usage OID (2.5.29.15). This is the full OID, not just the numeric
106// value
107
108#define OID_KEY_USAGE_EXTENSION_VALUE 0x06, 0x03, 0x55, 0x1D, 0x0F
109MAKE_OID(_KEY_USAGE_EXTENSION);
110
111// This is the DER-encoded value for the TCG-defined TPMA_OBJECT OID (2.23.133.10.1.1.1)
112
113#define OID_TCG_TPMA_OBJECT_VALUE 0x06, 0x07, 0x67, 0x81, 0x05, 0x0a, 0x01, \
114 0x01, 0x01
115MAKE_OID(_TCG_TPMA_OBJECT);
116
117#ifdef _X509_SPT_
118
119// If a bit is SET in KEY_USAGE_SIGN is also SET in keyUsage then the associated key has to have
120// sign SET.
121
122const x509KeyUsageUnion KEY_USAGE_SIGN =
123 {TPMA_X509_KEY_USAGE_INITIALIZER(
124 /* bits_at_0 */ 0, /* decipheronly */ 0, /* encipheronly */ 0,
125 /* crlsign */ 1, /* keycertsign */ 1, /* keyagreement */ 0,
126 /* dataencipherment */ 0, /* keyencipherment */ 0, /* nonrepudiation */ 0,
127 /* digitalsignature */ 1)};
128
129// If a bit is SET in KEY_USAGE_DECRYPT is also SET in keyUsage then the associated key has to have decrypt SET.
130
131const x509KeyUsageUnion KEY_USAGE_DECRYPT =
132 {TPMA_X509_KEY_USAGE_INITIALIZER(
133 /* bits_at_0 */ 0, /* decipheronly */ 1, /* encipheronly */ 1,
134 /* crlsign */ 0, /* keycertsign */ 0, /* keyagreement */ 1,
135 /* dataencipherment */ 1, /* keyencipherment */ 1, /* nonrepudiation */ 0,
136 /* digitalsignature */ 0)};
137#else
138extern x509KeyUsageUnion KEY_USAGE_SIGN;
139extern x509KeyUsageUnion KEY_USAGE_DECRYPT;
140#endif
141
142#endif // _X509_H_
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette