]> git.saurik.com Git - apple/security.git/blobdiff - Security/libsecurity_asn1/lib/oidsattr.c
Security-57031.1.35.tar.gz
[apple/security.git] / Security / libsecurity_asn1 / lib / oidsattr.c
diff --git a/Security/libsecurity_asn1/lib/oidsattr.c b/Security/libsecurity_asn1/lib/oidsattr.c
new file mode 100644 (file)
index 0000000..be1625d
--- /dev/null
@@ -0,0 +1,506 @@
+/*
+ * Copyright (c) 2000-2001,2003-2004,2008,2010,2012,2014 Apple Inc. All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ * 
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+
+/*
+ * oidsattr.c - Cert/CRL related OIDs.
+ */
+
+#include <Security/oidsbase.h>
+#include <Security/oidsattr.h>
+
+
+/* 
+ * Directory name component identifiers.
+ */
+static const uint8_t
+       OID_ObjectClass[]                       = { OID_ATTR_TYPE, 0 },
+       OID_AliasedEntryName[]                  = { OID_ATTR_TYPE, 1 },
+       OID_KnowledgeInformation[]              = { OID_ATTR_TYPE, 2 },
+       OID_CommonName[]                        = { OID_ATTR_TYPE, 3 },
+       OID_Surname[]                                   = { OID_ATTR_TYPE, 4 },
+       OID_SerialNumber[]                              = { OID_ATTR_TYPE, 5 },
+       OID_CountryName[]                       = { OID_ATTR_TYPE, 6 },
+       OID_LocalityName[]                      = { OID_ATTR_TYPE, 7 },
+       OID_StateProvinceName[]                 = { OID_ATTR_TYPE, 8 },
+       OID_CollectiveStateProvinceName[]       = { OID_ATTR_TYPE, 8, 1 },
+       OID_StreetAddress[]                     = { OID_ATTR_TYPE, 9 },
+       OID_CollectiveStreetAddress[]           = { OID_ATTR_TYPE, 9, 1 },
+       OID_OrganizationName[]                  = { OID_ATTR_TYPE, 10 },
+       OID_CollectiveOrganizationName[]        = { OID_ATTR_TYPE, 10, 1 },
+       OID_OrganizationalUnitName[]            = { OID_ATTR_TYPE, 11 },
+       OID_CollectiveOrganizationalUnitName[]
+                                                                               = { OID_ATTR_TYPE, 11, 1 },
+       OID_Title[]                             = { OID_ATTR_TYPE, 12 },
+       OID_Description[]                       = { OID_ATTR_TYPE, 13 },
+       OID_SearchGuide[]                       = { OID_ATTR_TYPE, 14 },
+       OID_BusinessCategory[]                  = { OID_ATTR_TYPE, 15 },
+       OID_PostalAddress[]                     = { OID_ATTR_TYPE, 16 },
+       OID_CollectivePostalAddress[]           = { OID_ATTR_TYPE, 16, 1 },
+       OID_PostalCode[]                        = { OID_ATTR_TYPE, 17 },
+       OID_CollectivePostalCode[]              = { OID_ATTR_TYPE, 17, 1 },
+       OID_PostOfficeBox[]                     = { OID_ATTR_TYPE, 18 },
+       OID_CollectivePostOfficeBox[]           = { OID_ATTR_TYPE, 18, 1 },
+       OID_PhysicalDeliveryOfficeName[]        = { OID_ATTR_TYPE, 19 },
+       OID_CollectivePhysicalDeliveryOfficeName[]
+                                                                               = { OID_ATTR_TYPE, 19, 1 },
+       OID_TelephoneNumber[]                   = { OID_ATTR_TYPE, 20 },
+       OID_CollectiveTelephoneNumber[]         = { OID_ATTR_TYPE, 20, 1 },
+       OID_TelexNumber[]                       = { OID_ATTR_TYPE, 21 },
+       OID_CollectiveTelexNumber[]             = { OID_ATTR_TYPE, 21, 1 },
+       OID_TelexTerminalIdentifier[]           = { OID_ATTR_TYPE, 22 },
+       OID_CollectiveTelexTerminalIdentifier[] 
+                                                                               = { OID_ATTR_TYPE, 22, 1 },
+       OID_FacsimileTelephoneNumber[]          = { OID_ATTR_TYPE, 23 },
+       OID_CollectiveFacsimileTelephoneNumber[]
+                                                                               = { OID_ATTR_TYPE, 23, 1 },
+       OID_X_121Address[]                      = { OID_ATTR_TYPE, 24 },
+       OID_InternationalISDNNumber[]           = { OID_ATTR_TYPE, 25 },
+       OID_CollectiveInternationalISDNNumber[] 
+                                                                               = { OID_ATTR_TYPE, 25, 1 },
+       OID_RegisteredAddress[]                 = { OID_ATTR_TYPE, 26 },
+       OID_DestinationIndicator[]              = { OID_ATTR_TYPE, 27 },
+       OID_PreferredDeliveryMethod[]           = { OID_ATTR_TYPE, 28 },
+       OID_PresentationAddress[]               = { OID_ATTR_TYPE, 29 },
+       OID_SupportedApplicationContext[]       = { OID_ATTR_TYPE, 30 },
+       OID_Member[]                            = { OID_ATTR_TYPE, 31 },
+       OID_Owner[]                                     = { OID_ATTR_TYPE, 32 },
+       OID_RoleOccupant[]                      = { OID_ATTR_TYPE, 33 },
+       OID_SeeAlso[]                           = { OID_ATTR_TYPE, 34 },
+       OID_UserPassword[]                      = { OID_ATTR_TYPE, 35 },
+       OID_UserCertificate[]                   = { OID_ATTR_TYPE, 36 },
+       OID_CACertificate[]                     = { OID_ATTR_TYPE, 37 },
+       OID_AuthorityRevocationList[]           = { OID_ATTR_TYPE, 38 },
+       OID_CertificateRevocationList[]         = { OID_ATTR_TYPE, 39 },
+       OID_CrossCertificatePair[]              = { OID_ATTR_TYPE, 40 },
+       OID_Name[]                              = { OID_ATTR_TYPE, 41 },
+       OID_GivenName[]                         = { OID_ATTR_TYPE, 42 },
+       OID_Initials[]                          = { OID_ATTR_TYPE, 43 },
+       OID_GenerationQualifier[]               = { OID_ATTR_TYPE, 44 },
+       OID_UniqueIdentifier[]                          = { OID_ATTR_TYPE, 45 },
+       OID_DNQualifier[]                       = { OID_ATTR_TYPE, 46 },
+       OID_EnhancedSearchGuide[]               = { OID_ATTR_TYPE, 47 },
+       OID_ProtocolInformation[]               = { OID_ATTR_TYPE, 48 },
+       OID_DistinguishedName[]                 = { OID_ATTR_TYPE, 49 },
+       OID_UniqueMember[]                      = { OID_ATTR_TYPE, 50 },
+       OID_HouseIdentifier[]                   = { OID_ATTR_TYPE, 51 }
+;
+
+const SecAsn1Oid
+CSSMOID_ObjectClass                    = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_ObjectClass},
+CSSMOID_AliasedEntryName       = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_AliasedEntryName},
+CSSMOID_KnowledgeInformation   = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_KnowledgeInformation},
+CSSMOID_CommonName             = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_CommonName},
+CSSMOID_Surname                = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_Surname},
+CSSMOID_SerialNumber                   = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_SerialNumber},
+CSSMOID_CountryName            = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_CountryName},
+CSSMOID_LocalityName           = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_LocalityName},
+CSSMOID_StateProvinceName      = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_StateProvinceName},
+CSSMOID_CollectiveStateProvinceName
+                                                               = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveStateProvinceName},
+CSSMOID_StreetAddress          = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_StreetAddress},
+CSSMOID_CollectiveStreetAddress = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveStreetAddress},
+CSSMOID_OrganizationName       = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_OrganizationName},
+CSSMOID_CollectiveOrganizationName  
+                                                               = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveOrganizationName},
+CSSMOID_OrganizationalUnitName  = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_OrganizationalUnitName},
+CSSMOID_CollectiveOrganizationalUnitName
+                                                               = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveOrganizationalUnitName},
+CSSMOID_Title                          = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_Title},
+CSSMOID_Description                    = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_Description},
+CSSMOID_SearchGuide            = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_SearchGuide},
+CSSMOID_BusinessCategory       = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_BusinessCategory},
+CSSMOID_PostalAddress          = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_PostalAddress},
+CSSMOID_CollectivePostalAddress = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectivePostalAddress},
+CSSMOID_PostalCode             = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_PostalCode},
+CSSMOID_CollectivePostalCode   = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectivePostalCode},
+CSSMOID_PostOfficeBox          = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_PostOfficeBox},
+CSSMOID_CollectivePostOfficeBox = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectivePostOfficeBox},
+CSSMOID_PhysicalDeliveryOfficeName  
+                                                               = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_PhysicalDeliveryOfficeName},
+CSSMOID_CollectivePhysicalDeliveryOfficeName 
+                                                               = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectivePhysicalDeliveryOfficeName},
+CSSMOID_TelephoneNumber        = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_TelephoneNumber},
+CSSMOID_CollectiveTelephoneNumber   
+                                                               = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveTelephoneNumber},
+CSSMOID_TelexNumber            = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_TelexNumber},
+CSSMOID_CollectiveTelexNumber   = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveTelexNumber},
+CSSMOID_TelexTerminalIdentifier = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_TelexTerminalIdentifier},
+CSSMOID_CollectiveTelexTerminalIdentifier 
+                                                               = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveTelexTerminalIdentifier},
+CSSMOID_FacsimileTelephoneNumber= { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_FacsimileTelephoneNumber},
+CSSMOID_CollectiveFacsimileTelephoneNumber
+                                                               = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveFacsimileTelephoneNumber},
+CSSMOID_X_121Address           = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_X_121Address},
+CSSMOID_InternationalISDNNumber = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_InternationalISDNNumber},
+CSSMOID_CollectiveInternationalISDNNumber 
+                                                               = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveInternationalISDNNumber},
+CSSMOID_RegisteredAddress      = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_RegisteredAddress},
+CSSMOID_DestinationIndicator   = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_DestinationIndicator},
+CSSMOID_PreferredDeliveryMethod = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_PreferredDeliveryMethod},
+CSSMOID_PresentationAddress    = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_PresentationAddress},
+CSSMOID_SupportedApplicationContext 
+                                                               = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_SupportedApplicationContext},
+CSSMOID_Member                 = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_Member},
+CSSMOID_Owner                  = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_Owner},
+CSSMOID_RoleOccupant           = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_RoleOccupant},
+CSSMOID_SeeAlso                = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_SeeAlso},
+CSSMOID_UserPassword           = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_UserPassword},
+CSSMOID_UserCertificate        = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_UserCertificate},
+CSSMOID_CACertificate          = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_CACertificate},
+CSSMOID_AuthorityRevocationList = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_AuthorityRevocationList},
+CSSMOID_CertificateRevocationList
+                                                               = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_CertificateRevocationList},
+CSSMOID_CrossCertificatePair   = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_CrossCertificatePair},
+CSSMOID_Name                   = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_Name},
+CSSMOID_GivenName              = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_GivenName},
+CSSMOID_Initials               = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_Initials},
+CSSMOID_GenerationQualifier    = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_GenerationQualifier},
+CSSMOID_UniqueIdentifier       = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_UniqueIdentifier},
+CSSMOID_DNQualifier            = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_DNQualifier},
+CSSMOID_EnhancedSearchGuide    = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_EnhancedSearchGuide},
+CSSMOID_ProtocolInformation    = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_ProtocolInformation},
+CSSMOID_DistinguishedName      = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_DistinguishedName},
+CSSMOID_UniqueMember           = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_UniqueMember},
+CSSMOID_HouseIdentifier        = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_HouseIdentifier}
+;
+
+
+/* From PKCS 9 */
+static const uint8_t
+       OID_EmailAddress[]          = { OID_PKCS_9, 1 },
+       OID_UnstructuredName[]      = { OID_PKCS_9, 2 },
+       OID_ContentType[]           = { OID_PKCS_9, 3 },
+       OID_MessageDigest[]         = { OID_PKCS_9, 4 },
+       OID_SigningTime[]           = { OID_PKCS_9, 5 },
+       OID_CounterSignature[]      = { OID_PKCS_9, 6 },
+       OID_ChallengePassword[]     = { OID_PKCS_9, 7 },
+       OID_UnstructuredAddress[]   = { OID_PKCS_9, 8 },
+       OID_ExtendedCertificateAttributes[] = { OID_PKCS_9, 9 }
+;
+
+const SecAsn1Oid
+CSSMOID_EmailAddress        = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_EmailAddress},
+CSSMOID_UnstructuredName    = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_UnstructuredName},
+CSSMOID_ContentType         = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_ContentType},
+CSSMOID_MessageDigest       = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_MessageDigest},
+CSSMOID_SigningTime         = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_SigningTime},
+CSSMOID_CounterSignature    = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_CounterSignature},
+CSSMOID_ChallengePassword   = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_ChallengePassword},
+CSSMOID_UnstructuredAddress = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_UnstructuredAddress},
+CSSMOID_ExtendedCertificateAttributes = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_ExtendedCertificateAttributes};
+
+/* PKIX */
+static const uint8_t
+       OID_QT_CPS[]                    = { OID_QT, 1 },
+       OID_QT_UNOTICE[]                = { OID_QT, 2 },
+       _OID_AD_OCSP[]                  = { OID_AD_OCSP },
+       OID_AD_CA_ISSUERS[]             = { OID_AD, 2 },
+       OID_AD_TIME_STAMPING[]  = { OID_AD, 3 },
+       OID_AD_CA_REPOSITORY[]  = { OID_AD, 5 },
+       OID_PDA_DATE_OF_BIRTH[]         = { OID_PDA, 1 },
+       OID_PDA_PLACE_OF_BIRTH[]        = { OID_PDA, 2 },
+       OID_PDA_GENDER[]                        = { OID_PDA, 3 },
+       OID_PDA_COUNTRY_CITIZEN[]       = { OID_PDA, 4 },
+       OID_PDA_COUNTRY_RESIDENCE[]     = { OID_PDA, 5 },
+       OID_QCS_SYNTAX_V1[]                     = { OID_QCS, 1 },
+       OID_QCS_SYNTAX_V2[]                     = { OID_QCS, 2 }
+; 
+
+/* ETSI */
+static const uint8_t
+       OID_ETSI_QCS_QC_COMPLICANCE[]           = { OID_ETSI_QCS, 1 },
+       OID_ETSI_QCS_QC_LIMIT_VALUE[]           = { OID_ETSI_QCS, 2 },
+       __unused OID_ETSI_QCS_QC_RETENTION[]    = { OID_ETSI_QCS, 3 },
+    __unused OID_ETSI_QCS_QC_SSCD[]                    = { OID_ETSI_QCS, 4 }
+;
+
+const SecAsn1Oid
+CSSMOID_QT_CPS                         = {OID_QT_LENGTH+1, (uint8_t *)OID_QT_CPS},
+CSSMOID_QT_UNOTICE                     = {OID_QT_LENGTH+1, (uint8_t *)OID_QT_UNOTICE},
+CSSMOID_AD_OCSP                                = {OID_AD_LENGTH+1, (uint8_t *)_OID_AD_OCSP},
+CSSMOID_AD_CA_ISSUERS          = {OID_AD_LENGTH+1, (uint8_t *)OID_AD_CA_ISSUERS},
+CSSMOID_AD_TIME_STAMPING       = {OID_AD_LENGTH+1, (uint8_t *)OID_AD_TIME_STAMPING},
+CSSMOID_AD_CA_REPOSITORY       = {OID_AD_LENGTH+1, (uint8_t *)OID_AD_CA_REPOSITORY},
+CSSMOID_PDA_DATE_OF_BIRTH      = {OID_PDA_LENGTH+1, (uint8_t *)OID_PDA_DATE_OF_BIRTH},
+CSSMOID_PDA_PLACE_OF_BIRTH     = {OID_PDA_LENGTH+1, (uint8_t *)OID_PDA_PLACE_OF_BIRTH},
+CSSMOID_PDA_GENDER                     = {OID_PDA_LENGTH+1, (uint8_t *)OID_PDA_GENDER},
+CSSMOID_PDA_COUNTRY_CITIZEN    = {OID_PDA_LENGTH+1, (uint8_t *)OID_PDA_COUNTRY_CITIZEN},
+CSSMOID_PDA_COUNTRY_RESIDENCE = {OID_PDA_LENGTH+1, (uint8_t *)OID_PDA_COUNTRY_RESIDENCE},
+CSSMOID_OID_QCS_SYNTAX_V1      = {OID_QCS_LENGTH+1, (uint8_t *)OID_QCS_SYNTAX_V1},
+CSSMOID_OID_QCS_SYNTAX_V2      = {OID_QCS_LENGTH+1, (uint8_t *)OID_QCS_SYNTAX_V2}
+;
+
+const SecAsn1Oid
+CSSMOID_ETSI_QCS_QC_COMPLIANCE         = {OID_ETSI_QCS_LENGTH + 1,
+                                                                 (uint8_t *)OID_ETSI_QCS_QC_COMPLICANCE},
+CSSMOID_ETSI_QCS_QC_LIMIT_VALUE = {OID_ETSI_QCS_LENGTH + 1,
+                                                                 (uint8_t *)OID_ETSI_QCS_QC_LIMIT_VALUE},
+CSSMOID_ETSI_QCS_QC_RETENTION  = {OID_ETSI_QCS_LENGTH + 1,
+                                                                 (uint8_t *)OID_ETSI_QCS_QC_COMPLICANCE},
+CSSMOID_ETSI_QCS_QC_SSCD               = {OID_ETSI_QCS_LENGTH + 1,
+                                                                 (uint8_t *)OID_ETSI_QCS_QC_COMPLICANCE}
+;
+
+#define OID_PKCS12_BagTypes                    OID_PKCS_12,10,1
+#define OID_PKCS12_BagTypesLength      OID_PKCS_12_LENGTH+2
+
+#define ID_PKCS9_CertTypes                     OID_PKCS_9, 22
+#define OID_PKCS9_CertTypesLength      OID_PKCS_9_LENGTH+1
+#define ID_PKCS9_CrlTypes                      OID_PKCS_9, 23
+#define OID_PKCS9_CrlTypesLength       OID_PKCS_9_LENGTH+1
+
+static const uint8_t
+       OID_PKCS7_Data[] =                                              { OID_PKCS_7, 1},       
+       OID_PKCS7_SignedData[] =                                { OID_PKCS_7, 2},       
+       OID_PKCS7_EnvelopedData[] =                     { OID_PKCS_7, 3},       
+       OID_PKCS7_SignedAndEnvelopedData[] =    { OID_PKCS_7, 4},
+       OID_PKCS7_DigestedData[] =                              { OID_PKCS_7, 5},
+       OID_PKCS7_EncryptedData[] =                     { OID_PKCS_7, 6},
+       OID_PKCS7_DataWithAttributes[] =                { OID_PKCS_7, 7},
+       OID_PKCS7_EncryptedPrivateKeyInfo[] =   { OID_PKCS_7, 8},
+       
+       OID_PKCS9_FriendlyName[] =                              { OID_PKCS_9, 20},
+       OID_PKCS9_LocalKeyId[] =                                { OID_PKCS_9, 21},
+       OID_PKCS9_CertTypes[] =                                 { ID_PKCS9_CertTypes },
+       OID_PKCS9_CrlTypes[] =                                  { ID_PKCS9_CrlTypes },
+       OID_PKCS9_X509Certificate[] =                   { ID_PKCS9_CertTypes, 1 },
+       OID_PKCS9_SdsiCertificate[] =                   { ID_PKCS9_CertTypes, 2 },
+       OID_PKCS9_X509Crl[] =                                   { ID_PKCS9_CrlTypes, 1 },
+       
+       OID_PKCS12_keyBag[] =                                   { OID_PKCS12_BagTypes, 1},
+       OID_PKCS12_shroundedKeyBag[] =                  { OID_PKCS12_BagTypes, 2},
+       OID_PKCS12_certBag[] =                                  { OID_PKCS12_BagTypes, 3},
+       OID_PKCS12_crlBag[] =                                   { OID_PKCS12_BagTypes, 4},
+       OID_PKCS12_secretBag[] =                                { OID_PKCS12_BagTypes, 5},
+       OID_PKCS12_safeContentsBag[] =                  { OID_PKCS12_BagTypes, 6}
+;
+
+/*
+    -- ContentTypes
+    {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1)}
+    
+    -- Attributes
+    {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) aa(2)}
+    
+    -- eContentType for a time-stamp token
+
+    id-ct-TSTInfo  OBJECT IDENTIFIER ::= { iso(1) member-body(2)
+    us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 4}
+
+    id-aa-timeStampToken OBJECT IDENTIFIER ::= { iso(1) member-body(2)
+    us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) aa(2) 14 }
+*/
+
+#define ID_PKCS9_SMIME          OID_PKCS_9, 16
+#define OID_PKCS9_SMIMELength   OID_PKCS_9_LENGTH+1
+#define ID_PKCS9_CONTENT_TYPES  ID_PKCS9_SMIME, 1
+#define OID_PKCS9_CT_Length     OID_PKCS9_SMIMELength+1
+#define ID_PKCS9_ATTRIBUTES     ID_PKCS9_SMIME, 2
+#define OID_PKCS9_Attrs_Length  OID_PKCS9_SMIMELength+1
+
+static const uint8_t
+       OID_ID_CT_TSTInfo[]       = { ID_PKCS9_CONTENT_TYPES, 4 },
+       OID_TimeStampToken[]      = { ID_PKCS9_ATTRIBUTES, 14 };
+    
+const SecAsn1Oid 
+CSSMOID_PKCS9_Id_Ct_TSTInfo = {OID_PKCS9_CT_Length + 1,
+                                         (uint8_t *)OID_ID_CT_TSTInfo },
+CSSMOID_PKCS9_TimeStampToken = {OID_PKCS9_Attrs_Length + 1,
+                                         (uint8_t *)OID_TimeStampToken };
+
+
+const SecAsn1Oid 
+CSSMOID_PKCS7_Data = {OID_PKCS_7_LENGTH + 1,
+                                         (uint8_t *)OID_PKCS7_Data },
+CSSMOID_PKCS7_SignedData = {OID_PKCS_7_LENGTH + 1,
+                                         (uint8_t *)OID_PKCS7_SignedData },
+CSSMOID_PKCS7_EnvelopedData = {OID_PKCS_7_LENGTH + 1,
+                                         (uint8_t *)OID_PKCS7_EnvelopedData },
+CSSMOID_PKCS7_SignedAndEnvelopedData = {OID_PKCS_7_LENGTH + 1,
+                                         (uint8_t *)OID_PKCS7_SignedAndEnvelopedData },
+CSSMOID_PKCS7_DigestedData = {OID_PKCS_7_LENGTH + 1,
+                                         (uint8_t *)OID_PKCS7_DigestedData },
+CSSMOID_PKCS7_EncryptedData = {OID_PKCS_7_LENGTH + 1,
+                                         (uint8_t *)OID_PKCS7_EncryptedData },
+CSSMOID_PKCS7_DataWithAttributes = {OID_PKCS_7_LENGTH + 1,
+                                         (uint8_t *)OID_PKCS7_DataWithAttributes },
+CSSMOID_PKCS7_EncryptedPrivateKeyInfo = {OID_PKCS_7_LENGTH + 1,
+                                         (uint8_t *)OID_PKCS7_EncryptedPrivateKeyInfo },
+                                         
+CSSMOID_PKCS9_FriendlyName = {OID_PKCS_9_LENGTH + 1,
+                                               (uint8_t *)OID_PKCS9_FriendlyName },
+CSSMOID_PKCS9_LocalKeyId = {OID_PKCS_9_LENGTH + 1,
+                                               (uint8_t *)OID_PKCS9_LocalKeyId },
+CSSMOID_PKCS9_CertTypes = {OID_PKCS_9_LENGTH + 1,
+                                               (uint8_t *)OID_PKCS9_CertTypes },
+CSSMOID_PKCS9_CrlTypes = {OID_PKCS_9_LENGTH + 1,
+                                               (uint8_t *)OID_PKCS9_CrlTypes },
+CSSMOID_PKCS9_X509Certificate = {OID_PKCS9_CertTypesLength + 1,
+                                               (uint8_t *)OID_PKCS9_X509Certificate },
+CSSMOID_PKCS9_SdsiCertificate = {OID_PKCS9_CertTypesLength + 1,
+                                               (uint8_t *)OID_PKCS9_SdsiCertificate },
+CSSMOID_PKCS9_X509Crl = {OID_PKCS9_CrlTypesLength + 1,
+                                               (uint8_t *)OID_PKCS9_X509Crl },
+       
+
+CSSMOID_PKCS12_keyBag = {OID_PKCS12_BagTypesLength + 1,
+                                       (uint8_t *)OID_PKCS12_keyBag },
+CSSMOID_PKCS12_shroudedKeyBag = {OID_PKCS12_BagTypesLength + 1,
+                                       (uint8_t *)OID_PKCS12_shroundedKeyBag },
+CSSMOID_PKCS12_certBag = {OID_PKCS12_BagTypesLength + 1,
+                                       (uint8_t *)OID_PKCS12_certBag },
+CSSMOID_PKCS12_crlBag = {OID_PKCS12_BagTypesLength + 1,
+                                       (uint8_t *)OID_PKCS12_crlBag },
+CSSMOID_PKCS12_secretBag = {OID_PKCS12_BagTypesLength + 1,
+                                       (uint8_t *)OID_PKCS12_secretBag },
+CSSMOID_PKCS12_safeContentsBag = {OID_PKCS12_BagTypesLength + 1,
+                                       (uint8_t *)OID_PKCS12_safeContentsBag }
+
+;
+
+/* Kerberos PKINIT CMS ContentInfo types */
+
+static const uint8_t
+       OID_KERBv5_PKINIT_AUTH_DATA[]           = { OID_KERBv5_PKINIT, 1 },
+       OID_KERBv5_PKINIT_DH_KEY_DATA[]         = { OID_KERBv5_PKINIT, 2 },
+       OID_KERBv5_PKINIT_RKEY_DATA[]           = { OID_KERBv5_PKINIT, 3 };
+
+const SecAsn1Oid 
+CSSMOID_KERBv5_PKINIT_AUTH_DATA                = { OID_KERBv5_PKINIT_LEN + 1,
+                                                                               (uint8_t *)OID_KERBv5_PKINIT_AUTH_DATA },
+CSSMOID_KERBv5_PKINIT_DH_KEY_DATA      = { OID_KERBv5_PKINIT_LEN + 1,
+                                                                               (uint8_t *)OID_KERBv5_PKINIT_DH_KEY_DATA },
+CSSMOID_KERBv5_PKINIT_RKEY_DATA                = { OID_KERBv5_PKINIT_LEN + 1,
+                                                                               (uint8_t *)OID_KERBv5_PKINIT_RKEY_DATA };
+
+/*
+ *     Additional OIDS for LDAP support
+ */
+
+static const uint8_t
+       OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_USERID_Data[] = {OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_USERID};
+       
+const SecAsn1Oid
+CSSMOID_UserID = {OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_USERID_LENGTH, (uint8_t *)OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_USERID_Data};
+
+static const uint8_t
+       OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_DOMAINCOMPONENT_Data[] = {OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_DOMAINCOMPONENT};
+
+const SecAsn1Oid
+CSSMOID_DomainComponent = {OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_DOMAINCOMPONENT_LENGTH, (uint8_t *)OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_DOMAINCOMPONENT_Data};
+                                                                               
+/* ANSI X9.62 and Certicom elliptic curve OIDs */
+static const uint8_t 
+       OID_X9_62[]                                     = { OID_ANSI_X9_62 },
+       OID_X9_62_FieldType[]           = { OID_ANSI_X9_62_FIELD_TYPE },
+       OID_X9_62_PubKeyType[]          = { OID_ANSI_X9_62_PUBKEY_TYPE },
+       OID_X9_62_EllCurve[]            = { OID_ANSI_X9_62_ELL_CURVE },
+       OID_X9_62_C_TwoCurve[]          = { OID_ANSI_X9_62_C_TWO_CURVE },
+       OID_X9_62_PrimeCurve[]          = { OID_ANSI_X9_62_PRIME_CURVE },
+       OID_X9_62_SigType[]                     = { OID_ANSI_X9_62_SIG_TYPE },
+       
+       /* these two defined in ANSI X9.62 but renamed in common usage */
+       OID_secp192r1[]                         = { OID_ANSI_X9_62_PRIME_CURVE, 1 },
+       OID_secp256r1[]                         = { OID_ANSI_X9_62_PRIME_CURVE, 7 },
+       /* remainder defined in Certicom SEC 2 */
+       OID_Certicom[]                          = { OID_CERTICOM },
+       OID_CerticomEllCurve[]          = { OID_CERTICOM_ELL_CURVE },
+       /* curves over prime-order fields */
+       OID_secp112r1[]                         = { OID_CERTICOM_ELL_CURVE, 6 },
+       OID_secp112r2[]                         = { OID_CERTICOM_ELL_CURVE, 7 },
+       OID_secp128r1[]                         = { OID_CERTICOM_ELL_CURVE, 28 },
+       OID_secp128r2[]                         = { OID_CERTICOM_ELL_CURVE, 29 },
+       OID_secp160k1[]                         = { OID_CERTICOM_ELL_CURVE, 9 },
+       OID_secp160r1[]                         = { OID_CERTICOM_ELL_CURVE, 8 },
+       OID_secp160r2[]                         = { OID_CERTICOM_ELL_CURVE, 30 },
+       OID_secp192k1[]                         = { OID_CERTICOM_ELL_CURVE, 31 },
+       OID_secp224k1[]                         = { OID_CERTICOM_ELL_CURVE, 32 },
+       OID_secp224r1[]                         = { OID_CERTICOM_ELL_CURVE, 33 },
+       OID_secp256k1[]                         = { OID_CERTICOM_ELL_CURVE, 10 },
+       OID_secp384r1[]                         = { OID_CERTICOM_ELL_CURVE, 34 },
+       OID_secp521r1[]                         = { OID_CERTICOM_ELL_CURVE, 35 },
+       /* curves over characteristic 2 fields */
+       OID_sect113r1[]                         = { OID_CERTICOM_ELL_CURVE, 4 },
+       OID_sect113r2[]                         = { OID_CERTICOM_ELL_CURVE, 5 },
+       OID_sect131r1[]                         = { OID_CERTICOM_ELL_CURVE, 22 },
+       OID_sect131r2[]                         = { OID_CERTICOM_ELL_CURVE, 23 },
+       OID_sect163k1[]                         = { OID_CERTICOM_ELL_CURVE, 1 },
+       OID_sect163r1[]                         = { OID_CERTICOM_ELL_CURVE, 2 },
+       OID_sect163r2[]                         = { OID_CERTICOM_ELL_CURVE, 15 },
+       OID_sect193r1[]                         = { OID_CERTICOM_ELL_CURVE, 24 },
+       OID_sect193r2[]                         = { OID_CERTICOM_ELL_CURVE, 25 },
+       OID_sect233k1[]                         = { OID_CERTICOM_ELL_CURVE, 26 },
+       OID_sect233r1[]                         = { OID_CERTICOM_ELL_CURVE, 27 },
+       OID_sect239k1[]                         = { OID_CERTICOM_ELL_CURVE, 3 },
+       OID_sect283k1[]                         = { OID_CERTICOM_ELL_CURVE, 16 },
+       OID_sect283r1[]                         = { OID_CERTICOM_ELL_CURVE, 17 },
+       OID_sect409k1[]                         = { OID_CERTICOM_ELL_CURVE, 36 },
+       OID_sect409r1[]                         = { OID_CERTICOM_ELL_CURVE, 37 },
+       OID_sect571k1[]                         = { OID_CERTICOM_ELL_CURVE, 38 },
+       OID_sect571r1[]                         = { OID_CERTICOM_ELL_CURVE, 39 }
+;
+
+const SecAsn1Oid 
+    CSSMOID_X9_62                      = {OID_ANSI_X9_42_LEN, (uint8_t *)OID_X9_62 },
+    CSSMOID_X9_62_FieldType = {OID_ANSI_X9_42_LEN+1, (uint8_t *)OID_X9_62_FieldType },
+    CSSMOID_X9_62_PubKeyType = {OID_ANSI_X9_42_LEN+1, (uint8_t *)OID_X9_62_PubKeyType },
+    CSSMOID_X9_62_EllCurve     = {OID_ANSI_X9_42_LEN+1, (uint8_t *)OID_X9_62_EllCurve },
+    CSSMOID_X9_62_C_TwoCurve = {OID_ANSI_X9_62_ELL_CURVE_LEN+1, (uint8_t *)OID_X9_62_C_TwoCurve },
+    CSSMOID_X9_62_PrimeCurve = {OID_ANSI_X9_62_ELL_CURVE_LEN+1, (uint8_t *)OID_X9_62_PrimeCurve },
+    CSSMOID_X9_62_SigType      = {OID_ANSI_X9_42_LEN+1, (uint8_t *)OID_X9_62_SigType },
+    CSSMOID_secp192r1  = {OID_ANSI_X9_62_ELL_CURVE_LEN+2, (uint8_t *)OID_secp192r1 },
+    CSSMOID_secp256r1  = {OID_ANSI_X9_62_ELL_CURVE_LEN+2, (uint8_t *)OID_secp256r1 },
+    CSSMOID_Certicom   = {OID_CERTICOM_LEN, (uint8_t *)OID_Certicom },
+    CSSMOID_CerticomEllCurve = {OID_CERTICOM_ELL_CURVE_LEN, (uint8_t *)OID_CerticomEllCurve },
+    CSSMOID_secp112r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp112r1 },
+    CSSMOID_secp112r2 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp112r2 },
+    CSSMOID_secp128r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp128r1 },
+    CSSMOID_secp128r2 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp128r2 },
+    CSSMOID_secp160k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp160k1 },
+    CSSMOID_secp160r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp160r1 },
+    CSSMOID_secp160r2 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp160r2 },
+    CSSMOID_secp192k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp192k1 },
+    CSSMOID_secp224k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp224k1 },
+    CSSMOID_secp224r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp224r1 },
+    CSSMOID_secp256k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp256k1 },
+    CSSMOID_secp384r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp384r1 },
+    CSSMOID_secp521r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp521r1 },
+    CSSMOID_sect113r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect113r1 },
+    CSSMOID_sect113r2 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect113r2 },
+    CSSMOID_sect131r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect131r1 },
+    CSSMOID_sect131r2 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect131r2 },
+    CSSMOID_sect163k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect163k1 },
+    CSSMOID_sect163r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect163r1 },
+    CSSMOID_sect163r2 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect163r2 },
+    CSSMOID_sect193r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect193r1 },
+    CSSMOID_sect193r2 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect193r2 },
+    CSSMOID_sect233k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect233k1 },
+    CSSMOID_sect233r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect233r1 },
+    CSSMOID_sect239k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect239k1 },
+    CSSMOID_sect283k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect283k1 },
+    CSSMOID_sect283r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect283r1 },
+    CSSMOID_sect409k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect409k1 },
+    CSSMOID_sect409r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect409r1 },
+    CSSMOID_sect571k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect571k1 },
+    CSSMOID_sect571r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect571r1 };