]> git.saurik.com Git - apple/security.git/blobdiff - libsecurity_mds/lib/MDSDatabase.cpp
Security-55163.44.tar.gz
[apple/security.git] / libsecurity_mds / lib / MDSDatabase.cpp
diff --git a/libsecurity_mds/lib/MDSDatabase.cpp b/libsecurity_mds/lib/MDSDatabase.cpp
new file mode 100644 (file)
index 0000000..0e8e24b
--- /dev/null
@@ -0,0 +1,221 @@
+/*
+ * 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);
+}