--- /dev/null
+/*
+ * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved.
+ *
+ * The contents of this file constitute Original Code as defined in and are
+ * subject to the Apple Public Source License Version 1.2 (the 'License').
+ * You may not use this file except in compliance with the License. Please obtain
+ * a copy of the License at http://www.apple.com/publicsource and read it before
+ * using this file.
+ *
+ * This 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.
+ */
+
+
+#include "MDSDatabase.h"
+#include "MDSSchema.h"
+
+#include <security_cdsa_plugin/DbContext.h>
+#include <Security/mds_schema.h>
+#include <Security/cssmerr.h>
+
+//
+// MDSDatabaseManager
+//
+
+Database *MDSDatabaseManager::make (const DbName &inDbName)
+{
+ return new MDSDatabase(inDbName, mTableNames);
+}
+
+//
+// MDSDatabase
+//
+
+MDSDatabase::MDSDatabase (const DbName &inDbName, const AppleDatabaseTableName *tableNames)
+: AppleDatabase(inDbName, tableNames)
+{
+}
+
+MDSDatabase::~MDSDatabase ()
+{
+}
+
+DbContext *
+MDSDatabase::makeDbContext (DatabaseSession &inDatabaseSession,
+ CSSM_DB_ACCESS_TYPE inAccessRequest,
+ const CSSM_ACCESS_CREDENTIALS *inAccessCred,
+ const void *inOpenParameters)
+{
+ return new DbContext (*this, inDatabaseSession, inAccessRequest,
+ inAccessCred);
+}
+
+void
+MDSDatabase::dbOpen (DbContext &inDbContext)
+{
+ // XXX Do something more...
+}
+
+void
+MDSDatabase::dbClose ()
+{
+ // XXX Do something more...
+}
+
+// Creating and destroying relations is not exposed as part of the
+// MDS interface, so these two methods should never be called.
+
+void
+MDSDatabase::createRelation(DbContext &dbContext,
+ CSSM_DB_RECORDTYPE inRelationID,
+ const char *inRelationName,
+ uint32 inNumberOfAttributes,
+ const CSSM_DB_SCHEMA_ATTRIBUTE_INFO &inAttributeInfo,
+ uint32 inNumberOfIndexes,
+ const CSSM_DB_SCHEMA_INDEX_INFO &inIndexInfo)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}
+
+void
+MDSDatabase::destroyRelation(DbContext &dbContext,
+ CSSM_DB_RECORDTYPE inRelationID)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}
+
+char *
+MDSDatabase::getDbNameFromHandle (const DbContext &dbContext) const
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}
+
+CSSM_DB_UNIQUE_RECORD_PTR
+MDSDatabase::dataInsert (DbContext &dbContext,
+ CSSM_DB_RECORDTYPE RecordType,
+ const CSSM_DB_RECORD_ATTRIBUTE_DATA *Attributes,
+ const CssmData *Data)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}
+
+void
+MDSDatabase::dataDelete (DbContext &dbContext,
+ const CSSM_DB_UNIQUE_RECORD &UniqueRecordIdentifier)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}
+
+void
+MDSDatabase::dataModify (DbContext &dbContext,
+ CSSM_DB_RECORDTYPE RecordType,
+ CSSM_DB_UNIQUE_RECORD &UniqueRecordIdentifier,
+ const CSSM_DB_RECORD_ATTRIBUTE_DATA *AttributesToBeModified,
+ const CssmData *DataToBeModified,
+ CSSM_DB_MODIFY_MODE ModifyMode)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}
+
+CSSM_HANDLE
+MDSDatabase::dataGetFirst (DbContext &dbContext,
+ const CssmQuery *Query,
+ CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR Attributes,
+ CssmData *Data,
+ CSSM_DB_UNIQUE_RECORD_PTR &UniqueRecordIdentifier)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}
+
+bool
+MDSDatabase::dataGetNext (DbContext &dbContext,
+ CSSM_HANDLE ResultsHandle,
+ CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR Attributes,
+ CssmData *Data,
+ CSSM_DB_UNIQUE_RECORD_PTR &UniqueRecordIdentifier)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+ return false;
+}
+
+void
+MDSDatabase::dataAbortQuery (DbContext &dbContext,
+ CSSM_HANDLE ResultsHandle)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}
+
+void
+MDSDatabase::dataGetFromUniqueRecordId (DbContext &dbContext,
+ const CSSM_DB_UNIQUE_RECORD &UniqueRecord,
+ CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR Attributes,
+ CssmData *Data)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}
+
+void
+MDSDatabase::freeUniqueRecord (DbContext &dbContext,
+ CSSM_DB_UNIQUE_RECORD &UniqueRecord)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}
+
+// Functions that MDS does not support but we must implement to satisfy Database.
+void
+MDSDatabase::dbCreate (DbContext &inDbContext, const CSSM_DBINFO &inDBInfo,
+ const CSSM_ACL_ENTRY_INPUT *inInitialAclEntry)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}
+
+void
+MDSDatabase::dbDelete (DatabaseSession &inDatabaseSession,
+ const CSSM_ACCESS_CREDENTIALS *inAccessCred)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}
+
+void
+MDSDatabase::authenticate(DbContext &dbContext,
+ CSSM_DB_ACCESS_TYPE inAccessRequest,
+ const CSSM_ACCESS_CREDENTIALS &inAccessCred)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}
+
+void
+MDSDatabase::getDbAcl(DbContext &dbContext,
+ const CSSM_STRING *inSelectionTag,
+ uint32 &outNumberOfAclInfos,
+ CSSM_ACL_ENTRY_INFO_PTR &outAclInfos)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}
+
+void
+MDSDatabase::changeDbAcl(DbContext &dbContext,
+ const CSSM_ACCESS_CREDENTIALS &inAccessCred,
+ const CSSM_ACL_EDIT &inAclEdit)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}
+
+void
+MDSDatabase::getDbOwner(DbContext &dbContext, CSSM_ACL_OWNER_PROTOTYPE &outOwner)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}
+
+void
+MDSDatabase::changeDbOwner(DbContext &dbContext,
+ const CSSM_ACCESS_CREDENTIALS &inAccessCred,
+ const CSSM_ACL_OWNER_PROTOTYPE &inNewOwner)
+{
+ CssmError ::throwMe(CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED);
+}