certExtensionTemplates.c [plain text]
#include "certExtensionTemplates.h"
#include "SecAsn1Templates.h"
#include <stddef.h>
const SecAsn1Template kSecAsn1BasicConstraintsTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSS_BasicConstraints) },
{ SEC_ASN1_BOOLEAN | SEC_ASN1_OPTIONAL,
offsetof(NSS_BasicConstraints,cA) },
{ SEC_ASN1_INTEGER | SEC_ASN1_OPTIONAL,
offsetof(NSS_BasicConstraints, pathLenConstraint) },
{ 0, }
};
const SecAsn1Template kSecAsn1SignedIntegerTemplate[] = {
{ SEC_ASN1_INTEGER | SEC_ASN1_SIGNED_INT, 0, NULL, sizeof(SecAsn1Item) }
};
const SecAsn1Template kSecAsn1AuthorityKeyIdTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSS_AuthorityKeyId) },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC |
SEC_ASN1_POINTER | 0,
offsetof(NSS_AuthorityKeyId,keyIdentifier),
kSecAsn1OctetStringTemplate },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONSTRUCTED |
SEC_ASN1_CONTEXT_SPECIFIC | 1,
offsetof(NSS_AuthorityKeyId,genNames),
kSecAsn1GeneralNamesTemplate },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC | 2,
offsetof(NSS_AuthorityKeyId,serialNumber),
kSecAsn1SignedIntegerTemplate},
{ 0 }
};
const SecAsn1Template kSecAsn1PolicyQualifierTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSS_PolicyQualifierInfo) },
{ SEC_ASN1_OBJECT_ID,
offsetof(NSS_PolicyQualifierInfo,policyQualifierId) },
{ SEC_ASN1_ANY, offsetof(NSS_PolicyQualifierInfo, qualifier) },
{ 0 }
};
const SecAsn1Template kSecAsn1PolicyInformationTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSS_PolicyInformation) },
{ SEC_ASN1_OBJECT_ID,
offsetof(NSS_PolicyInformation,certPolicyId) },
{ SEC_ASN1_SEQUENCE_OF | SEC_ASN1_OPTIONAL,
offsetof(NSS_PolicyInformation,policyQualifiers),
kSecAsn1PolicyQualifierTemplate },
{ 0 }
};
const SecAsn1Template kSecAsn1CertPoliciesTemplate[] = {
{ SEC_ASN1_SEQUENCE_OF,
offsetof(NSS_CertPolicies,policies),
kSecAsn1PolicyInformationTemplate },
{ 0 }
};
const SecAsn1Template kSecAsn1DistributionPointTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSS_DistributionPoint) },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC |
SEC_ASN1_CONSTRUCTED | SEC_ASN1_EXPLICIT | 0,
offsetof(NSS_DistributionPoint,distPointName),
kSecAsn1PointerToAnyTemplate },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC | 1,
offsetof(NSS_DistributionPoint,reasons), kSecAsn1BitStringTemplate},
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC |
SEC_ASN1_CONSTRUCTED | 2,
offsetof(NSS_DistributionPoint, crlIssuer),
kSecAsn1GeneralNamesTemplate
},
{ 0 }
};
const SecAsn1Template kSecAsn1CRLDistributionPointsTemplate[] = {
{ SEC_ASN1_SEQUENCE_OF,
offsetof(NSS_CRLDistributionPoints,distPoints),
kSecAsn1DistributionPointTemplate },
{ 0 }
};
const SecAsn1Template kSecAsn1DistPointFullNameTemplate[] = {
{SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_CONSTRUCTED | 0,
offsetof (NSS_GeneralNames,names), kSecAsn1GeneralNamesTemplate}
};
const SecAsn1Template kSecAsn1DistPointRDNTemplate[] = {
{SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_CONSTRUCTED | 1,
offsetof (NSS_RDN,atvs), kSecAsn1RDNTemplate}
};
static const SecAsn1Template kSecAsn1OptBooleanTemplate[] = {
{ SEC_ASN1_BOOLEAN | SEC_ASN1_OPTIONAL, 0, NULL, sizeof(SecAsn1Item) }
};
static const SecAsn1Template kSecAsn1OptBitStringTemplate[] = {
{ SEC_ASN1_BIT_STRING | SEC_ASN1_OPTIONAL, 0, NULL, sizeof(SecAsn1Item) }
};
const SecAsn1Template kSecAsn1IssuingDistributionPointTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSS_IssuingDistributionPoint) },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC |
SEC_ASN1_CONSTRUCTED | SEC_ASN1_EXPLICIT | 0,
offsetof(NSS_IssuingDistributionPoint,distPointName),
kSecAsn1PointerToAnyTemplate },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_POINTER | 1,
offsetof(NSS_IssuingDistributionPoint,onlyUserCerts),
kSecAsn1OptBooleanTemplate},
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_POINTER | 2,
offsetof(NSS_IssuingDistributionPoint,onlyCACerts),
kSecAsn1OptBooleanTemplate},
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_POINTER | 3,
offsetof(NSS_IssuingDistributionPoint,onlySomeReasons),
kSecAsn1OptBitStringTemplate},
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_POINTER | 4,
offsetof(NSS_IssuingDistributionPoint,indirectCRL),
kSecAsn1OptBooleanTemplate},
{ 0 }
};
const SecAsn1Template kSecAsn1AccessDescriptionTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSS_AccessDescription) },
{ SEC_ASN1_OBJECT_ID,
offsetof(NSS_AccessDescription,accessMethod) },
{ SEC_ASN1_ANY,
offsetof(NSS_AccessDescription, encodedAccessLocation) },
{ 0 }
};
const SecAsn1Template kSecAsn1AuthorityInfoAccessTemplate[] = {
{ SEC_ASN1_SEQUENCE_OF,
offsetof(NSS_AuthorityInfoAccess,accessDescriptions),
kSecAsn1AccessDescriptionTemplate,
sizeof(NSS_AuthorityInfoAccess) }
};
const SecAsn1Template kSecAsn1SemanticsInformationTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSS_SemanticsInformation) },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_POINTER,
offsetof(NSS_SemanticsInformation,semanticsIdentifier),
kSecAsn1ObjectIDTemplate },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_POINTER,
offsetof(NSS_SemanticsInformation, nameRegistrationAuthorities),
kSecAsn1GeneralNamesTemplate },
{ 0 }
};
const SecAsn1Template kSecAsn1QC_StatementTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSS_QC_Statement) },
{ SEC_ASN1_OBJECT_ID,
offsetof(NSS_QC_Statement,statementId) },
{ SEC_ASN1_ANY | SEC_ASN1_OPTIONAL,
offsetof(NSS_QC_Statement, info) },
{ 0 }
};
const SecAsn1Template kSecAsn1QC_StatementsTemplate[] = {
{ SEC_ASN1_SEQUENCE_OF,
offsetof(NSS_QC_Statements,qcStatements),
kSecAsn1QC_StatementTemplate,
sizeof(NSS_QC_Statements) }
};
const SecAsn1Template kSecAsn1GeneralSubtreeTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSS_GeneralSubtree) },
{ SEC_ASN1_SEQUENCE,
offsetof(NSS_GeneralSubtree,base),
kSecAsn1GeneralNamesTemplate },
{ SEC_ASN1_INTEGER,
offsetof(NSS_GeneralSubtree,minimum) },
{ SEC_ASN1_INTEGER | SEC_ASN1_OPTIONAL,
offsetof(NSS_GeneralSubtree,maximum) },
{ 0, }
};
const SecAsn1Template kSecAsn1GeneralSubtreesTemplate[] = {
{ SEC_ASN1_SEQUENCE_OF,
offsetof(NSS_GeneralSubtrees,subtrees),
kSecAsn1GeneralSubtreeTemplate },
{ 0 }
};
const SecAsn1Template kSecAsn1NameConstraintsTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSS_NameConstraints) },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC |
SEC_ASN1_CONSTRUCTED | SEC_ASN1_EXPLICIT | 0,
offsetof(NSS_NameConstraints,permittedSubtrees),
kSecAsn1GeneralSubtreesTemplate },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC |
SEC_ASN1_CONSTRUCTED | SEC_ASN1_EXPLICIT | 1,
offsetof(NSS_NameConstraints,excludedSubtrees),
kSecAsn1GeneralSubtreesTemplate },
{ 0 }
};
const SecAsn1Template kSecAsn1PolicyMappingTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSS_PolicyMapping) },
{ SEC_ASN1_OBJECT_ID,
offsetof(NSS_PolicyMapping,issuerDomainPolicy) },
{ SEC_ASN1_OBJECT_ID,
offsetof(NSS_PolicyMapping,subjectDomainPolicy) },
{ 0 }
};
const SecAsn1Template kSecAsn1PolicyMappingsTemplate[] = {
{ SEC_ASN1_SEQUENCE_OF,
offsetof(NSS_PolicyMappings,policyMappings),
kSecAsn1PolicyMappingTemplate },
{ 0 }
};
const SecAsn1Template kSecAsn1PolicyConstraintsTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSS_PolicyConstraints) },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC |
SEC_ASN1_CONSTRUCTED | SEC_ASN1_EXPLICIT | 0,
offsetof(NSS_PolicyConstraints,requireExplicitPolicy) },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC |
SEC_ASN1_CONSTRUCTED | SEC_ASN1_EXPLICIT | 1,
offsetof(NSS_PolicyConstraints,inhibitPolicyMapping) },
{ 0 }
};