1divert(-1) 2changecom(/*, */) 3/* 4 * Copyright (c) 2000-2002 Apple Inc. All Rights Reserved. 5 * 6 * The contents of this file constitute Original Code as defined in and are 7 * subject to the Apple Public Source License Version 1.2 (the 'License'). 8 * You may not use this file except in compliance with the License. Please obtain 9 * a copy of the License at http://www.apple.com/publicsource and read it before 10 * using this file. 11 * 12 * This Original Code and all software distributed under the License are 13 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS 14 * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT 15 * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 16 * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the 17 * specific language governing rights and limitations under the License. 18 */ 19 20define(`startClass', 21`define(`arrayIndex', 0)dnl 22define(`class', $1)dnl 23divert(0)dnl 24// $1 password attributes 25static const CSSM_DB_ATTRIBUTE_INFO $1Attributes[] = 26{ 27divert(1)dnl 28// $1 password indices 29static const CSSM_DB_INDEX_INFO $1Indices[] = 30{') 31 32define(`endClass', 33`divert(0)dnl 34}; 35 36divert(1)dnl 37` // Unique (primary) index' 38undivert(3) 39` // Secondary indices' 40undivert(4)dnl 41}; 42 43divert(-1)') 44 45define(`attributeBody', 46` { 47ifelse(index(`$1',`s'),-1, 48` CSSM_DB_ATTRIBUTE_NAME_AS_INTEGER, 49 {(char *)((uint64_t)$3<<32|$3)},', 50` CSSM_DB_ATTRIBUTE_NAME_AS_STRING, 51 {$4},') 52 CSSM_DB_ATTRIBUTE_FORMAT_$7 53 }') 54 55define(`simpleAttribute', 56`const CSSM_DB_ATTRIBUTE_INFO $2 = 57attributeBody($*); 58') 59 60define(`attribute', 61`ifelse(index(`$1',`U'),-1,`', 62`divert(3)dnl 63 { 64 CSSM_DB_INDEX_UNIQUE, 65 CSSM_DB_INDEX_ON_ATTRIBUTE, 66attributeBody($*) 67 }, 68')dnl 69ifelse(index(`$1',`I'),-1,`', 70`divert(4)dnl 71 { 72 CSSM_DB_INDEX_NONUNIQUE, 73 CSSM_DB_INDEX_ON_ATTRIBUTE, 74attributeBody($*) 75 }, 76')dnl 77divert(2)dnl 78dnl const CSSM_DB_ATTRIBUTE_INFO &`k'class()$2 = class()Attributes[arrayIndex()]; 79`#define k'class()$2 class()Attributes[arrayIndex()]; 80divert(0)dnl 81attributeBody($*),dnl 82define(`arrayIndex', incr(arrayIndex))dnl 83') 84 85define(`attrInfo', 86`{ 87 $1, 88 sizeof($2Attributes) / sizeof(CSSM_DB_ATTRIBUTE_INFO), 89 const_cast<CSSM_DB_ATTRIBUTE_INFO_PTR>($2Attributes) 90 }') 91 92define(`indexInfo', 93`{ 94 $1, 95 sizeof($2Indices) / sizeof(CSSM_DB_INDEX_INFO), 96 const_cast<CSSM_DB_INDEX_INFO_PTR>($2Indices) 97 }') 98 99define(`parseInfo', 100`{ 101 CSSM_DB_RECORDTYPE_APP_DEFINED_START, 102 { 103 {0,0,0,{0}}, 104 {0,0}, 105 0, 106 0 107 } 108 }') 109 110define(`startNewClass', 111`define(`indexIndex', 0)dnl 112define(`class', $1)dnl 113divert(2)dnl 114// $1 attributes 115const CSSM_DB_SCHEMA_ATTRIBUTE_INFO $1SchemaAttributeList[] = 116{ 117divert(3)dnl 118// $1 indices 119const CSSM_DB_SCHEMA_INDEX_INFO $1SchemaIndexList[] = 120{') 121 122define(`endNewClass', 123`divert(2)dnl 124}; 125 126const uint32 class()SchemaAttributeCount = sizeof(class()SchemaAttributeList) / sizeof(CSSM_DB_SCHEMA_ATTRIBUTE_INFO); 127 128divert(3)dnl 129` // Unique (primary) index' 130undivert(5) 131` // Secondary indices' 132undivert(6)dnl 133}; 134 135const uint32 class()SchemaIndexCount = sizeof(class()SchemaIndexList) / sizeof(CSSM_DB_SCHEMA_INDEX_INFO); 136 137undivert(4)dnl 138divert(0)dnl 139undivert(2)dnl 140undivert(3)dnl') 141 142define(`newAttributeBody', 143`{ 144ifelse(index(`$1',`s'),-1, 145` CSSM_DB_ATTRIBUTE_NAME_AS_INTEGER, 146 {(char *)((uint64_t)$3<<32|$3)},', 147` CSSM_DB_ATTRIBUTE_NAME_AS_STRING, 148 {$4},') 149 CSSM_DB_ATTRIBUTE_FORMAT_$7 150}') 151 152define(`simpleNewAttribute', 153`const CSSM_DB_ATTRIBUTE_INFO `k'class()$2 = 154newAttributeBody($*); 155') 156 157define(`newAttribute', 158`divert(2)dnl 159 { $3, $4, { $5, $6 }, CSSM_DB_ATTRIBUTE_FORMAT_$7 }, 160divert(-1) 161ifelse(index(`$1',`S'),-1,`', 162`divert(4)dnl 163simpleNewAttribute($*) 164divert(-1)')dnl 165 166ifelse(index(`$1',`U'),-1,`', 167`divert(5)dnl 168 { $3, 0, CSSM_DB_INDEX_UNIQUE, CSSM_DB_INDEX_ON_ATTRIBUTE }, 169divert(-1)')dnl 170ifelse(index(`$1',`I'),-1,`', 171`define(`indexIndex', incr(indexIndex))dnl 172divert(6)dnl 173 { $3, indexIndex(), CSSM_DB_INDEX_NONUNIQUE, CSSM_DB_INDEX_ON_ATTRIBUTE }, 174divert(-1)')') 175 176/* Start of actual output */ 177divert(0)dnl 178/* 179 * Generated by m4 from Schema.m4 please do not edit this file. 180 */ 181 182`#include <security_cdsa_utilities/Schema.h>' 183 184`#include <Security/SecCertificate.h>' 185`#include <Security/SecTrustPriv.h>' 186`#include <Security/SecKeychainItemPriv.h>' 187`#include <Security/cssmapple.h>' 188`#include <security_utilities/errors.h>' 189 190`#pragma clang diagnostic push' 191`#pragma clang diagnostic ignored "-Wunused-const-variable"' 192 193namespace Security { 194 195namespace KeychainCore { 196 197namespace Schema { 198 199// Meta attributes 200simpleAttribute(` s', RelationID, 0, (char*) "RelationID", 0, NULL, UINT32) 201simpleAttribute(` s', RelationName, 1, (char*) "RelationName", 0, NULL, STRING) 202simpleAttribute(` s', AttributeID, 1, (char*) "AttributeID", 0, NULL, UINT32) 203simpleAttribute(` s', AttributeNameFormat, 2, (char*) "AttributeNameFormat", 0, NULL, UINT32) 204simpleAttribute(` s', AttributeName, 3, (char*) "AttributeName", 0, NULL, STRING) 205simpleAttribute(` s', AttributeNameID, 4, (char*) "AttributeNameID", 0, NULL, BLOB) 206simpleAttribute(` s', AttributeFormat, 5, (char*) "AttributeFormat", 0, NULL, UINT32) 207simpleAttribute(` s', IndexType, 3, (char*) "IndexType", 0, NULL, UINT32) 208 209divert(-1) 210startClass(Generic) 211attribute(` i', CreationDate, kSecCreationDateItemAttr, (char*) "CreationDate", 0, NULL, TIME_DATE) 212attribute(` i', ModDate, kSecModDateItemAttr, (char*) "ModDate", 0, NULL, TIME_DATE) 213attribute(` i', Description, kSecDescriptionItemAttr, (char*) "Description", 0, NULL, BLOB) 214attribute(` i', Comment, kSecCommentItemAttr, (char*) "Comment", 0, NULL, BLOB) 215attribute(` i', Creator, kSecCreatorItemAttr, (char*) "Creator", 0, NULL, UINT32) 216attribute(` i', Type, kSecTypeItemAttr, (char*) "Type", 0, NULL, UINT32) 217attribute(` i', ScriptCode, kSecScriptCodeItemAttr, (char*) "ScriptCode", 0, NULL, SINT32) 218attribute(` s', PrintName, kSecLabelItemAttr, (char*) "PrintName", 0, NULL, BLOB) 219attribute(` s', Alias, kSecAlias, (char*) "Alias", 0, NULL, BLOB) 220attribute(` i', Invisible, kSecInvisibleItemAttr, (char*) "Invisible", 0, NULL, SINT32) 221attribute(` i', Negative, kSecNegativeItemAttr, (char*) "Negative", 0, NULL, SINT32) 222attribute(` i', CustomIcon, kSecCustomIconItemAttr, (char*) "CustomIcon", 0, NULL, SINT32) 223attribute(` i', Protected, kSecProtectedDataItemAttr, (char*) "Protected", 0, NULL, BLOB) 224attribute(`UIi', Account, kSecAccountItemAttr, (char*) "Account", 0, NULL, BLOB) 225attribute(`UIi', Service, kSecServiceItemAttr, (char*) "Service", 0, NULL, BLOB) 226attribute(` i', Generic, kSecGenericItemAttr, (char*) "Generic", 0, NULL, BLOB) 227endClass() 228 229startClass(Appleshare) 230attribute(` i', CreationDate, kSecCreationDateItemAttr, (char*) "CreationDate", 0, NULL, TIME_DATE) 231attribute(` i', ModDate, kSecModDateItemAttr, (char*) "ModDate", 0, NULL, TIME_DATE) 232attribute(` i', Description, kSecDescriptionItemAttr, (char*) "Description", 0, NULL, BLOB) 233attribute(` i', Comment, kSecCommentItemAttr, (char*) "Comment", 0, NULL, BLOB) 234attribute(` i', Creator, kSecCreatorItemAttr, (char*) "Creator", 0, NULL, UINT32) 235attribute(` i', Type, kSecTypeItemAttr, (char*) "Type", 0, NULL, UINT32) 236attribute(` i', ScriptCode, kSecScriptCodeItemAttr, (char*) "ScriptCode", 0, NULL, SINT32) 237attribute(` s', PrintName, kSecLabelItemAttr, (char*) "PrintName", 0, NULL, BLOB) 238attribute(` s', Alias, kSecAlias, (char*) "Alias", 0, NULL, BLOB) 239attribute(` i', Invisible, kSecInvisibleItemAttr, (char*) "Invisible", 0, NULL, SINT32) 240attribute(` i', Negative, kSecNegativeItemAttr, (char*) "Negative", 0, NULL, SINT32) 241attribute(` i', CustomIcon, kSecCustomIconItemAttr, (char*) "CustomIcon", 0, NULL, SINT32) 242attribute(` i', Protected, kSecProtectedDataItemAttr, (char*) "Protected", 0, NULL, BLOB) 243attribute(`UIi', Account, kSecAccountItemAttr, (char*) "Account", 0, NULL, BLOB) 244attribute(`UIi', Volume, kSecVolumeItemAttr, (char*) "Volume", 0, NULL, BLOB) 245attribute(` i', Server, kSecServerItemAttr, (char*) "Server", 0, NULL, BLOB) 246attribute(` i', Protocol, kSecProtocolItemAttr, (char*) "Protocol", 0, NULL, UINT32) 247attribute(`UIi', Address, kSecAddressItemAttr, (char*) "Address", 0, NULL, BLOB) 248attribute(`UIi', Signature, kSecSignatureItemAttr, (char*) "Signature", 0, NULL, BLOB) 249endClass() 250 251startClass(Internet) 252attribute(` i', CreationDate, kSecCreationDateItemAttr, (char*) "CreationDate", 0, NULL, TIME_DATE) 253attribute(` i', ModDate, kSecModDateItemAttr, (char*) "ModDate", 0, NULL, TIME_DATE) 254attribute(` i', Description, kSecDescriptionItemAttr, (char*) "Description", 0, NULL, BLOB) 255attribute(` i', Comment, kSecCommentItemAttr, (char*) "Comment", 0, NULL, BLOB) 256attribute(` i', Creator, kSecCreatorItemAttr, (char*) "Creator", 0, NULL, UINT32) 257attribute(` i', Type, kSecTypeItemAttr, (char*) "Type", 0, NULL, UINT32) 258attribute(` i', ScriptCode, kSecScriptCodeItemAttr, (char*) "ScriptCode", 0, NULL, SINT32) 259attribute(` s', PrintName, kSecLabelItemAttr, (char*) "PrintName", 0, NULL, BLOB) 260attribute(` s', Alias, kSecAlias, (char*) "Alias", 0, NULL, BLOB) 261attribute(` i', Invisible, kSecInvisibleItemAttr, (char*) "Invisible", 0, NULL, SINT32) 262attribute(` i', Negative, kSecNegativeItemAttr, (char*) "Negative", 0, NULL, SINT32) 263attribute(` i', CustomIcon, kSecCustomIconItemAttr, (char*) "CustomIcon", 0, NULL, SINT32) 264attribute(` i', Protected, kSecProtectedDataItemAttr, (char*) "Protected", 0, NULL, BLOB) 265attribute(`UIi', Account, kSecAccountItemAttr, (char*) "Account", 0, NULL, BLOB) 266attribute(`UIi', SecurityDomain, kSecSecurityDomainItemAttr, (char*) "SecurityDomain", 0, NULL, BLOB) 267attribute(`UIi', Server, kSecServerItemAttr, (char*) "Server", 0, NULL, BLOB) 268attribute(`UIi', Protocol, kSecProtocolItemAttr, (char*) "Protocol", 0, NULL, UINT32) 269attribute(`UIi', AuthType, kSecAuthenticationTypeItemAttr, (char*) "AuthType", 0, NULL, BLOB) 270attribute(`UIi', Port, kSecPortItemAttr, (char*) "Port", 0, NULL, UINT32) 271attribute(`UIi', Path, kSecPathItemAttr, (char*) "Path", 0, NULL, BLOB) 272endClass() 273 274startNewClass(X509Certificate) 275newAttribute(`UISs', CertType, kSecCertTypeItemAttr, (char*) "CertType", 0, NULL, UINT32) 276newAttribute(` Ss', CertEncoding, kSecCertEncodingItemAttr, (char*) "CertEncoding", 0, NULL, UINT32) 277newAttribute(` Ss', PrintName, kSecLabelItemAttr, (char*) "PrintName", 0, NULL, BLOB) 278newAttribute(` ISs', Alias, kSecAlias, (char*) "Alias", 0, NULL, BLOB) 279newAttribute(` ISs', Subject, kSecSubjectItemAttr, (char*) "Subject", 0, NULL, BLOB) 280newAttribute(`UISs', Issuer, kSecIssuerItemAttr, (char*) "Issuer", 0, NULL, BLOB) 281newAttribute(`UISs', SerialNumber, kSecSerialNumberItemAttr, (char*) "SerialNumber", 0, NULL, BLOB) 282newAttribute(` ISs', SubjectKeyIdentifier, kSecSubjectKeyIdentifierItemAttr, (char*) "SubjectKeyIdentifier", 0, NULL, BLOB) 283newAttribute(` ISs', PublicKeyHash, kSecPublicKeyHashItemAttr, (char*) "PublicKeyHash", 0, NULL, BLOB) 284endNewClass() 285 286startNewClass(X509Crl) 287newAttribute(`UISs', CrlType, kSecCrlType, (char*) "CrlType", 0, NULL, UINT32) 288newAttribute(` Ss', CrlEncoding, kSecCrlEncodingItemAttr, (char*) "CrlEncoding", 0, NULL, UINT32) 289newAttribute(` Ss', PrintName, kSecLabelItemAttr, (char*) "PrintName", 0, NULL, BLOB) 290newAttribute(` Ss', Alias, kSecAlias, (char*) "Alias", 0, NULL, BLOB) 291newAttribute(`UISs', Issuer, kSecIssuerItemAttr, (char*) "Issuer", 0, NULL, BLOB) 292newAttribute(`UISs', ThisUpdate, kSecThisUpdateItemAttr, (char*) "ThisUpdate", 0, NULL, BLOB) 293newAttribute(`UISs', NextUpdate, kSecNextUpdateItemAttr, (char*) "NextUpdate", 0, NULL, BLOB) 294newAttribute(` Ss', URI, kSecUriItemAttr, (char*) "URI", 0, NULL, BLOB) 295newAttribute(` ISs', CrlNumber, kSecCrlNumberItemAttr, (char*) "CrlNumber", 0, NULL, UINT32) 296newAttribute(` ISs', DeltaCrlNumber, kSecDeltaCrlNumberItemAttr, (char*) "DeltaCrlNumber", 0, NULL, UINT32) 297endNewClass() 298 299startNewClass(UserTrust) 300newAttribute(`UISs', TrustedCertificate, kSecTrustCertAttr, (char*) "TrustedCertificate", 0, NULL, BLOB) 301newAttribute(`UISs', TrustedPolicy, kSecTrustPolicyAttr, (char*) "TrustedPolicy", 0, NULL, BLOB) 302newAttribute(` Ss', PrintName, kSecLabelItemAttr, (char*) "PrintName", 0, NULL, BLOB) 303endNewClass() 304 305startNewClass(UnlockReferral) 306newAttribute(`UISs', Type, kSecReferralTypeAttr, (char*) "Type", 0, NULL, UINT32) 307newAttribute(`UISs', DbName, kSecReferralDbNameAttr, (char*) "DbName", 0, NULL, STRING) 308newAttribute(`UISs', DbNetname, kSecReferralDbNetnameAttr, (char*) "DbNetname", 0, NULL, BLOB) 309newAttribute(`UISs', DbGuid, kSecReferralDbGuidAttr, (char*) "DbGuid", 0, NULL, BLOB) 310newAttribute(`UISs', DbSSID, kSecReferralDbSSIDAttr, (char*) "DbSSID", 0, NULL, UINT32) 311newAttribute(`UISs', DbSSType, kSecReferralDbSSTypeAttr, (char*) "DbSSType", 0, NULL, UINT32) 312newAttribute(` ISs', KeyLabel, kSecReferralKeyLabelAttr, (char*) "KeyLabel", 0, NULL, BLOB) 313newAttribute(` ISs', KeyAppTag, kSecReferralKeyAppTagAttr, (char*) "KeyAppTag", 0, NULL, BLOB) 314newAttribute(` Ss', PrintName, kSecLabelItemAttr, (char*) "PrintName", 0, NULL, BLOB) 315newAttribute(` Ss', Alias, kSecAlias, (char*) "Alias", 0, NULL, BLOB) 316endNewClass() 317 318// Extended Attribute 319startNewClass(ExtendedAttribute) 320newAttribute(`UISs', RecordType, kExtendedAttrRecordTypeAttr, (char*) "RecordType", 0, NULL, UINT32) 321newAttribute(`UISs', ItemID, kExtendedAttrItemIDAttr, (char*) "ItemID", 0, NULL, BLOB) 322newAttribute(`UISs', AttributeName, kExtendedAttrAttributeNameAttr, (char*) "AttributeName", 0, NULL, BLOB) 323newAttribute(` Ss', ModDate, kSecModDateItemAttr, (char*) "ModDate", 0, NULL, TIME_DATE) 324newAttribute(` Ss', AttributeValue, kExtendedAttrAttributeValueAttr, (char*) "AttributeValue", 0, NULL, BLOB) 325endNewClass() 326 327divert(3) 328static const CSSM_DB_RECORD_ATTRIBUTE_INFO Attributes[] = 329{ 330 attrInfo(CSSM_DL_DB_RECORD_GENERIC_PASSWORD, Generic), 331 attrInfo(CSSM_DL_DB_RECORD_APPLESHARE_PASSWORD, Appleshare), 332 attrInfo(CSSM_DL_DB_RECORD_INTERNET_PASSWORD, Internet) 333}; 334 335static const CSSM_DB_RECORD_INDEX_INFO Indices[] = 336{ 337 indexInfo(CSSM_DL_DB_RECORD_GENERIC_PASSWORD, Generic), 338 indexInfo(CSSM_DL_DB_RECORD_APPLESHARE_PASSWORD, Appleshare), 339 indexInfo(CSSM_DL_DB_RECORD_INTERNET_PASSWORD, Internet) 340}; 341 342static const CSSM_DB_PARSING_MODULE_INFO ParseInfos[] = 343{ 344 parseInfo(), 345 parseInfo(), 346 parseInfo() 347}; 348 349// 350// Public stuff 351// 352const CSSM_DBINFO DBInfo = 353{ 354 sizeof(Attributes) / sizeof(CSSM_DB_RECORD_ATTRIBUTE_INFO), 355 const_cast<CSSM_DB_PARSING_MODULE_INFO_PTR>(ParseInfos), 356 const_cast<CSSM_DB_RECORD_ATTRIBUTE_INFO_PTR>(Attributes), 357 const_cast<CSSM_DB_RECORD_INDEX_INFO_PTR>(Indices), 358 CSSM_TRUE, 359 NULL, 360 NULL 361}; 362 363// 364// Schema methods 365// 366CSSM_DB_RECORDTYPE 367recordTypeFor(SecItemClass itemClass) 368{ 369 switch (itemClass) 370 { 371 case kSecGenericPasswordItemClass: return CSSM_DL_DB_RECORD_GENERIC_PASSWORD; 372 case kSecInternetPasswordItemClass: return CSSM_DL_DB_RECORD_INTERNET_PASSWORD; 373 case 'ashp': return CSSM_DL_DB_RECORD_APPLESHARE_PASSWORD; 374 default: return CSSM_DB_RECORDTYPE(itemClass); 375 } 376} 377 378SecItemClass 379itemClassFor(CSSM_DB_RECORDTYPE recordType) 380{ 381 switch (recordType) 382 { 383 case CSSM_DL_DB_RECORD_GENERIC_PASSWORD: return kSecGenericPasswordItemClass; 384 case CSSM_DL_DB_RECORD_INTERNET_PASSWORD: return kSecInternetPasswordItemClass; 385 case CSSM_DL_DB_RECORD_APPLESHARE_PASSWORD: return 'ashp'; 386 default: return SecItemClass(recordType); 387 } 388} 389 390const CSSM_DB_ATTRIBUTE_INFO & 391attributeInfo(SecKeychainAttrType attrType) 392{ 393 switch (attrType) 394 { 395 case kSecCreationDateItemAttr: return kGenericCreationDate; 396 case kSecModDateItemAttr: return kGenericModDate; 397 case kSecDescriptionItemAttr: return kGenericDescription; 398 case kSecCommentItemAttr: return kGenericComment; 399 case kSecCreatorItemAttr: return kGenericCreator; 400 case kSecTypeItemAttr: return kGenericType; 401 case kSecScriptCodeItemAttr: return kGenericScriptCode; 402 case kSecLabelItemAttr: return kGenericPrintName; 403 case kSecAlias: return kGenericAlias; 404 case kSecInvisibleItemAttr: return kGenericInvisible; 405 case kSecNegativeItemAttr: return kGenericNegative; 406 case kSecCustomIconItemAttr: return kGenericCustomIcon; 407 /* Unique Generic password attributes */ 408 case kSecAccountItemAttr: return kGenericAccount; 409 case kSecServiceItemAttr: return kGenericService; 410 case kSecGenericItemAttr: return kGenericGeneric; 411 /* Unique Appleshare password attributes */ 412 case kSecVolumeItemAttr: return kAppleshareVolume; 413 case kSecAddressItemAttr: return kAppleshareAddress; 414 case kSecSignatureItemAttr: return kAppleshareSignature; 415 /* Unique AppleShare and Internet attributes */ 416 case kSecServerItemAttr: return kAppleshareServer; 417 case kSecProtocolItemAttr: return kAppleshareProtocol; 418 /* Unique Internet password attributes */ 419 case kSecSecurityDomainItemAttr: return kInternetSecurityDomain; 420 case kSecAuthenticationTypeItemAttr: return kInternetAuthType; 421 case kSecPortItemAttr: return kInternetPort; 422 case kSecPathItemAttr: return kInternetPath; 423 /* Unique Certificate attributes */ 424 case kSecCertTypeItemAttr: return kX509CertificateCertType; 425 case kSecCertEncodingItemAttr: return kX509CertificateCertEncoding; 426 case kSecSubjectItemAttr: return kX509CertificateSubject; 427 case kSecIssuerItemAttr: return kX509CertificateIssuer; 428 case kSecSerialNumberItemAttr: return kX509CertificateSerialNumber; 429 case kSecSubjectKeyIdentifierItemAttr: return kX509CertificateSubjectKeyIdentifier; 430 case kSecPublicKeyHashItemAttr: return kX509CertificatePublicKeyHash; 431 /* Unique UserTrust attributes */ 432 case kSecTrustCertAttr: return kUserTrustTrustedCertificate; 433 case kSecTrustPolicyAttr: return kUserTrustTrustedPolicy; 434 /* Unique UnlockReferral attributes */ 435 case kSecReferralTypeAttr: return kUnlockReferralType; 436 case kSecReferralDbNameAttr: return kUnlockReferralDbName; 437 case kSecReferralDbGuidAttr: return kUnlockReferralDbGuid; 438 case kSecReferralDbSSIDAttr: return kUnlockReferralDbSSID; 439 case kSecReferralDbSSTypeAttr: return kUnlockReferralDbSSType; 440 case kSecReferralDbNetnameAttr: return kUnlockReferralDbNetname; 441 case kSecReferralKeyLabelAttr: return kUnlockReferralKeyLabel; 442 case kSecReferralKeyAppTagAttr: return kUnlockReferralKeyAppTag; 443 /* Unique ExtendedAttribute attributes */ 444 case kExtendedAttrRecordTypeAttr: return kExtendedAttributeRecordType; 445 case kExtendedAttrItemIDAttr: return kExtendedAttributeItemID; 446 case kExtendedAttrAttributeNameAttr: return kExtendedAttributeAttributeName; 447 case kExtendedAttrAttributeValueAttr: return kExtendedAttributeAttributeValue; 448 /* ??? */ 449 case kSecProtectedDataItemAttr: return kGenericProtected; 450 default: 451 { 452 if (attrType == 7) 453 { 454 return kGenericPrintName; 455 } 456 else if (attrType == 8) 457 { 458 return kGenericAlias; 459 } 460 MacOSError::throwMe(errSecNoSuchAttr); 461 } 462 } 463} 464 465} // end namespace Schema 466 467} // end namespace KeychainCore 468 469} // end namespace Security 470 471`#pragma clang diagnostic pop' 472