2 * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved.
4 * The contents of this file constitute Original Code as defined in and are
5 * subject to the Apple Public Source License Version 1.2 (the 'License').
6 * You may not use this file except in compliance with the License. Please obtain
7 * a copy of the License at http://www.apple.com/publicsource and read it before
10 * This Original Code and all software distributed under the License are
11 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
12 * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
13 * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14 * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
15 * specific language governing rights and limitations under the License.
22 Contains: Service Provider Interface for Data Store Modules
24 Copyright: (c) 1999-2000 Apple Computer, Inc., all rights reserved.
30 #include <Security/cssmtype.h>
36 typedef struct cssm_spi_dl_funcs
{
37 CSSM_RETURN (CSSMDLI
*DbOpen
)
38 (CSSM_DL_HANDLE DLHandle
,
40 const CSSM_NET_ADDRESS
*DbLocation
,
41 CSSM_DB_ACCESS_TYPE AccessRequest
,
42 const CSSM_ACCESS_CREDENTIALS
*AccessCred
,
43 const void *OpenParameters
,
44 CSSM_DB_HANDLE
*DbHandle
);
45 CSSM_RETURN (CSSMDLI
*DbClose
)
46 (CSSM_DL_DB_HANDLE DLDBHandle
);
47 CSSM_RETURN (CSSMDLI
*DbCreate
)
48 (CSSM_DL_HANDLE DLHandle
,
50 const CSSM_NET_ADDRESS
*DbLocation
,
51 const CSSM_DBINFO
*DBInfo
,
52 CSSM_DB_ACCESS_TYPE AccessRequest
,
53 const CSSM_RESOURCE_CONTROL_CONTEXT
*CredAndAclEntry
,
54 const void *OpenParameters
,
55 CSSM_DB_HANDLE
*DbHandle
);
56 CSSM_RETURN (CSSMDLI
*DbDelete
)
57 (CSSM_DL_HANDLE DLHandle
,
59 const CSSM_NET_ADDRESS
*DbLocation
,
60 const CSSM_ACCESS_CREDENTIALS
*AccessCred
);
61 CSSM_RETURN (CSSMDLI
*CreateRelation
)
62 (CSSM_DL_DB_HANDLE DLDBHandle
,
63 CSSM_DB_RECORDTYPE RelationID
,
64 const char *RelationName
,
65 uint32 NumberOfAttributes
,
66 const CSSM_DB_SCHEMA_ATTRIBUTE_INFO
*pAttributeInfo
,
67 uint32 NumberOfIndexes
,
68 const CSSM_DB_SCHEMA_INDEX_INFO
*pIndexInfo
);
69 CSSM_RETURN (CSSMDLI
*DestroyRelation
)
70 (CSSM_DL_DB_HANDLE DLDBHandle
,
71 CSSM_DB_RECORDTYPE RelationID
);
72 CSSM_RETURN (CSSMDLI
*Authenticate
)
73 (CSSM_DL_DB_HANDLE DLDBHandle
,
74 CSSM_DB_ACCESS_TYPE AccessRequest
,
75 const CSSM_ACCESS_CREDENTIALS
*AccessCred
);
76 CSSM_RETURN (CSSMDLI
*GetDbAcl
)
77 (CSSM_DL_DB_HANDLE DLDBHandle
,
78 const CSSM_STRING
*SelectionTag
,
79 uint32
*NumberOfAclInfos
,
80 CSSM_ACL_ENTRY_INFO_PTR
*AclInfos
);
81 CSSM_RETURN (CSSMDLI
*ChangeDbAcl
)
82 (CSSM_DL_DB_HANDLE DLDBHandle
,
83 const CSSM_ACCESS_CREDENTIALS
*AccessCred
,
84 const CSSM_ACL_EDIT
*AclEdit
);
85 CSSM_RETURN (CSSMDLI
*GetDbOwner
)
86 (CSSM_DL_DB_HANDLE DLDBHandle
,
87 CSSM_ACL_OWNER_PROTOTYPE_PTR Owner
);
88 CSSM_RETURN (CSSMDLI
*ChangeDbOwner
)
89 (CSSM_DL_DB_HANDLE DLDBHandle
,
90 const CSSM_ACCESS_CREDENTIALS
*AccessCred
,
91 const CSSM_ACL_OWNER_PROTOTYPE
*NewOwner
);
92 CSSM_RETURN (CSSMDLI
*GetDbNames
)
93 (CSSM_DL_HANDLE DLHandle
,
94 CSSM_NAME_LIST_PTR
*NameList
);
95 CSSM_RETURN (CSSMDLI
*GetDbNameFromHandle
)
96 (CSSM_DL_DB_HANDLE DLDBHandle
,
98 CSSM_RETURN (CSSMDLI
*FreeNameList
)
99 (CSSM_DL_HANDLE DLHandle
,
100 CSSM_NAME_LIST_PTR NameList
);
101 CSSM_RETURN (CSSMDLI
*DataInsert
)
102 (CSSM_DL_DB_HANDLE DLDBHandle
,
103 CSSM_DB_RECORDTYPE RecordType
,
104 const CSSM_DB_RECORD_ATTRIBUTE_DATA
*Attributes
,
105 const CSSM_DATA
*Data
,
106 CSSM_DB_UNIQUE_RECORD_PTR
*UniqueId
);
107 CSSM_RETURN (CSSMDLI
*DataDelete
)
108 (CSSM_DL_DB_HANDLE DLDBHandle
,
109 const CSSM_DB_UNIQUE_RECORD
*UniqueRecordIdentifier
);
110 CSSM_RETURN (CSSMDLI
*DataModify
)
111 (CSSM_DL_DB_HANDLE DLDBHandle
,
112 CSSM_DB_RECORDTYPE RecordType
,
113 CSSM_DB_UNIQUE_RECORD_PTR UniqueRecordIdentifier
,
114 const CSSM_DB_RECORD_ATTRIBUTE_DATA
*AttributesToBeModified
,
115 const CSSM_DATA
*DataToBeModified
,
116 CSSM_DB_MODIFY_MODE ModifyMode
);
117 CSSM_RETURN (CSSMDLI
*DataGetFirst
)
118 (CSSM_DL_DB_HANDLE DLDBHandle
,
119 const CSSM_QUERY
*Query
,
120 CSSM_HANDLE_PTR ResultsHandle
,
121 CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR Attributes
,
123 CSSM_DB_UNIQUE_RECORD_PTR
*UniqueId
);
124 CSSM_RETURN (CSSMDLI
*DataGetNext
)
125 (CSSM_DL_DB_HANDLE DLDBHandle
,
126 CSSM_HANDLE ResultsHandle
,
127 CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR Attributes
,
129 CSSM_DB_UNIQUE_RECORD_PTR
*UniqueId
);
130 CSSM_RETURN (CSSMDLI
*DataAbortQuery
)
131 (CSSM_DL_DB_HANDLE DLDBHandle
,
132 CSSM_HANDLE ResultsHandle
);
133 CSSM_RETURN (CSSMDLI
*DataGetFromUniqueRecordId
)
134 (CSSM_DL_DB_HANDLE DLDBHandle
,
135 const CSSM_DB_UNIQUE_RECORD
*UniqueRecord
,
136 CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR Attributes
,
138 CSSM_RETURN (CSSMDLI
*FreeUniqueRecord
)
139 (CSSM_DL_DB_HANDLE DLDBHandle
,
140 CSSM_DB_UNIQUE_RECORD_PTR UniqueRecord
);
141 CSSM_RETURN (CSSMDLI
*PassThrough
)
142 (CSSM_DL_DB_HANDLE DLDBHandle
,
143 uint32 PassThroughId
,
144 const void *InputParams
,
145 void **OutputParams
);
146 } CSSM_SPI_DL_FUNCS
, *CSSM_SPI_DL_FUNCS_PTR
;
152 #endif /* _CSSMDLI_H_ */