]> git.saurik.com Git - apple/security.git/blame - Keychain/Schema.m4
Security-54.1.9.tar.gz
[apple/security.git] / Keychain / Schema.m4
CommitLineData
bac41a7b
A
1divert(-1)
2changecom(/*, */)
3/*
29654253 4 * Copyright (c) 2000-2002 Apple Computer, Inc. All Rights Reserved.
bac41a7b
A
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 *)$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
29654253
A
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 *)$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
bac41a7b
A
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/Schema.h>'
183
29654253
A
184`#include <Security/SecCertificate.h>'
185`#include <Security/TrustItem.h>'
bac41a7b
A
186`#include <Security/SecKeychainAPIPriv.h>'
187`#include <Security/cssmapple.h>'
188`#include <Security/utilities.h>'
189
190namespace Security {
191
192namespace KeychainCore {
193
194namespace Schema {
195
196// Meta attributes
197simpleAttribute(` s', RelationID, 0, "RelationID", 0, NULL, UINT32)
198simpleAttribute(` s', RelationName, 1, "RelationName", 0, NULL, STRING)
199simpleAttribute(` s', AttributeID, 1, "AttributeID", 0, NULL, UINT32)
200simpleAttribute(` s', AttributeNameFormat, 2, "AttributeNameFormat", 0, NULL, UINT32)
201simpleAttribute(` s', AttributeName, 3, "AttributeName", 0, NULL, STRING)
202simpleAttribute(` s', AttributeNameID, 4, "AttributeNameID", 0, NULL, BLOB)
203simpleAttribute(` s', AttributeFormat, 5, "AttributeFormat", 0, NULL, UINT32)
204simpleAttribute(` s', IndexType, 3, "IndexType", 0, NULL, UINT32)
205
206divert(-1)
207startClass(Generic)
208attribute(` i', CreationDate, kSecCreationDateItemAttr, "CreationDate", 0, NULL, TIME_DATE)
209attribute(` i', ModDate, kSecModDateItemAttr, "ModDate", 0, NULL, TIME_DATE)
210attribute(` i', Description, kSecDescriptionItemAttr, "Description", 0, NULL, BLOB)
211attribute(` i', Comment, kSecCommentItemAttr, "Comment", 0, NULL, BLOB)
212attribute(` i', Creator, kSecCreatorItemAttr, "Creator", 0, NULL, UINT32)
213attribute(` i', Type, kSecTypeItemAttr, "Type", 0, NULL, UINT32)
214attribute(` i', ScriptCode, kSecScriptCodeItemAttr, "ScriptCode", 0, NULL, SINT32)
215attribute(` s', PrintName, kSecLabelItemAttr, "PrintName", 0, NULL, BLOB)
216attribute(` s', Alias, kSecAliasItemAttr, "Alias", 0, NULL, BLOB)
217attribute(` i', Invisible, kSecInvisibleItemAttr, "Invisible", 0, NULL, SINT32)
218attribute(` i', Negative, kSecNegativeItemAttr, "Negative", 0, NULL, SINT32)
219attribute(` i', CustomIcon, kSecCustomIconItemAttr, "CustomIcon", 0, NULL, SINT32)
220attribute(` i', Protected, kSecProtectedDataItemAttr, "Protected", 0, NULL, BLOB)
221attribute(`UIi', Account, kSecAccountItemAttr, "Account", 0, NULL, BLOB)
222attribute(`UIi', Service, kSecServiceItemAttr, "Service", 0, NULL, BLOB)
223attribute(` i', Generic, kSecGenericItemAttr, "Generic", 0, NULL, BLOB)
224endClass()
225
226startClass(Appleshare)
227attribute(` i', CreationDate, kSecCreationDateItemAttr, "CreationDate", 0, NULL, TIME_DATE)
228attribute(` i', ModDate, kSecModDateItemAttr, "ModDate", 0, NULL, TIME_DATE)
229attribute(` i', Description, kSecDescriptionItemAttr, "Description", 0, NULL, BLOB)
230attribute(` i', Comment, kSecCommentItemAttr, "Comment", 0, NULL, BLOB)
231attribute(` i', Creator, kSecCreatorItemAttr, "Creator", 0, NULL, UINT32)
232attribute(` i', Type, kSecTypeItemAttr, "Type", 0, NULL, UINT32)
233attribute(` i', ScriptCode, kSecScriptCodeItemAttr, "ScriptCode", 0, NULL, SINT32)
234attribute(` s', PrintName, kSecLabelItemAttr, "PrintName", 0, NULL, BLOB)
235attribute(` s', Alias, kSecAliasItemAttr, "Alias", 0, NULL, BLOB)
236attribute(` i', Invisible, kSecInvisibleItemAttr, "Invisible", 0, NULL, SINT32)
237attribute(` i', Negative, kSecNegativeItemAttr, "Negative", 0, NULL, SINT32)
238attribute(` i', CustomIcon, kSecCustomIconItemAttr, "CustomIcon", 0, NULL, SINT32)
239attribute(` i', Protected, kSecProtectedDataItemAttr, "Protected", 0, NULL, BLOB)
240attribute(`UIi', Account, kSecAccountItemAttr, "Account", 0, NULL, BLOB)
241attribute(`UIi', Volume, kSecVolumeItemAttr, "Volume", 0, NULL, BLOB)
242attribute(` i', Server, kSecServerItemAttr, "Server", 0, NULL, BLOB)
243attribute(` i', Protocol, kSecProtocolItemAttr, "Protocol", 0, NULL, UINT32)
244attribute(`UIi', Address, kSecAddressItemAttr, "Address", 0, NULL, BLOB)
245attribute(`UIi', Signature, kSecSignatureItemAttr, "Signature", 0, NULL, BLOB)
246endClass()
247
248startClass(Internet)
249attribute(` i', CreationDate, kSecCreationDateItemAttr, "CreationDate", 0, NULL, TIME_DATE)
250attribute(` i', ModDate, kSecModDateItemAttr, "ModDate", 0, NULL, TIME_DATE)
251attribute(` i', Description, kSecDescriptionItemAttr, "Description", 0, NULL, BLOB)
252attribute(` i', Comment, kSecCommentItemAttr, "Comment", 0, NULL, BLOB)
253attribute(` i', Creator, kSecCreatorItemAttr, "Creator", 0, NULL, UINT32)
254attribute(` i', Type, kSecTypeItemAttr, "Type", 0, NULL, UINT32)
255attribute(` i', ScriptCode, kSecScriptCodeItemAttr, "ScriptCode", 0, NULL, SINT32)
256attribute(` s', PrintName, kSecLabelItemAttr, "PrintName", 0, NULL, BLOB)
257attribute(` s', Alias, kSecAliasItemAttr, "Alias", 0, NULL, BLOB)
258attribute(` i', Invisible, kSecInvisibleItemAttr, "Invisible", 0, NULL, SINT32)
259attribute(` i', Negative, kSecNegativeItemAttr, "Negative", 0, NULL, SINT32)
260attribute(` i', CustomIcon, kSecCustomIconItemAttr, "CustomIcon", 0, NULL, SINT32)
261attribute(` i', Protected, kSecProtectedDataItemAttr, "Protected", 0, NULL, BLOB)
262attribute(`UIi', Account, kSecAccountItemAttr, "Account", 0, NULL, BLOB)
263attribute(`UIi', SecurityDomain, kSecSecurityDomainItemAttr, "SecurityDomain", 0, NULL, BLOB)
264attribute(`UIi', Server, kSecServerItemAttr, "Server", 0, NULL, BLOB)
265attribute(`UIi', Protocol, kSecProtocolItemAttr, "Protocol", 0, NULL, UINT32)
29654253 266attribute(`UIi', AuthType, kSecAuthenticationTypeItemAttr, "AuthType", 0, NULL, BLOB)
bac41a7b
A
267attribute(`UIi', Port, kSecPortItemAttr, "Port", 0, NULL, UINT32)
268attribute(`UIi', Path, kSecPathItemAttr, "Path", 0, NULL, BLOB)
269endClass()
270
29654253
A
271startNewClass(X509Certificate)
272newAttribute(`UISs', CertType, kSecCertTypeItemAttr, "CertType", 0, NULL, UINT32)
273newAttribute(` Ss', CertEncoding, kSecCertEncodingItemAttr, "CertEncoding", 0, NULL, UINT32)
274newAttribute(` Ss', PrintName, kSecLabelItemAttr, "PrintName", 0, NULL, BLOB)
275newAttribute(` Ss', Alias, kSecAliasItemAttr, "Alias", 0, NULL, BLOB)
276newAttribute(` ISs', Subject, kSecSubjectItemAttr, "Subject", 0, NULL, BLOB)
277newAttribute(`UISs', Issuer, kSecIssuerItemAttr, "Issuer", 0, NULL, BLOB)
278newAttribute(`UISs', SerialNumber, kSecSerialNumberItemAttr, "SerialNumber", 0, NULL, BLOB)
279newAttribute(` ISs', SubjectKeyIdentifier, kSecSubjectKeyIdentifierItemAttr, "SubjectKeyIdentifier", 0, NULL, BLOB)
280newAttribute(` ISs', PublicKeyHash, kSecPublicKeyHashItemAttr, "PublicKeyHash", 0, NULL, BLOB)
281endNewClass()
282
283startNewClass(UserTrust)
284newAttribute(`UISs', TrustedCertificate, kSecTrustCertAttr, "TrustedCertificate", 0, NULL, BLOB)
285newAttribute(`UISs', TrustedPolicy, kSecTrustPolicyAttr, "TrustedPolicy", 0, NULL, BLOB)
286newAttribute(` Ss', PrintName, kSecLabelItemAttr, "PrintName", 0, NULL, BLOB)
287endNewClass()
288
289
bac41a7b
A
290divert(3)
291static const CSSM_DB_RECORD_ATTRIBUTE_INFO Attributes[] =
292{
293 attrInfo(CSSM_DL_DB_RECORD_GENERIC_PASSWORD, Generic),
294 attrInfo(CSSM_DL_DB_RECORD_APPLESHARE_PASSWORD, Appleshare),
295 attrInfo(CSSM_DL_DB_RECORD_INTERNET_PASSWORD, Internet)
296};
297
298static const CSSM_DB_RECORD_INDEX_INFO Indices[] =
299{
300 indexInfo(CSSM_DL_DB_RECORD_GENERIC_PASSWORD, Generic),
301 indexInfo(CSSM_DL_DB_RECORD_APPLESHARE_PASSWORD, Appleshare),
302 indexInfo(CSSM_DL_DB_RECORD_INTERNET_PASSWORD, Internet)
303};
304
305static const CSSM_DB_PARSING_MODULE_INFO ParseInfos[] =
306{
307 parseInfo(),
308 parseInfo(),
309 parseInfo()
310};
311
312//
313// Public stuff
314//
315const CSSM_DBINFO DBInfo =
316{
317 sizeof(Attributes) / sizeof(CSSM_DB_RECORD_ATTRIBUTE_INFO),
318 const_cast<CSSM_DB_PARSING_MODULE_INFO_PTR>(ParseInfos),
319 const_cast<CSSM_DB_RECORD_ATTRIBUTE_INFO_PTR>(Attributes),
320 const_cast<CSSM_DB_RECORD_INDEX_INFO_PTR>(Indices),
321 CSSM_TRUE,
322 NULL,
323 NULL
324};
325
326//
327// Schema methods
328//
329CSSM_DB_RECORDTYPE
330recordTypeFor(SecItemClass itemClass)
331{
332 switch (itemClass)
333 {
334 case kSecGenericPasswordItemClass: return CSSM_DL_DB_RECORD_GENERIC_PASSWORD;
335 case kSecInternetPasswordItemClass: return CSSM_DL_DB_RECORD_INTERNET_PASSWORD;
336 case kSecAppleSharePasswordItemClass: return CSSM_DL_DB_RECORD_APPLESHARE_PASSWORD;
29654253 337 default: return CSSM_DB_RECORDTYPE(itemClass);
bac41a7b
A
338 }
339}
340
341SecItemClass
342itemClassFor(CSSM_DB_RECORDTYPE recordType)
343{
344 switch (recordType)
345 {
346 case CSSM_DL_DB_RECORD_GENERIC_PASSWORD: return kSecGenericPasswordItemClass;
347 case CSSM_DL_DB_RECORD_INTERNET_PASSWORD: return kSecInternetPasswordItemClass;
348 case CSSM_DL_DB_RECORD_APPLESHARE_PASSWORD: return kSecAppleSharePasswordItemClass;
29654253 349 default: return SecItemClass(recordType);
bac41a7b
A
350 }
351}
352
353const CSSM_DB_ATTRIBUTE_INFO &
354attributeInfo(SecKeychainAttrType attrType)
355{
356 switch (attrType)
357 {
358 case kSecCreationDateItemAttr: return kGenericCreationDate;
359 case kSecModDateItemAttr: return kGenericModDate;
360 case kSecDescriptionItemAttr: return kGenericDescription;
361 case kSecCommentItemAttr: return kGenericComment;
362 case kSecCreatorItemAttr: return kGenericCreator;
363 case kSecTypeItemAttr: return kGenericType;
364 case kSecScriptCodeItemAttr: return kGenericScriptCode;
365 case kSecLabelItemAttr: return kGenericPrintName;
366 case kSecAliasItemAttr: return kGenericAlias;
367 case kSecInvisibleItemAttr: return kGenericInvisible;
368 case kSecNegativeItemAttr: return kGenericNegative;
369 case kSecCustomIconItemAttr: return kGenericCustomIcon;
370 /* Unique Generic password attributes */
371 case kSecAccountItemAttr: return kGenericAccount;
372 case kSecServiceItemAttr: return kGenericService;
373 case kSecGenericItemAttr: return kGenericGeneric;
374 /* Unique Appleshare password attributes */
375 case kSecVolumeItemAttr: return kAppleshareVolume;
376 case kSecAddressItemAttr: return kAppleshareAddress;
377 case kSecSignatureItemAttr: return kAppleshareSignature;
378 /* Unique AppleShare and Internet attributes */
379 case kSecServerItemAttr: return kAppleshareServer;
380 case kSecProtocolItemAttr: return kAppleshareProtocol;
381 /* Unique Internet password attributes */
382 case kSecSecurityDomainItemAttr: return kInternetSecurityDomain;
29654253 383 case kSecAuthenticationTypeItemAttr: return kInternetAuthType;
bac41a7b
A
384 case kSecPortItemAttr: return kInternetPort;
385 case kSecPathItemAttr: return kInternetPath;
29654253
A
386 /* Unique Certificate attributes */
387 case kSecCertTypeItemAttr: return kX509CertificateCertType;
388 case kSecCertEncodingItemAttr: return kX509CertificateCertEncoding;
389 case kSecSubjectItemAttr: return kX509CertificateSubject;
390 case kSecIssuerItemAttr: return kX509CertificateIssuer;
391 case kSecSerialNumberItemAttr: return kX509CertificateSerialNumber;
392 case kSecSubjectKeyIdentifierItemAttr: return kX509CertificateSubjectKeyIdentifier;
393 case kSecPublicKeyHashItemAttr: return kX509CertificatePublicKeyHash;
394 /* Unique UserTrust attributes */
395 case kSecTrustCertAttr: return kUserTrustTrustedCertificate;
396 case kSecTrustPolicyAttr: return kUserTrustTrustedPolicy;
bac41a7b
A
397 default: MacOSError::throwMe(errSecNoSuchAttr); // @@@ Not really but whatever.
398 }
399}
400
401} // end namespace Schema
402
403} // end namespace KeychainCore
404
405} // end namespace Security