x509-template.h revision fd2c68e83a763d8ed255093e80ccd2f5902d6d72
/* $Id$ */
/** @file
* IPRT - Crypto - X.509, Code Generator Template.
*/
/*
* Copyright (C) 2006-2014 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*
* The contents of this file may alternatively be used under the terms
* of the Common Development and Distribution License Version 1.0
* (CDDL) only, as it comes in the "COPYING.CDDL" file of the
* VirtualBox OSE distribution, in which case the provisions of the
* CDDL are applicable instead of those of the GPL.
*
* You may elect to license modified versions of this file under the
* terms and conditions of either the GPL or the CDDL or both.
*/
#define RTASN1TMPL_DECL RTDECL
/*
* X.509 Validity.
*/
#define RTASN1TMPL_TYPE RTCRX509VALIDITY
#define RTASN1TMPL_EXT_NAME RTCrX509Validity
#define RTASN1TMPL_INT_NAME rtCrX509Validity
RTASN1TMPL_EXEC_CHECK_SANITY( rc = rtCrX509Validity_CheckSanityExtra(pThis, fFlags, pErrInfo, pszErrorTag) )
/*
* One X.509 Algorithm Identifier.
*/
/*
* Set of X.509 Algorithm Identifiers.
*/
/*
* One X.509 AttributeTypeAndValue.
*/
/*
* Set of X.509 AttributeTypeAndValues / X.509 RelativeDistinguishedName.
*/
/*
* X.509 Name.
*/
#define RTASN1TMPL_TYPE RTCRX509NAME
#define RTASN1TMPL_EXT_NAME RTCrX509Name
#define RTASN1TMPL_INT_NAME rtCrX509Name
#define RTASN1TMPL_SET_SEQ_EXEC_CHECK_SANITY() rc = rtCrX509Name_CheckSanityExtra(pThis, fFlags, pErrInfo, pszErrorTag)
#define RTASN1TMPL_SET_SEQ_EXEC_CHECK_SANITY() do { } while (0)
/*
* One X.509 OtherName.
* Note! This is simplified and might not work correctly for all types with
* non-DER compatible encodings.
*/
#define RTASN1TMPL_TYPE RTCRX509OTHERNAME
#define RTASN1TMPL_EXT_NAME RTCrX509OtherName
#define RTASN1TMPL_INT_NAME rtCrX509OtherName
/*
* One X.509 GeneralName.
* Note! This is simplified and might not work correctly for all types with
* non-DER compatible encodings.
*/
#define RTASN1TMPL_TYPE RTCRX509GENERALNAME
RTASN1TMPL_PCHOICE_ITAG( 0, RTCRX509GENERALNAMECHOICE_OTHER_NAME, u.pT0_OtherName, OtherName, RTCRX509OTHERNAME, RTCrX509OtherName);
RTASN1TMPL_PCHOICE_ITAG_CP( 1, RTCRX509GENERALNAMECHOICE_RFC822_NAME, u.pT1_Rfc822, Rfc822, RTASN1STRING, RTAsn1Ia5String);
RTASN1TMPL_PCHOICE_ITAG_CP( 2, RTCRX509GENERALNAMECHOICE_DNS_NAME, u.pT2_DnsName, DnsType, RTASN1STRING, RTAsn1Ia5String);
RTASN1TMPL_PCHOICE_XTAG( 3, RTCRX509GENERALNAMECHOICE_X400_ADDRESS, u.pT3, CtxTag3, X400Address, RTASN1DYNTYPE, RTAsn1DynType); /** @todo */
RTASN1TMPL_PCHOICE_XTAG( 4, RTCRX509GENERALNAMECHOICE_DIRECTORY_NAME, u.pT4, CtxTag4, DirectoryName, RTCRX509NAME, RTCrX509Name);
RTASN1TMPL_PCHOICE_XTAG( 5, RTCRX509GENERALNAMECHOICE_EDI_PARTY_NAME, u.pT5, CtxTag5, EdiPartyName, RTASN1DYNTYPE, RTAsn1DynType); /** @todo */
RTASN1TMPL_PCHOICE_ITAG_CP( 6, RTCRX509GENERALNAMECHOICE_URI, u.pT6_Uri, Uri, RTASN1STRING, RTAsn1Ia5String);
RTASN1TMPL_PCHOICE_ITAG_CP( 7, RTCRX509GENERALNAMECHOICE_IP_ADDRESS, u.pT7_IpAddress, IpAddress, RTASN1OCTETSTRING, RTAsn1OctetString); /** @todo Constraints */
RTASN1TMPL_PCHOICE_ITAG_CP( 8, RTCRX509GENERALNAMECHOICE_REGISTERED_ID, u.pT8_RegisteredId,RegisteredId,RTASN1OBJID, RTAsn1ObjId);
/*
* Sequence of X.509 GeneralNames.
*/
#define RTASN1TMPL_TYPE RTCRX509GENERALNAMES
/*
* X.509 UniqueIdentifier - RTASN1BITSTRING alias.
*/
/*
* X.509 SubjectPublicKeyInfo.
*/
RTASN1TMPL_EXEC_CHECK_SANITY( rc = rtCrX509SubjectPublicKeyInfo_CheckSanityExtra(pThis, fFlags, pErrInfo, pszErrorTag) )
/*
* X.509 AuthorityKeyIdentifier (IPRT representation).
*/
/*
* X.509 OldAuthorityKeyIdentifier (IPRT representation).
*/
/*
* One X.509 PolicyQualifierInfo.
*/
/*
* Sequence of X.509 PolicyQualifierInfo.
*/
/*
* One X.509 PolicyInformation.
*/
RTASN1TMPL_MEMBER_OPT_ITAG_UC( PolicyQualifiers, RTCRX509POLICYQUALIFIERINFOS, RTCrX509PolicyQualifierInfos, ASN1_TAG_SEQUENCE);
/*
* Sequence of X.509 CertificatePolicies.
*/
/*
* One X.509 PolicyMapping (IPRT representation).
*/
#define RTASN1TMPL_TYPE RTCRX509POLICYMAPPING
/*
* Sequence of X.509 PolicyMappings (IPRT representation).
*/
/*
* X.509 BasicConstraints (IPRT representation).
*/
/*
* X.509 GeneralSubtree (IPRT representation).
*/
/*
* Sequence of X.509 GeneralSubtrees (IPRT representation).
*/
/*
* X.509 NameConstraints (IPRT representation).
*/
RTASN1TMPL_MEMBER_OPT_XTAG( T0, CtxTag0, PermittedSubtrees, RTCRX509GENERALSUBTREES, RTCrX509GeneralSubtrees, 0);
RTASN1TMPL_MEMBER_OPT_XTAG( T1, CtxTag1, ExcludedSubtrees, RTCRX509GENERALSUBTREES, RTCrX509GeneralSubtrees, 1);
/*
* X.509 PolicyConstraints (IPRT representation).
*/
/*
* One X.509 Extension.
*/
#define RTASN1TMPL_TYPE RTCRX509EXTENSION
#define RTASN1TMPL_EXT_NAME RTCrX509Extension
#define RTASN1TMPL_INT_NAME rtCrX509Extension
RTASN1TMPL_EXEC_DECODE(rc = RTCrX509Extension_ExtnValue_DecodeAsn1(pCursor, fFlags, pThis, "ExtnValue"))
/*
* Sequence of X.509 Extensions.
*/
#define RTASN1TMPL_TYPE RTCRX509EXTENSIONS
/*
* X.509 TbsCertificate.
*/
RTASN1TMPL_MEMBER( SubjectPublicKeyInfo, RTCRX509SUBJECTPUBLICKEYINFO, RTCrX509SubjectPublicKeyInfo);
RTASN1TMPL_MEMBER_OPT_XTAG( T1, CtxTag1, IssuerUniqueId, RTCRX509UNIQUEIDENTIFIER, RTCrX509UniqueIdentifier, 1);
RTASN1TMPL_MEMBER_OPT_XTAG( T2, CtxTag2, SubjectUniqueId, RTCRX509UNIQUEIDENTIFIER, RTCrX509UniqueIdentifier, 2);
RTASN1TMPL_EXEC_DECODE( rc = RTCrX509TbsCertificate_ReprocessExtensions(pThis, pCursor->pPrimary->pErrInfo) )
RTASN1TMPL_EXEC_CHECK_SANITY( rc = rtCrX509TbsCertificate_CheckSanityExtra(pThis, fFlags, pErrInfo, pszErrorTag) )
/*
* One X.509 Certificate.
*/
#define RTASN1TMPL_TYPE RTCRX509CERTIFICATE
RTASN1TMPL_EXEC_CHECK_SANITY( rc = rtCrX509Certificate_CheckSanityExtra(pThis, fFlags, pErrInfo, pszErrorTag) )
/*
* Set of X.509 Certificates.
*/
/** @todo Microsoft Hacks. ExtendedCertificates. */
#define RTASN1TMPL_TYPE RTCRX509CERTIFICATES