VirtualBox

source: vbox/trunk/src/VBox/Runtime/common/crypto/x509-template.h

Last change on this file was 98103, checked in by vboxsync, 16 months ago

Copyright year updates by scm.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 19.2 KB
Line 
1/* $Id: x509-template.h 98103 2023-01-17 14:15:46Z vboxsync $ */
2/** @file
3 * IPRT - Crypto - X.509, Code Generator Template.
4 */
5
6/*
7 * Copyright (C) 2006-2023 Oracle and/or its affiliates.
8 *
9 * This file is part of VirtualBox base platform packages, as
10 * available from https://www.virtualbox.org.
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation, in version 3 of the
15 * License.
16 *
17 * This program is distributed in the hope that it will be useful, but
18 * WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, see <https://www.gnu.org/licenses>.
24 *
25 * The contents of this file may alternatively be used under the terms
26 * of the Common Development and Distribution License Version 1.0
27 * (CDDL), a copy of it is provided in the "COPYING.CDDL" file included
28 * in the VirtualBox distribution, in which case the provisions of the
29 * CDDL are applicable instead of those of the GPL.
30 *
31 * You may elect to license modified versions of this file under the
32 * terms and conditions of either the GPL or the CDDL or both.
33 *
34 * SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
35 */
36
37#define RTASN1TMPL_DECL RTDECL
38
39/*
40 * X.509 Validity.
41 */
42#define RTASN1TMPL_TYPE RTCRX509VALIDITY
43#define RTASN1TMPL_EXT_NAME RTCrX509Validity
44#define RTASN1TMPL_INT_NAME rtCrX509Validity
45RTASN1TMPL_BEGIN_SEQCORE();
46RTASN1TMPL_MEMBER( NotBefore, RTASN1TIME, RTAsn1Time);
47RTASN1TMPL_MEMBER( NotAfter, RTASN1TIME, RTAsn1Time);
48RTASN1TMPL_EXEC_CHECK_SANITY( rc = rtCrX509Validity_CheckSanityExtra(pThis, fFlags, pErrInfo, pszErrorTag) )
49RTASN1TMPL_END_SEQCORE();
50#undef RTASN1TMPL_TYPE
51#undef RTASN1TMPL_EXT_NAME
52#undef RTASN1TMPL_INT_NAME
53
54
55/*
56 * One X.509 Algorithm Identifier.
57 */
58#define RTASN1TMPL_TYPE RTCRX509ALGORITHMIDENTIFIER
59#define RTASN1TMPL_EXT_NAME RTCrX509AlgorithmIdentifier
60#define RTASN1TMPL_INT_NAME rtCrX509AlgorithmIdentifier
61RTASN1TMPL_BEGIN_SEQCORE();
62RTASN1TMPL_MEMBER( Algorithm, RTASN1OBJID, RTAsn1ObjId);
63RTASN1TMPL_MEMBER_OPT_ANY( Parameters, RTASN1DYNTYPE, RTAsn1DynType);
64RTASN1TMPL_END_SEQCORE();
65#undef RTASN1TMPL_TYPE
66#undef RTASN1TMPL_EXT_NAME
67#undef RTASN1TMPL_INT_NAME
68
69
70/*
71 * Set of X.509 Algorithm Identifiers.
72 */
73#define RTASN1TMPL_TYPE RTCRX509ALGORITHMIDENTIFIERS
74#define RTASN1TMPL_EXT_NAME RTCrX509AlgorithmIdentifiers
75#define RTASN1TMPL_INT_NAME rtCrX509AlgorithmIdentifiers
76RTASN1TMPL_SET_OF(RTCRX509ALGORITHMIDENTIFIER, RTCrX509AlgorithmIdentifier);
77#undef RTASN1TMPL_TYPE
78#undef RTASN1TMPL_EXT_NAME
79#undef RTASN1TMPL_INT_NAME
80
81
82/*
83 * One X.509 AttributeTypeAndValue.
84 */
85#define RTASN1TMPL_TYPE RTCRX509ATTRIBUTETYPEANDVALUE
86#define RTASN1TMPL_EXT_NAME RTCrX509AttributeTypeAndValue
87#define RTASN1TMPL_INT_NAME rtCrX509AttributeTypeAndValue
88RTASN1TMPL_BEGIN_SEQCORE();
89RTASN1TMPL_MEMBER( Type, RTASN1OBJID, RTAsn1ObjId);
90RTASN1TMPL_MEMBER( Value, RTASN1DYNTYPE, RTAsn1DynType);
91RTASN1TMPL_END_SEQCORE();
92#undef RTASN1TMPL_TYPE
93#undef RTASN1TMPL_EXT_NAME
94#undef RTASN1TMPL_INT_NAME
95
96
97/*
98 * Set of X.509 AttributeTypeAndValues / X.509 RelativeDistinguishedName.
99 */
100#define RTASN1TMPL_TYPE RTCRX509ATTRIBUTETYPEANDVALUES
101#define RTASN1TMPL_EXT_NAME RTCrX509AttributeTypeAndValues
102#define RTASN1TMPL_INT_NAME rtCrX509AttributeTypeAndValues
103RTASN1TMPL_SET_OF(RTCRX509ATTRIBUTETYPEANDVALUE, RTCrX509AttributeTypeAndValue);
104#undef RTASN1TMPL_TYPE
105#undef RTASN1TMPL_EXT_NAME
106#undef RTASN1TMPL_INT_NAME
107
108/*
109 * X.509 Name.
110 */
111#define RTASN1TMPL_TYPE RTCRX509NAME
112#define RTASN1TMPL_EXT_NAME RTCrX509Name
113#define RTASN1TMPL_INT_NAME rtCrX509Name
114#undef RTASN1TMPL_SET_SEQ_EXEC_CHECK_SANITY
115#define RTASN1TMPL_SET_SEQ_EXEC_CHECK_SANITY() rc = rtCrX509Name_CheckSanityExtra(pThis, fFlags, pErrInfo, pszErrorTag)
116RTASN1TMPL_SEQ_OF(RTCRX509RELATIVEDISTINGUISHEDNAME, RTCrX509RelativeDistinguishedName);
117#undef RTASN1TMPL_SET_SEQ_EXEC_CHECK_SANITY
118#define RTASN1TMPL_SET_SEQ_EXEC_CHECK_SANITY() do { } while (0)
119#undef RTASN1TMPL_TYPE
120#undef RTASN1TMPL_EXT_NAME
121#undef RTASN1TMPL_INT_NAME
122
123/*
124 * One X.509 OtherName.
125 * Note! This is simplified and might not work correctly for all types with
126 * non-DER compatible encodings.
127 */
128#define RTASN1TMPL_TYPE RTCRX509OTHERNAME
129#define RTASN1TMPL_EXT_NAME RTCrX509OtherName
130#define RTASN1TMPL_INT_NAME rtCrX509OtherName
131RTASN1TMPL_BEGIN_SEQCORE();
132RTASN1TMPL_MEMBER( TypeId, RTASN1OBJID, RTAsn1ObjId);
133RTASN1TMPL_MEMBER( Value, RTASN1DYNTYPE, RTAsn1DynType);
134RTASN1TMPL_END_SEQCORE();
135#undef RTASN1TMPL_TYPE
136#undef RTASN1TMPL_EXT_NAME
137#undef RTASN1TMPL_INT_NAME
138
139
140/*
141 * One X.509 GeneralName.
142 * Note! This is simplified and might not work correctly for all types with
143 * non-DER compatible encodings.
144 */
145#define RTASN1TMPL_TYPE RTCRX509GENERALNAME
146#define RTASN1TMPL_EXT_NAME RTCrX509GeneralName
147#define RTASN1TMPL_INT_NAME rtCrX509GeneralName
148RTASN1TMPL_BEGIN_PCHOICE();
149RTASN1TMPL_PCHOICE_ITAG( 0, RTCRX509GENERALNAMECHOICE_OTHER_NAME, u.pT0_OtherName, OtherName, RTCRX509OTHERNAME, RTCrX509OtherName);
150RTASN1TMPL_PCHOICE_ITAG_CP( 1, RTCRX509GENERALNAMECHOICE_RFC822_NAME, u.pT1_Rfc822, Rfc822, RTASN1STRING, RTAsn1Ia5String);
151RTASN1TMPL_PCHOICE_ITAG_CP( 2, RTCRX509GENERALNAMECHOICE_DNS_NAME, u.pT2_DnsName, DnsType, RTASN1STRING, RTAsn1Ia5String);
152RTASN1TMPL_PCHOICE_XTAG( 3, RTCRX509GENERALNAMECHOICE_X400_ADDRESS, u.pT3, CtxTag3, X400Address, RTASN1DYNTYPE, RTAsn1DynType); /** @todo */
153RTASN1TMPL_PCHOICE_XTAG( 4, RTCRX509GENERALNAMECHOICE_DIRECTORY_NAME, u.pT4, CtxTag4, DirectoryName, RTCRX509NAME, RTCrX509Name);
154RTASN1TMPL_PCHOICE_XTAG( 5, RTCRX509GENERALNAMECHOICE_EDI_PARTY_NAME, u.pT5, CtxTag5, EdiPartyName, RTASN1DYNTYPE, RTAsn1DynType); /** @todo */
155RTASN1TMPL_PCHOICE_ITAG_CP( 6, RTCRX509GENERALNAMECHOICE_URI, u.pT6_Uri, Uri, RTASN1STRING, RTAsn1Ia5String);
156RTASN1TMPL_PCHOICE_ITAG_CP( 7, RTCRX509GENERALNAMECHOICE_IP_ADDRESS, u.pT7_IpAddress, IpAddress, RTASN1OCTETSTRING, RTAsn1OctetString); /** @todo Constraints */
157RTASN1TMPL_PCHOICE_ITAG_CP( 8, RTCRX509GENERALNAMECHOICE_REGISTERED_ID, u.pT8_RegisteredId,RegisteredId,RTASN1OBJID, RTAsn1ObjId);
158RTASN1TMPL_END_PCHOICE();
159#undef RTASN1TMPL_TYPE
160#undef RTASN1TMPL_EXT_NAME
161#undef RTASN1TMPL_INT_NAME
162
163
164/*
165 * Sequence of X.509 GeneralNames.
166 */
167#define RTASN1TMPL_TYPE RTCRX509GENERALNAMES
168#define RTASN1TMPL_EXT_NAME RTCrX509GeneralNames
169#define RTASN1TMPL_INT_NAME rtCrX509GeneralNames
170RTASN1TMPL_SEQ_OF(RTCRX509GENERALNAME, RTCrX509GeneralName);
171#undef RTASN1TMPL_TYPE
172#undef RTASN1TMPL_EXT_NAME
173#undef RTASN1TMPL_INT_NAME
174
175
176/*
177 * X.509 UniqueIdentifier - RTASN1BITSTRING alias.
178 */
179
180
181/*
182 * X.509 SubjectPublicKeyInfo.
183 */
184#define RTASN1TMPL_TYPE RTCRX509SUBJECTPUBLICKEYINFO
185#define RTASN1TMPL_EXT_NAME RTCrX509SubjectPublicKeyInfo
186#define RTASN1TMPL_INT_NAME rtCrX509SubjectPublicKeyInfo
187RTASN1TMPL_BEGIN_SEQCORE();
188RTASN1TMPL_MEMBER( Algorithm, RTCRX509ALGORITHMIDENTIFIER, RTCrX509AlgorithmIdentifier);
189RTASN1TMPL_MEMBER( SubjectPublicKey, RTASN1BITSTRING, RTAsn1BitString);
190RTASN1TMPL_EXEC_CHECK_SANITY( rc = rtCrX509SubjectPublicKeyInfo_CheckSanityExtra(pThis, fFlags, pErrInfo, pszErrorTag) )
191RTASN1TMPL_END_SEQCORE();
192#undef RTASN1TMPL_TYPE
193#undef RTASN1TMPL_EXT_NAME
194#undef RTASN1TMPL_INT_NAME
195
196
197/*
198 * X.509 AuthorityKeyIdentifier (IPRT representation).
199 */
200#define RTASN1TMPL_TYPE RTCRX509AUTHORITYKEYIDENTIFIER
201#define RTASN1TMPL_EXT_NAME RTCrX509AuthorityKeyIdentifier
202#define RTASN1TMPL_INT_NAME rtCrX509AuthorityKeyIdentifier
203RTASN1TMPL_BEGIN_SEQCORE();
204RTASN1TMPL_MEMBER_OPT_ITAG_CP( KeyIdentifier, RTASN1OCTETSTRING, RTAsn1OctetString, 0);
205RTASN1TMPL_MEMBER_OPT_ITAG( AuthorityCertIssuer, RTCRX509GENERALNAMES, RTCrX509GeneralNames, 1);
206RTASN1TMPL_MEMBER_OPT_ITAG_CP( AuthorityCertSerialNumber, RTASN1INTEGER, RTAsn1Integer, 2);
207RTASN1TMPL_END_SEQCORE();
208#undef RTASN1TMPL_TYPE
209#undef RTASN1TMPL_EXT_NAME
210#undef RTASN1TMPL_INT_NAME
211
212
213/*
214 * X.509 OldAuthorityKeyIdentifier (IPRT representation).
215 */
216#define RTASN1TMPL_TYPE RTCRX509OLDAUTHORITYKEYIDENTIFIER
217#define RTASN1TMPL_EXT_NAME RTCrX509OldAuthorityKeyIdentifier
218#define RTASN1TMPL_INT_NAME rtCrX509OldAuthorityKeyIdentifier
219RTASN1TMPL_BEGIN_SEQCORE();
220RTASN1TMPL_MEMBER_OPT_ITAG_CP( KeyIdentifier, RTASN1OCTETSTRING, RTAsn1OctetString, 0);
221RTASN1TMPL_MEMBER_OPT_XTAG( T1, CtxTag1, AuthorityCertIssuer, RTCRX509NAME, RTCrX509Name, 1);
222RTASN1TMPL_MEMBER_OPT_ITAG_CP( AuthorityCertSerialNumber, RTASN1INTEGER, RTAsn1Integer, 2);
223RTASN1TMPL_END_SEQCORE();
224#undef RTASN1TMPL_TYPE
225#undef RTASN1TMPL_EXT_NAME
226#undef RTASN1TMPL_INT_NAME
227
228
229/*
230 * One X.509 PolicyQualifierInfo.
231 */
232#define RTASN1TMPL_TYPE RTCRX509POLICYQUALIFIERINFO
233#define RTASN1TMPL_EXT_NAME RTCrX509PolicyQualifierInfo
234#define RTASN1TMPL_INT_NAME rtCrX509PolicyQualifierInfo
235RTASN1TMPL_BEGIN_SEQCORE();
236RTASN1TMPL_MEMBER( PolicyQualifierId, RTASN1OBJID, RTAsn1ObjId);
237RTASN1TMPL_MEMBER( Qualifier, RTASN1DYNTYPE, RTAsn1DynType);
238RTASN1TMPL_END_SEQCORE();
239#undef RTASN1TMPL_TYPE
240#undef RTASN1TMPL_EXT_NAME
241#undef RTASN1TMPL_INT_NAME
242
243
244/*
245 * Sequence of X.509 PolicyQualifierInfo.
246 */
247#define RTASN1TMPL_TYPE RTCRX509POLICYQUALIFIERINFOS
248#define RTASN1TMPL_EXT_NAME RTCrX509PolicyQualifierInfos
249#define RTASN1TMPL_INT_NAME rtCrX509PolicyQualifierInfos
250RTASN1TMPL_SEQ_OF(RTCRX509POLICYQUALIFIERINFO, RTCrX509PolicyQualifierInfo);
251#undef RTASN1TMPL_TYPE
252#undef RTASN1TMPL_EXT_NAME
253#undef RTASN1TMPL_INT_NAME
254
255
256/*
257 * One X.509 PolicyInformation.
258 */
259#define RTASN1TMPL_TYPE RTCRX509POLICYINFORMATION
260#define RTASN1TMPL_EXT_NAME RTCrX509PolicyInformation
261#define RTASN1TMPL_INT_NAME rtCrX509PolicyInformation
262RTASN1TMPL_BEGIN_SEQCORE();
263RTASN1TMPL_MEMBER( PolicyIdentifier, RTASN1OBJID, RTAsn1ObjId);
264RTASN1TMPL_MEMBER_OPT_ITAG_UC( PolicyQualifiers, RTCRX509POLICYQUALIFIERINFOS, RTCrX509PolicyQualifierInfos, ASN1_TAG_SEQUENCE);
265RTASN1TMPL_END_SEQCORE();
266#undef RTASN1TMPL_TYPE
267#undef RTASN1TMPL_EXT_NAME
268#undef RTASN1TMPL_INT_NAME
269
270
271/*
272 * Sequence of X.509 CertificatePolicies.
273 */
274#define RTASN1TMPL_TYPE RTCRX509CERTIFICATEPOLICIES
275#define RTASN1TMPL_EXT_NAME RTCrX509CertificatePolicies
276#define RTASN1TMPL_INT_NAME rtCrX509CertificatePolicies
277RTASN1TMPL_SEQ_OF(RTCRX509POLICYINFORMATION, RTCrX509PolicyInformation);
278#undef RTASN1TMPL_TYPE
279#undef RTASN1TMPL_EXT_NAME
280#undef RTASN1TMPL_INT_NAME
281
282
283/*
284 * One X.509 PolicyMapping (IPRT representation).
285 */
286#define RTASN1TMPL_TYPE RTCRX509POLICYMAPPING
287#define RTASN1TMPL_EXT_NAME RTCrX509PolicyMapping
288#define RTASN1TMPL_INT_NAME rtCrX509PolicyMapping
289RTASN1TMPL_BEGIN_SEQCORE();
290RTASN1TMPL_MEMBER( IssuerDomainPolicy, RTASN1OBJID, RTAsn1ObjId);
291RTASN1TMPL_MEMBER( SubjectDomainPolicy, RTASN1OBJID, RTAsn1ObjId);
292RTASN1TMPL_END_SEQCORE();
293#undef RTASN1TMPL_TYPE
294#undef RTASN1TMPL_EXT_NAME
295#undef RTASN1TMPL_INT_NAME
296
297
298/*
299 * Sequence of X.509 PolicyMappings (IPRT representation).
300 */
301#define RTASN1TMPL_TYPE RTCRX509POLICYMAPPINGS
302#define RTASN1TMPL_EXT_NAME RTCrX509PolicyMappings
303#define RTASN1TMPL_INT_NAME rtCrX509PolicyMappings
304RTASN1TMPL_SEQ_OF(RTCRX509POLICYMAPPING, RTCrX509PolicyMapping);
305#undef RTASN1TMPL_TYPE
306#undef RTASN1TMPL_EXT_NAME
307#undef RTASN1TMPL_INT_NAME
308
309
310/*
311 * X.509 BasicConstraints (IPRT representation).
312 */
313#define RTASN1TMPL_TYPE RTCRX509BASICCONSTRAINTS
314#define RTASN1TMPL_EXT_NAME RTCrX509BasicConstraints
315#define RTASN1TMPL_INT_NAME rtCrX509BasicConstraints
316RTASN1TMPL_BEGIN_SEQCORE();
317RTASN1TMPL_MEMBER_DEF_ITAG_UP( CA, RTASN1BOOLEAN, RTAsn1Boolean, ASN1_TAG_BOOLEAN, false);
318RTASN1TMPL_MEMBER_OPT_ITAG_UP( PathLenConstraint, RTASN1INTEGER, RTAsn1Integer, ASN1_TAG_INTEGER);
319RTASN1TMPL_END_SEQCORE();
320#undef RTASN1TMPL_TYPE
321#undef RTASN1TMPL_EXT_NAME
322#undef RTASN1TMPL_INT_NAME
323
324
325/*
326 * X.509 GeneralSubtree (IPRT representation).
327 */
328#define RTASN1TMPL_TYPE RTCRX509GENERALSUBTREE
329#define RTASN1TMPL_EXT_NAME RTCrX509GeneralSubtree
330#define RTASN1TMPL_INT_NAME rtCrX509GeneralSubtree
331RTASN1TMPL_BEGIN_SEQCORE();
332RTASN1TMPL_MEMBER( Base, RTCRX509GENERALNAME, RTCrX509GeneralName);
333RTASN1TMPL_MEMBER_DEF_ITAG_UP( Minimum, RTASN1INTEGER, RTAsn1Integer, ASN1_TAG_INTEGER, 0);
334RTASN1TMPL_MEMBER_OPT_ITAG_UP( Maximum, RTASN1INTEGER, RTAsn1Integer, ASN1_TAG_INTEGER);
335RTASN1TMPL_END_SEQCORE();
336#undef RTASN1TMPL_TYPE
337#undef RTASN1TMPL_EXT_NAME
338#undef RTASN1TMPL_INT_NAME
339
340
341
342/*
343 * Sequence of X.509 GeneralSubtrees (IPRT representation).
344 */
345#define RTASN1TMPL_TYPE RTCRX509GENERALSUBTREES
346#define RTASN1TMPL_EXT_NAME RTCrX509GeneralSubtrees
347#define RTASN1TMPL_INT_NAME rtCrX509GeneralSubtrees
348RTASN1TMPL_SEQ_OF(RTCRX509GENERALSUBTREE, RTCrX509GeneralSubtree);
349#undef RTASN1TMPL_TYPE
350#undef RTASN1TMPL_EXT_NAME
351#undef RTASN1TMPL_INT_NAME
352
353
354/*
355 * X.509 NameConstraints (IPRT representation).
356 */
357#define RTASN1TMPL_TYPE RTCRX509NAMECONSTRAINTS
358#define RTASN1TMPL_EXT_NAME RTCrX509NameConstraints
359#define RTASN1TMPL_INT_NAME rtCrX509NameConstraints
360RTASN1TMPL_BEGIN_SEQCORE();
361RTASN1TMPL_MEMBER_OPT_XTAG( T0, CtxTag0, PermittedSubtrees, RTCRX509GENERALSUBTREES, RTCrX509GeneralSubtrees, 0);
362RTASN1TMPL_MEMBER_OPT_XTAG( T1, CtxTag1, ExcludedSubtrees, RTCRX509GENERALSUBTREES, RTCrX509GeneralSubtrees, 1);
363RTASN1TMPL_END_SEQCORE();
364#undef RTASN1TMPL_TYPE
365#undef RTASN1TMPL_EXT_NAME
366#undef RTASN1TMPL_INT_NAME
367
368
369/*
370 * X.509 PolicyConstraints (IPRT representation).
371 */
372#define RTASN1TMPL_TYPE RTCRX509POLICYCONSTRAINTS
373#define RTASN1TMPL_EXT_NAME RTCrX509PolicyConstraints
374#define RTASN1TMPL_INT_NAME rtCrX509PolicyConstraints
375RTASN1TMPL_BEGIN_SEQCORE();
376RTASN1TMPL_MEMBER_OPT_ITAG_CP( RequireExplicitPolicy, RTASN1INTEGER, RTAsn1Integer, 0);
377RTASN1TMPL_MEMBER_OPT_ITAG_CP( InhibitPolicyMapping, RTASN1INTEGER, RTAsn1Integer, 1);
378RTASN1TMPL_END_SEQCORE();
379#undef RTASN1TMPL_TYPE
380#undef RTASN1TMPL_EXT_NAME
381#undef RTASN1TMPL_INT_NAME
382
383
384/*
385 * One X.509 Extension.
386 */
387#define RTASN1TMPL_TYPE RTCRX509EXTENSION
388#define RTASN1TMPL_EXT_NAME RTCrX509Extension
389#define RTASN1TMPL_INT_NAME rtCrX509Extension
390RTASN1TMPL_BEGIN_SEQCORE();
391RTASN1TMPL_MEMBER( ExtnId, RTASN1OBJID, RTAsn1ObjId);
392RTASN1TMPL_MEMBER_DEF_ITAG_UP( Critical, RTASN1BOOLEAN, RTAsn1Boolean, ASN1_TAG_BOOLEAN, false);
393RTASN1TMPL_MEMBER( ExtnValue, RTASN1OCTETSTRING, RTAsn1OctetString);
394RTASN1TMPL_EXEC_DECODE(rc = RTCrX509Extension_ExtnValue_DecodeAsn1(pCursor, fFlags, pThis, "ExtnValue"))
395RTASN1TMPL_EXEC_CLONE( rc = rtCrX509Extension_ExtnValue_Clone(pThis, pSrc))
396RTASN1TMPL_END_SEQCORE();
397#undef RTASN1TMPL_TYPE
398#undef RTASN1TMPL_EXT_NAME
399#undef RTASN1TMPL_INT_NAME
400
401
402/*
403 * Sequence of X.509 Extensions.
404 */
405#define RTASN1TMPL_TYPE RTCRX509EXTENSIONS
406#define RTASN1TMPL_EXT_NAME RTCrX509Extensions
407#define RTASN1TMPL_INT_NAME rtCrX509Extensions
408RTASN1TMPL_SEQ_OF(RTCRX509EXTENSION, RTCrX509Extension);
409#undef RTASN1TMPL_TYPE
410#undef RTASN1TMPL_EXT_NAME
411#undef RTASN1TMPL_INT_NAME
412
413
414/*
415 * X.509 TbsCertificate.
416 */
417#define RTASN1TMPL_TYPE RTCRX509TBSCERTIFICATE
418#define RTASN1TMPL_EXT_NAME RTCrX509TbsCertificate
419#define RTASN1TMPL_INT_NAME rtCrX509TbsCertificate
420RTASN1TMPL_BEGIN_SEQCORE();
421RTASN1TMPL_MEMBER_OPT_XTAG( T0, CtxTag0, Version, RTASN1INTEGER, RTAsn1Integer, 0);
422RTASN1TMPL_MEMBER( SerialNumber, RTASN1INTEGER, RTAsn1Integer);
423RTASN1TMPL_MEMBER( Signature, RTCRX509ALGORITHMIDENTIFIER, RTCrX509AlgorithmIdentifier);
424RTASN1TMPL_MEMBER( Issuer, RTCRX509NAME, RTCrX509Name);
425RTASN1TMPL_MEMBER( Validity, RTCRX509VALIDITY, RTCrX509Validity);
426RTASN1TMPL_MEMBER( Subject, RTCRX509NAME, RTCrX509Name);
427RTASN1TMPL_MEMBER( SubjectPublicKeyInfo, RTCRX509SUBJECTPUBLICKEYINFO, RTCrX509SubjectPublicKeyInfo);
428RTASN1TMPL_MEMBER_OPT_XTAG( T1, CtxTag1, IssuerUniqueId, RTCRX509UNIQUEIDENTIFIER, RTCrX509UniqueIdentifier, 1);
429RTASN1TMPL_MEMBER_OPT_XTAG( T2, CtxTag2, SubjectUniqueId, RTCRX509UNIQUEIDENTIFIER, RTCrX509UniqueIdentifier, 2);
430RTASN1TMPL_MEMBER_OPT_XTAG( T3, CtxTag3, Extensions, RTCRX509EXTENSIONS, RTCrX509Extensions, 3);
431RTASN1TMPL_EXEC_DECODE( rc = RTCrX509TbsCertificate_ReprocessExtensions(pThis, pCursor->pPrimary->pErrInfo) )
432RTASN1TMPL_EXEC_CLONE( rc = RTCrX509TbsCertificate_ReprocessExtensions(pThis, NULL) )
433RTASN1TMPL_EXEC_CHECK_SANITY( rc = rtCrX509TbsCertificate_CheckSanityExtra(pThis, fFlags, pErrInfo, pszErrorTag) )
434RTASN1TMPL_END_SEQCORE();
435#undef RTASN1TMPL_TYPE
436#undef RTASN1TMPL_EXT_NAME
437#undef RTASN1TMPL_INT_NAME
438
439
440/*
441 * One X.509 Certificate.
442 */
443#define RTASN1TMPL_TYPE RTCRX509CERTIFICATE
444#define RTASN1TMPL_EXT_NAME RTCrX509Certificate
445#define RTASN1TMPL_INT_NAME rtCrX509Certificate
446RTASN1TMPL_BEGIN_SEQCORE();
447RTASN1TMPL_MEMBER( TbsCertificate, RTCRX509TBSCERTIFICATE, RTCrX509TbsCertificate);
448RTASN1TMPL_MEMBER( SignatureAlgorithm, RTCRX509ALGORITHMIDENTIFIER, RTCrX509AlgorithmIdentifier);
449RTASN1TMPL_MEMBER( SignatureValue, RTASN1BITSTRING, RTAsn1BitString);
450RTASN1TMPL_EXEC_CHECK_SANITY( rc = rtCrX509Certificate_CheckSanityExtra(pThis, fFlags, pErrInfo, pszErrorTag) )
451RTASN1TMPL_END_SEQCORE();
452#undef RTASN1TMPL_TYPE
453#undef RTASN1TMPL_EXT_NAME
454#undef RTASN1TMPL_INT_NAME
455
456
457/*
458 * Set of X.509 Certificates.
459 */
460/** @todo Microsoft Hacks. ExtendedCertificates. */
461#define RTASN1TMPL_TYPE RTCRX509CERTIFICATES
462#define RTASN1TMPL_EXT_NAME RTCrX509Certificates
463#define RTASN1TMPL_INT_NAME rtCrX509Certificates
464RTASN1TMPL_SET_OF(RTCRX509CERTIFICATE, RTCrX509Certificate);
465#undef RTASN1TMPL_TYPE
466#undef RTASN1TMPL_EXT_NAME
467#undef RTASN1TMPL_INT_NAME
468
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use