1/* 2 * Copyright (c) 2000-2001,2003-2004,2008,2010,2012,2014 Apple Inc. All Rights Reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24 25/* 26 * oidsattr.c - Cert/CRL related OIDs. 27 */ 28 29#include <Security/oidsbase.h> 30#include <Security/oidsattr.h> 31 32 33/* 34 * Directory name component identifiers. 35 */ 36static const uint8_t 37 OID_ObjectClass[] = { OID_ATTR_TYPE, 0 }, 38 OID_AliasedEntryName[] = { OID_ATTR_TYPE, 1 }, 39 OID_KnowledgeInformation[] = { OID_ATTR_TYPE, 2 }, 40 OID_CommonName[] = { OID_ATTR_TYPE, 3 }, 41 OID_Surname[] = { OID_ATTR_TYPE, 4 }, 42 OID_SerialNumber[] = { OID_ATTR_TYPE, 5 }, 43 OID_CountryName[] = { OID_ATTR_TYPE, 6 }, 44 OID_LocalityName[] = { OID_ATTR_TYPE, 7 }, 45 OID_StateProvinceName[] = { OID_ATTR_TYPE, 8 }, 46 OID_CollectiveStateProvinceName[] = { OID_ATTR_TYPE, 8, 1 }, 47 OID_StreetAddress[] = { OID_ATTR_TYPE, 9 }, 48 OID_CollectiveStreetAddress[] = { OID_ATTR_TYPE, 9, 1 }, 49 OID_OrganizationName[] = { OID_ATTR_TYPE, 10 }, 50 OID_CollectiveOrganizationName[] = { OID_ATTR_TYPE, 10, 1 }, 51 OID_OrganizationalUnitName[] = { OID_ATTR_TYPE, 11 }, 52 OID_CollectiveOrganizationalUnitName[] 53 = { OID_ATTR_TYPE, 11, 1 }, 54 OID_Title[] = { OID_ATTR_TYPE, 12 }, 55 OID_Description[] = { OID_ATTR_TYPE, 13 }, 56 OID_SearchGuide[] = { OID_ATTR_TYPE, 14 }, 57 OID_BusinessCategory[] = { OID_ATTR_TYPE, 15 }, 58 OID_PostalAddress[] = { OID_ATTR_TYPE, 16 }, 59 OID_CollectivePostalAddress[] = { OID_ATTR_TYPE, 16, 1 }, 60 OID_PostalCode[] = { OID_ATTR_TYPE, 17 }, 61 OID_CollectivePostalCode[] = { OID_ATTR_TYPE, 17, 1 }, 62 OID_PostOfficeBox[] = { OID_ATTR_TYPE, 18 }, 63 OID_CollectivePostOfficeBox[] = { OID_ATTR_TYPE, 18, 1 }, 64 OID_PhysicalDeliveryOfficeName[] = { OID_ATTR_TYPE, 19 }, 65 OID_CollectivePhysicalDeliveryOfficeName[] 66 = { OID_ATTR_TYPE, 19, 1 }, 67 OID_TelephoneNumber[] = { OID_ATTR_TYPE, 20 }, 68 OID_CollectiveTelephoneNumber[] = { OID_ATTR_TYPE, 20, 1 }, 69 OID_TelexNumber[] = { OID_ATTR_TYPE, 21 }, 70 OID_CollectiveTelexNumber[] = { OID_ATTR_TYPE, 21, 1 }, 71 OID_TelexTerminalIdentifier[] = { OID_ATTR_TYPE, 22 }, 72 OID_CollectiveTelexTerminalIdentifier[] 73 = { OID_ATTR_TYPE, 22, 1 }, 74 OID_FacsimileTelephoneNumber[] = { OID_ATTR_TYPE, 23 }, 75 OID_CollectiveFacsimileTelephoneNumber[] 76 = { OID_ATTR_TYPE, 23, 1 }, 77 OID_X_121Address[] = { OID_ATTR_TYPE, 24 }, 78 OID_InternationalISDNNumber[] = { OID_ATTR_TYPE, 25 }, 79 OID_CollectiveInternationalISDNNumber[] 80 = { OID_ATTR_TYPE, 25, 1 }, 81 OID_RegisteredAddress[] = { OID_ATTR_TYPE, 26 }, 82 OID_DestinationIndicator[] = { OID_ATTR_TYPE, 27 }, 83 OID_PreferredDeliveryMethod[] = { OID_ATTR_TYPE, 28 }, 84 OID_PresentationAddress[] = { OID_ATTR_TYPE, 29 }, 85 OID_SupportedApplicationContext[] = { OID_ATTR_TYPE, 30 }, 86 OID_Member[] = { OID_ATTR_TYPE, 31 }, 87 OID_Owner[] = { OID_ATTR_TYPE, 32 }, 88 OID_RoleOccupant[] = { OID_ATTR_TYPE, 33 }, 89 OID_SeeAlso[] = { OID_ATTR_TYPE, 34 }, 90 OID_UserPassword[] = { OID_ATTR_TYPE, 35 }, 91 OID_UserCertificate[] = { OID_ATTR_TYPE, 36 }, 92 OID_CACertificate[] = { OID_ATTR_TYPE, 37 }, 93 OID_AuthorityRevocationList[] = { OID_ATTR_TYPE, 38 }, 94 OID_CertificateRevocationList[] = { OID_ATTR_TYPE, 39 }, 95 OID_CrossCertificatePair[] = { OID_ATTR_TYPE, 40 }, 96 OID_Name[] = { OID_ATTR_TYPE, 41 }, 97 OID_GivenName[] = { OID_ATTR_TYPE, 42 }, 98 OID_Initials[] = { OID_ATTR_TYPE, 43 }, 99 OID_GenerationQualifier[] = { OID_ATTR_TYPE, 44 }, 100 OID_UniqueIdentifier[] = { OID_ATTR_TYPE, 45 }, 101 OID_DNQualifier[] = { OID_ATTR_TYPE, 46 }, 102 OID_EnhancedSearchGuide[] = { OID_ATTR_TYPE, 47 }, 103 OID_ProtocolInformation[] = { OID_ATTR_TYPE, 48 }, 104 OID_DistinguishedName[] = { OID_ATTR_TYPE, 49 }, 105 OID_UniqueMember[] = { OID_ATTR_TYPE, 50 }, 106 OID_HouseIdentifier[] = { OID_ATTR_TYPE, 51 } 107; 108 109const SecAsn1Oid 110CSSMOID_ObjectClass = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_ObjectClass}, 111CSSMOID_AliasedEntryName = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_AliasedEntryName}, 112CSSMOID_KnowledgeInformation = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_KnowledgeInformation}, 113CSSMOID_CommonName = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_CommonName}, 114CSSMOID_Surname = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_Surname}, 115CSSMOID_SerialNumber = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_SerialNumber}, 116CSSMOID_CountryName = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_CountryName}, 117CSSMOID_LocalityName = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_LocalityName}, 118CSSMOID_StateProvinceName = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_StateProvinceName}, 119CSSMOID_CollectiveStateProvinceName 120 = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveStateProvinceName}, 121CSSMOID_StreetAddress = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_StreetAddress}, 122CSSMOID_CollectiveStreetAddress = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveStreetAddress}, 123CSSMOID_OrganizationName = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_OrganizationName}, 124CSSMOID_CollectiveOrganizationName 125 = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveOrganizationName}, 126CSSMOID_OrganizationalUnitName = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_OrganizationalUnitName}, 127CSSMOID_CollectiveOrganizationalUnitName 128 = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveOrganizationalUnitName}, 129CSSMOID_Title = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_Title}, 130CSSMOID_Description = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_Description}, 131CSSMOID_SearchGuide = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_SearchGuide}, 132CSSMOID_BusinessCategory = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_BusinessCategory}, 133CSSMOID_PostalAddress = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_PostalAddress}, 134CSSMOID_CollectivePostalAddress = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectivePostalAddress}, 135CSSMOID_PostalCode = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_PostalCode}, 136CSSMOID_CollectivePostalCode = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectivePostalCode}, 137CSSMOID_PostOfficeBox = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_PostOfficeBox}, 138CSSMOID_CollectivePostOfficeBox = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectivePostOfficeBox}, 139CSSMOID_PhysicalDeliveryOfficeName 140 = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_PhysicalDeliveryOfficeName}, 141CSSMOID_CollectivePhysicalDeliveryOfficeName 142 = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectivePhysicalDeliveryOfficeName}, 143CSSMOID_TelephoneNumber = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_TelephoneNumber}, 144CSSMOID_CollectiveTelephoneNumber 145 = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveTelephoneNumber}, 146CSSMOID_TelexNumber = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_TelexNumber}, 147CSSMOID_CollectiveTelexNumber = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveTelexNumber}, 148CSSMOID_TelexTerminalIdentifier = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_TelexTerminalIdentifier}, 149CSSMOID_CollectiveTelexTerminalIdentifier 150 = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveTelexTerminalIdentifier}, 151CSSMOID_FacsimileTelephoneNumber= { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_FacsimileTelephoneNumber}, 152CSSMOID_CollectiveFacsimileTelephoneNumber 153 = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveFacsimileTelephoneNumber}, 154CSSMOID_X_121Address = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_X_121Address}, 155CSSMOID_InternationalISDNNumber = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_InternationalISDNNumber}, 156CSSMOID_CollectiveInternationalISDNNumber 157 = { OID_ATTR_TYPE_LENGTH+2, (uint8_t *)OID_CollectiveInternationalISDNNumber}, 158CSSMOID_RegisteredAddress = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_RegisteredAddress}, 159CSSMOID_DestinationIndicator = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_DestinationIndicator}, 160CSSMOID_PreferredDeliveryMethod = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_PreferredDeliveryMethod}, 161CSSMOID_PresentationAddress = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_PresentationAddress}, 162CSSMOID_SupportedApplicationContext 163 = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_SupportedApplicationContext}, 164CSSMOID_Member = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_Member}, 165CSSMOID_Owner = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_Owner}, 166CSSMOID_RoleOccupant = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_RoleOccupant}, 167CSSMOID_SeeAlso = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_SeeAlso}, 168CSSMOID_UserPassword = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_UserPassword}, 169CSSMOID_UserCertificate = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_UserCertificate}, 170CSSMOID_CACertificate = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_CACertificate}, 171CSSMOID_AuthorityRevocationList = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_AuthorityRevocationList}, 172CSSMOID_CertificateRevocationList 173 = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_CertificateRevocationList}, 174CSSMOID_CrossCertificatePair = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_CrossCertificatePair}, 175CSSMOID_Name = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_Name}, 176CSSMOID_GivenName = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_GivenName}, 177CSSMOID_Initials = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_Initials}, 178CSSMOID_GenerationQualifier = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_GenerationQualifier}, 179CSSMOID_UniqueIdentifier = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_UniqueIdentifier}, 180CSSMOID_DNQualifier = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_DNQualifier}, 181CSSMOID_EnhancedSearchGuide = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_EnhancedSearchGuide}, 182CSSMOID_ProtocolInformation = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_ProtocolInformation}, 183CSSMOID_DistinguishedName = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_DistinguishedName}, 184CSSMOID_UniqueMember = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_UniqueMember}, 185CSSMOID_HouseIdentifier = { OID_ATTR_TYPE_LENGTH+1, (uint8_t *)OID_HouseIdentifier} 186; 187 188 189/* From PKCS 9 */ 190static const uint8_t 191 OID_EmailAddress[] = { OID_PKCS_9, 1 }, 192 OID_UnstructuredName[] = { OID_PKCS_9, 2 }, 193 OID_ContentType[] = { OID_PKCS_9, 3 }, 194 OID_MessageDigest[] = { OID_PKCS_9, 4 }, 195 OID_SigningTime[] = { OID_PKCS_9, 5 }, 196 OID_CounterSignature[] = { OID_PKCS_9, 6 }, 197 OID_ChallengePassword[] = { OID_PKCS_9, 7 }, 198 OID_UnstructuredAddress[] = { OID_PKCS_9, 8 }, 199 OID_ExtendedCertificateAttributes[] = { OID_PKCS_9, 9 } 200; 201 202const SecAsn1Oid 203CSSMOID_EmailAddress = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_EmailAddress}, 204CSSMOID_UnstructuredName = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_UnstructuredName}, 205CSSMOID_ContentType = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_ContentType}, 206CSSMOID_MessageDigest = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_MessageDigest}, 207CSSMOID_SigningTime = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_SigningTime}, 208CSSMOID_CounterSignature = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_CounterSignature}, 209CSSMOID_ChallengePassword = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_ChallengePassword}, 210CSSMOID_UnstructuredAddress = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_UnstructuredAddress}, 211CSSMOID_ExtendedCertificateAttributes = {OID_PKCS_9_LENGTH+1, (uint8_t *)OID_ExtendedCertificateAttributes}; 212 213/* PKIX */ 214static const uint8_t 215 OID_QT_CPS[] = { OID_QT, 1 }, 216 OID_QT_UNOTICE[] = { OID_QT, 2 }, 217 _OID_AD_OCSP[] = { OID_AD_OCSP }, 218 OID_AD_CA_ISSUERS[] = { OID_AD, 2 }, 219 OID_AD_TIME_STAMPING[] = { OID_AD, 3 }, 220 OID_AD_CA_REPOSITORY[] = { OID_AD, 5 }, 221 OID_PDA_DATE_OF_BIRTH[] = { OID_PDA, 1 }, 222 OID_PDA_PLACE_OF_BIRTH[] = { OID_PDA, 2 }, 223 OID_PDA_GENDER[] = { OID_PDA, 3 }, 224 OID_PDA_COUNTRY_CITIZEN[] = { OID_PDA, 4 }, 225 OID_PDA_COUNTRY_RESIDENCE[] = { OID_PDA, 5 }, 226 OID_QCS_SYNTAX_V1[] = { OID_QCS, 1 }, 227 OID_QCS_SYNTAX_V2[] = { OID_QCS, 2 } 228; 229 230/* ETSI */ 231static const uint8_t 232 OID_ETSI_QCS_QC_COMPLICANCE[] = { OID_ETSI_QCS, 1 }, 233 OID_ETSI_QCS_QC_LIMIT_VALUE[] = { OID_ETSI_QCS, 2 }, 234 __unused OID_ETSI_QCS_QC_RETENTION[] = { OID_ETSI_QCS, 3 }, 235 __unused OID_ETSI_QCS_QC_SSCD[] = { OID_ETSI_QCS, 4 } 236; 237 238const SecAsn1Oid 239CSSMOID_QT_CPS = {OID_QT_LENGTH+1, (uint8_t *)OID_QT_CPS}, 240CSSMOID_QT_UNOTICE = {OID_QT_LENGTH+1, (uint8_t *)OID_QT_UNOTICE}, 241CSSMOID_AD_OCSP = {OID_AD_LENGTH+1, (uint8_t *)_OID_AD_OCSP}, 242CSSMOID_AD_CA_ISSUERS = {OID_AD_LENGTH+1, (uint8_t *)OID_AD_CA_ISSUERS}, 243CSSMOID_AD_TIME_STAMPING = {OID_AD_LENGTH+1, (uint8_t *)OID_AD_TIME_STAMPING}, 244CSSMOID_AD_CA_REPOSITORY = {OID_AD_LENGTH+1, (uint8_t *)OID_AD_CA_REPOSITORY}, 245CSSMOID_PDA_DATE_OF_BIRTH = {OID_PDA_LENGTH+1, (uint8_t *)OID_PDA_DATE_OF_BIRTH}, 246CSSMOID_PDA_PLACE_OF_BIRTH = {OID_PDA_LENGTH+1, (uint8_t *)OID_PDA_PLACE_OF_BIRTH}, 247CSSMOID_PDA_GENDER = {OID_PDA_LENGTH+1, (uint8_t *)OID_PDA_GENDER}, 248CSSMOID_PDA_COUNTRY_CITIZEN = {OID_PDA_LENGTH+1, (uint8_t *)OID_PDA_COUNTRY_CITIZEN}, 249CSSMOID_PDA_COUNTRY_RESIDENCE = {OID_PDA_LENGTH+1, (uint8_t *)OID_PDA_COUNTRY_RESIDENCE}, 250CSSMOID_OID_QCS_SYNTAX_V1 = {OID_QCS_LENGTH+1, (uint8_t *)OID_QCS_SYNTAX_V1}, 251CSSMOID_OID_QCS_SYNTAX_V2 = {OID_QCS_LENGTH+1, (uint8_t *)OID_QCS_SYNTAX_V2} 252; 253 254const SecAsn1Oid 255CSSMOID_ETSI_QCS_QC_COMPLIANCE = {OID_ETSI_QCS_LENGTH + 1, 256 (uint8_t *)OID_ETSI_QCS_QC_COMPLICANCE}, 257CSSMOID_ETSI_QCS_QC_LIMIT_VALUE = {OID_ETSI_QCS_LENGTH + 1, 258 (uint8_t *)OID_ETSI_QCS_QC_LIMIT_VALUE}, 259CSSMOID_ETSI_QCS_QC_RETENTION = {OID_ETSI_QCS_LENGTH + 1, 260 (uint8_t *)OID_ETSI_QCS_QC_COMPLICANCE}, 261CSSMOID_ETSI_QCS_QC_SSCD = {OID_ETSI_QCS_LENGTH + 1, 262 (uint8_t *)OID_ETSI_QCS_QC_COMPLICANCE} 263; 264 265#define OID_PKCS12_BagTypes OID_PKCS_12,10,1 266#define OID_PKCS12_BagTypesLength OID_PKCS_12_LENGTH+2 267 268#define ID_PKCS9_CertTypes OID_PKCS_9, 22 269#define OID_PKCS9_CertTypesLength OID_PKCS_9_LENGTH+1 270#define ID_PKCS9_CrlTypes OID_PKCS_9, 23 271#define OID_PKCS9_CrlTypesLength OID_PKCS_9_LENGTH+1 272 273static const uint8_t 274 OID_PKCS7_Data[] = { OID_PKCS_7, 1}, 275 OID_PKCS7_SignedData[] = { OID_PKCS_7, 2}, 276 OID_PKCS7_EnvelopedData[] = { OID_PKCS_7, 3}, 277 OID_PKCS7_SignedAndEnvelopedData[] = { OID_PKCS_7, 4}, 278 OID_PKCS7_DigestedData[] = { OID_PKCS_7, 5}, 279 OID_PKCS7_EncryptedData[] = { OID_PKCS_7, 6}, 280 OID_PKCS7_DataWithAttributes[] = { OID_PKCS_7, 7}, 281 OID_PKCS7_EncryptedPrivateKeyInfo[] = { OID_PKCS_7, 8}, 282 283 OID_PKCS9_FriendlyName[] = { OID_PKCS_9, 20}, 284 OID_PKCS9_LocalKeyId[] = { OID_PKCS_9, 21}, 285 OID_PKCS9_CertTypes[] = { ID_PKCS9_CertTypes }, 286 OID_PKCS9_CrlTypes[] = { ID_PKCS9_CrlTypes }, 287 OID_PKCS9_X509Certificate[] = { ID_PKCS9_CertTypes, 1 }, 288 OID_PKCS9_SdsiCertificate[] = { ID_PKCS9_CertTypes, 2 }, 289 OID_PKCS9_X509Crl[] = { ID_PKCS9_CrlTypes, 1 }, 290 291 OID_PKCS12_keyBag[] = { OID_PKCS12_BagTypes, 1}, 292 OID_PKCS12_shroundedKeyBag[] = { OID_PKCS12_BagTypes, 2}, 293 OID_PKCS12_certBag[] = { OID_PKCS12_BagTypes, 3}, 294 OID_PKCS12_crlBag[] = { OID_PKCS12_BagTypes, 4}, 295 OID_PKCS12_secretBag[] = { OID_PKCS12_BagTypes, 5}, 296 OID_PKCS12_safeContentsBag[] = { OID_PKCS12_BagTypes, 6} 297; 298 299/* 300 -- ContentTypes 301 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1)} 302 303 -- Attributes 304 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) aa(2)} 305 306 -- eContentType for a time-stamp token 307 308 id-ct-TSTInfo OBJECT IDENTIFIER ::= { iso(1) member-body(2) 309 us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 4} 310 311 id-aa-timeStampToken OBJECT IDENTIFIER ::= { iso(1) member-body(2) 312 us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) aa(2) 14 } 313*/ 314 315#define ID_PKCS9_SMIME OID_PKCS_9, 16 316#define OID_PKCS9_SMIMELength OID_PKCS_9_LENGTH+1 317#define ID_PKCS9_CONTENT_TYPES ID_PKCS9_SMIME, 1 318#define OID_PKCS9_CT_Length OID_PKCS9_SMIMELength+1 319#define ID_PKCS9_ATTRIBUTES ID_PKCS9_SMIME, 2 320#define OID_PKCS9_Attrs_Length OID_PKCS9_SMIMELength+1 321 322static const uint8_t 323 OID_ID_CT_TSTInfo[] = { ID_PKCS9_CONTENT_TYPES, 4 }, 324 OID_TimeStampToken[] = { ID_PKCS9_ATTRIBUTES, 14 }; 325 326const SecAsn1Oid 327CSSMOID_PKCS9_Id_Ct_TSTInfo = {OID_PKCS9_CT_Length + 1, 328 (uint8_t *)OID_ID_CT_TSTInfo }, 329CSSMOID_PKCS9_TimeStampToken = {OID_PKCS9_Attrs_Length + 1, 330 (uint8_t *)OID_TimeStampToken }; 331 332 333const SecAsn1Oid 334CSSMOID_PKCS7_Data = {OID_PKCS_7_LENGTH + 1, 335 (uint8_t *)OID_PKCS7_Data }, 336CSSMOID_PKCS7_SignedData = {OID_PKCS_7_LENGTH + 1, 337 (uint8_t *)OID_PKCS7_SignedData }, 338CSSMOID_PKCS7_EnvelopedData = {OID_PKCS_7_LENGTH + 1, 339 (uint8_t *)OID_PKCS7_EnvelopedData }, 340CSSMOID_PKCS7_SignedAndEnvelopedData = {OID_PKCS_7_LENGTH + 1, 341 (uint8_t *)OID_PKCS7_SignedAndEnvelopedData }, 342CSSMOID_PKCS7_DigestedData = {OID_PKCS_7_LENGTH + 1, 343 (uint8_t *)OID_PKCS7_DigestedData }, 344CSSMOID_PKCS7_EncryptedData = {OID_PKCS_7_LENGTH + 1, 345 (uint8_t *)OID_PKCS7_EncryptedData }, 346CSSMOID_PKCS7_DataWithAttributes = {OID_PKCS_7_LENGTH + 1, 347 (uint8_t *)OID_PKCS7_DataWithAttributes }, 348CSSMOID_PKCS7_EncryptedPrivateKeyInfo = {OID_PKCS_7_LENGTH + 1, 349 (uint8_t *)OID_PKCS7_EncryptedPrivateKeyInfo }, 350 351CSSMOID_PKCS9_FriendlyName = {OID_PKCS_9_LENGTH + 1, 352 (uint8_t *)OID_PKCS9_FriendlyName }, 353CSSMOID_PKCS9_LocalKeyId = {OID_PKCS_9_LENGTH + 1, 354 (uint8_t *)OID_PKCS9_LocalKeyId }, 355CSSMOID_PKCS9_CertTypes = {OID_PKCS_9_LENGTH + 1, 356 (uint8_t *)OID_PKCS9_CertTypes }, 357CSSMOID_PKCS9_CrlTypes = {OID_PKCS_9_LENGTH + 1, 358 (uint8_t *)OID_PKCS9_CrlTypes }, 359CSSMOID_PKCS9_X509Certificate = {OID_PKCS9_CertTypesLength + 1, 360 (uint8_t *)OID_PKCS9_X509Certificate }, 361CSSMOID_PKCS9_SdsiCertificate = {OID_PKCS9_CertTypesLength + 1, 362 (uint8_t *)OID_PKCS9_SdsiCertificate }, 363CSSMOID_PKCS9_X509Crl = {OID_PKCS9_CrlTypesLength + 1, 364 (uint8_t *)OID_PKCS9_X509Crl }, 365 366 367CSSMOID_PKCS12_keyBag = {OID_PKCS12_BagTypesLength + 1, 368 (uint8_t *)OID_PKCS12_keyBag }, 369CSSMOID_PKCS12_shroudedKeyBag = {OID_PKCS12_BagTypesLength + 1, 370 (uint8_t *)OID_PKCS12_shroundedKeyBag }, 371CSSMOID_PKCS12_certBag = {OID_PKCS12_BagTypesLength + 1, 372 (uint8_t *)OID_PKCS12_certBag }, 373CSSMOID_PKCS12_crlBag = {OID_PKCS12_BagTypesLength + 1, 374 (uint8_t *)OID_PKCS12_crlBag }, 375CSSMOID_PKCS12_secretBag = {OID_PKCS12_BagTypesLength + 1, 376 (uint8_t *)OID_PKCS12_secretBag }, 377CSSMOID_PKCS12_safeContentsBag = {OID_PKCS12_BagTypesLength + 1, 378 (uint8_t *)OID_PKCS12_safeContentsBag } 379 380; 381 382/* Kerberos PKINIT CMS ContentInfo types */ 383 384static const uint8_t 385 OID_KERBv5_PKINIT_AUTH_DATA[] = { OID_KERBv5_PKINIT, 1 }, 386 OID_KERBv5_PKINIT_DH_KEY_DATA[] = { OID_KERBv5_PKINIT, 2 }, 387 OID_KERBv5_PKINIT_RKEY_DATA[] = { OID_KERBv5_PKINIT, 3 }; 388 389const SecAsn1Oid 390CSSMOID_KERBv5_PKINIT_AUTH_DATA = { OID_KERBv5_PKINIT_LEN + 1, 391 (uint8_t *)OID_KERBv5_PKINIT_AUTH_DATA }, 392CSSMOID_KERBv5_PKINIT_DH_KEY_DATA = { OID_KERBv5_PKINIT_LEN + 1, 393 (uint8_t *)OID_KERBv5_PKINIT_DH_KEY_DATA }, 394CSSMOID_KERBv5_PKINIT_RKEY_DATA = { OID_KERBv5_PKINIT_LEN + 1, 395 (uint8_t *)OID_KERBv5_PKINIT_RKEY_DATA }; 396 397/* 398 * Additional OIDS for LDAP support 399 */ 400 401static const uint8_t 402 OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_USERID_Data[] = {OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_USERID}; 403 404const SecAsn1Oid 405CSSMOID_UserID = {OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_USERID_LENGTH, (uint8_t *)OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_USERID_Data}; 406 407static const uint8_t 408 OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_DOMAINCOMPONENT_Data[] = {OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_DOMAINCOMPONENT}; 409 410const SecAsn1Oid 411CSSMOID_DomainComponent = {OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_DOMAINCOMPONENT_LENGTH, (uint8_t *)OID_ITU_RFCDATA_2342_UCL_DIRECTORYPILOT_ATTRIBUTES_DOMAINCOMPONENT_Data}; 412 413/* ANSI X9.62 and Certicom elliptic curve OIDs */ 414static const uint8_t 415 OID_X9_62[] = { OID_ANSI_X9_62 }, 416 OID_X9_62_FieldType[] = { OID_ANSI_X9_62_FIELD_TYPE }, 417 OID_X9_62_PubKeyType[] = { OID_ANSI_X9_62_PUBKEY_TYPE }, 418 OID_X9_62_EllCurve[] = { OID_ANSI_X9_62_ELL_CURVE }, 419 OID_X9_62_C_TwoCurve[] = { OID_ANSI_X9_62_C_TWO_CURVE }, 420 OID_X9_62_PrimeCurve[] = { OID_ANSI_X9_62_PRIME_CURVE }, 421 OID_X9_62_SigType[] = { OID_ANSI_X9_62_SIG_TYPE }, 422 423 /* these two defined in ANSI X9.62 but renamed in common usage */ 424 OID_secp192r1[] = { OID_ANSI_X9_62_PRIME_CURVE, 1 }, 425 OID_secp256r1[] = { OID_ANSI_X9_62_PRIME_CURVE, 7 }, 426 /* remainder defined in Certicom SEC 2 */ 427 OID_Certicom[] = { OID_CERTICOM }, 428 OID_CerticomEllCurve[] = { OID_CERTICOM_ELL_CURVE }, 429 /* curves over prime-order fields */ 430 OID_secp112r1[] = { OID_CERTICOM_ELL_CURVE, 6 }, 431 OID_secp112r2[] = { OID_CERTICOM_ELL_CURVE, 7 }, 432 OID_secp128r1[] = { OID_CERTICOM_ELL_CURVE, 28 }, 433 OID_secp128r2[] = { OID_CERTICOM_ELL_CURVE, 29 }, 434 OID_secp160k1[] = { OID_CERTICOM_ELL_CURVE, 9 }, 435 OID_secp160r1[] = { OID_CERTICOM_ELL_CURVE, 8 }, 436 OID_secp160r2[] = { OID_CERTICOM_ELL_CURVE, 30 }, 437 OID_secp192k1[] = { OID_CERTICOM_ELL_CURVE, 31 }, 438 OID_secp224k1[] = { OID_CERTICOM_ELL_CURVE, 32 }, 439 OID_secp224r1[] = { OID_CERTICOM_ELL_CURVE, 33 }, 440 OID_secp256k1[] = { OID_CERTICOM_ELL_CURVE, 10 }, 441 OID_secp384r1[] = { OID_CERTICOM_ELL_CURVE, 34 }, 442 OID_secp521r1[] = { OID_CERTICOM_ELL_CURVE, 35 }, 443 /* curves over characteristic 2 fields */ 444 OID_sect113r1[] = { OID_CERTICOM_ELL_CURVE, 4 }, 445 OID_sect113r2[] = { OID_CERTICOM_ELL_CURVE, 5 }, 446 OID_sect131r1[] = { OID_CERTICOM_ELL_CURVE, 22 }, 447 OID_sect131r2[] = { OID_CERTICOM_ELL_CURVE, 23 }, 448 OID_sect163k1[] = { OID_CERTICOM_ELL_CURVE, 1 }, 449 OID_sect163r1[] = { OID_CERTICOM_ELL_CURVE, 2 }, 450 OID_sect163r2[] = { OID_CERTICOM_ELL_CURVE, 15 }, 451 OID_sect193r1[] = { OID_CERTICOM_ELL_CURVE, 24 }, 452 OID_sect193r2[] = { OID_CERTICOM_ELL_CURVE, 25 }, 453 OID_sect233k1[] = { OID_CERTICOM_ELL_CURVE, 26 }, 454 OID_sect233r1[] = { OID_CERTICOM_ELL_CURVE, 27 }, 455 OID_sect239k1[] = { OID_CERTICOM_ELL_CURVE, 3 }, 456 OID_sect283k1[] = { OID_CERTICOM_ELL_CURVE, 16 }, 457 OID_sect283r1[] = { OID_CERTICOM_ELL_CURVE, 17 }, 458 OID_sect409k1[] = { OID_CERTICOM_ELL_CURVE, 36 }, 459 OID_sect409r1[] = { OID_CERTICOM_ELL_CURVE, 37 }, 460 OID_sect571k1[] = { OID_CERTICOM_ELL_CURVE, 38 }, 461 OID_sect571r1[] = { OID_CERTICOM_ELL_CURVE, 39 } 462; 463 464const SecAsn1Oid 465 CSSMOID_X9_62 = {OID_ANSI_X9_42_LEN, (uint8_t *)OID_X9_62 }, 466 CSSMOID_X9_62_FieldType = {OID_ANSI_X9_42_LEN+1, (uint8_t *)OID_X9_62_FieldType }, 467 CSSMOID_X9_62_PubKeyType = {OID_ANSI_X9_42_LEN+1, (uint8_t *)OID_X9_62_PubKeyType }, 468 CSSMOID_X9_62_EllCurve = {OID_ANSI_X9_42_LEN+1, (uint8_t *)OID_X9_62_EllCurve }, 469 CSSMOID_X9_62_C_TwoCurve = {OID_ANSI_X9_62_ELL_CURVE_LEN+1, (uint8_t *)OID_X9_62_C_TwoCurve }, 470 CSSMOID_X9_62_PrimeCurve = {OID_ANSI_X9_62_ELL_CURVE_LEN+1, (uint8_t *)OID_X9_62_PrimeCurve }, 471 CSSMOID_X9_62_SigType = {OID_ANSI_X9_42_LEN+1, (uint8_t *)OID_X9_62_SigType }, 472 CSSMOID_secp192r1 = {OID_ANSI_X9_62_ELL_CURVE_LEN+2, (uint8_t *)OID_secp192r1 }, 473 CSSMOID_secp256r1 = {OID_ANSI_X9_62_ELL_CURVE_LEN+2, (uint8_t *)OID_secp256r1 }, 474 CSSMOID_Certicom = {OID_CERTICOM_LEN, (uint8_t *)OID_Certicom }, 475 CSSMOID_CerticomEllCurve = {OID_CERTICOM_ELL_CURVE_LEN, (uint8_t *)OID_CerticomEllCurve }, 476 CSSMOID_secp112r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp112r1 }, 477 CSSMOID_secp112r2 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp112r2 }, 478 CSSMOID_secp128r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp128r1 }, 479 CSSMOID_secp128r2 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp128r2 }, 480 CSSMOID_secp160k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp160k1 }, 481 CSSMOID_secp160r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp160r1 }, 482 CSSMOID_secp160r2 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp160r2 }, 483 CSSMOID_secp192k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp192k1 }, 484 CSSMOID_secp224k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp224k1 }, 485 CSSMOID_secp224r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp224r1 }, 486 CSSMOID_secp256k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp256k1 }, 487 CSSMOID_secp384r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp384r1 }, 488 CSSMOID_secp521r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_secp521r1 }, 489 CSSMOID_sect113r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect113r1 }, 490 CSSMOID_sect113r2 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect113r2 }, 491 CSSMOID_sect131r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect131r1 }, 492 CSSMOID_sect131r2 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect131r2 }, 493 CSSMOID_sect163k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect163k1 }, 494 CSSMOID_sect163r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect163r1 }, 495 CSSMOID_sect163r2 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect163r2 }, 496 CSSMOID_sect193r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect193r1 }, 497 CSSMOID_sect193r2 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect193r2 }, 498 CSSMOID_sect233k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect233k1 }, 499 CSSMOID_sect233r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect233r1 }, 500 CSSMOID_sect239k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect239k1 }, 501 CSSMOID_sect283k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect283k1 }, 502 CSSMOID_sect283r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect283r1 }, 503 CSSMOID_sect409k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect409k1 }, 504 CSSMOID_sect409r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect409r1 }, 505 CSSMOID_sect571k1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect571k1 }, 506 CSSMOID_sect571r1 = {OID_CERTICOM_ELL_CURVE_LEN+1, (uint8_t *)OID_sect571r1 }; 507