1/* 2 * Copyright (c) 2004 Apple Computer, Inc. All Rights Reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24 25 26#ifndef __DATABASE_H__ 27#define __DATABASE_H__ 28 29 30#include "AttachedInstance.h" 31 32/* 33 Abstract base class for a database -- provides stubs for CSSM calls 34*/ 35 36 37 38class Database 39{ 40protected: 41 AttachedInstance *mAttachedInstance; 42 43public: 44 Database (AttachedInstance *ai); 45 virtual ~Database (); 46 47 virtual void DbOpen (const char* DbName, 48 const CSSM_NET_ADDRESS *dbLocation, 49 const CSSM_DB_ACCESS_TYPE accessRequest, 50 const CSSM_ACCESS_CREDENTIALS *accessCredentials, 51 const void* openParameters); 52 53 virtual void DbClose (); 54 55 virtual void DbCreate (const char* dbName, 56 const CSSM_NET_ADDRESS *dbLocation, 57 const CSSM_DBINFO *dbInfo, 58 const CSSM_DB_ACCESS_TYPE accessRequest, 59 const CSSM_RESOURCE_CONTROL_CONTEXT *credAndAclEntry, 60 const void *openParameters); 61 62 virtual void DbCreateRelation (CSSM_DB_RECORDTYPE relationID, 63 const char* relationName, 64 uint32 numberOfAttributes, 65 const CSSM_DB_SCHEMA_ATTRIBUTE_INFO *pAttributeInfo, 66 uint32 numberOfIndexes, 67 const CSSM_DB_SCHEMA_INDEX_INFO *pIndexInfo); 68 69 virtual void DbDestroyRelation (CSSM_DB_RECORDTYPE relationID); 70 71 virtual void DbAuthenticate (CSSM_DB_ACCESS_TYPE accessRequest, 72 const CSSM_ACCESS_CREDENTIALS *accessCred); 73 74 virtual void DbGetDbAcl (CSSM_STRING* selectionTag, 75 uint32 *numberOfAclInfos); 76 77 virtual void DbChangeDbAcl (const CSSM_ACCESS_CREDENTIALS *accessCred, 78 const CSSM_ACL_EDIT *aclEdit); 79 80 virtual void DbGetDbOwner (CSSM_ACL_OWNER_PROTOTYPE_PTR owner); 81 82 virtual void DbChangeDbOwner (const CSSM_ACCESS_CREDENTIALS *accessCred, 83 const CSSM_ACL_OWNER_PROTOTYPE *newOwner); 84 85 virtual void DbGetDbNameFromHandle (char** dbName); 86 87 virtual void DbDataInsert (CSSM_DB_RECORDTYPE recordType, 88 const CSSM_DB_RECORD_ATTRIBUTE_DATA *attributes, 89 const CSSM_DATA *data, 90 CSSM_DB_UNIQUE_RECORD_PTR *uniqueId); 91 92 virtual void DbDataDelete (const CSSM_DB_UNIQUE_RECORD *uniqueRecordIdentifier); 93 94 virtual void DbDataModify (CSSM_DB_RECORDTYPE recordType, 95 CSSM_DB_UNIQUE_RECORD_PTR uniqueRecordIdentifier, 96 const CSSM_DB_RECORD_ATTRIBUTE_DATA attributesToBeModified, 97 const CSSM_DATA *dataToBeModified, 98 CSSM_DB_MODIFY_MODE modifyMode); 99 100 virtual CSSM_HANDLE DbDataGetFirst (const CSSM_QUERY *query, 101 CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR attributes, 102 CSSM_DATA_PTR data, 103 CSSM_DB_UNIQUE_RECORD_PTR *uniqueID); 104 105 virtual bool DbDataGetNext (CSSM_HANDLE resultsHandle, 106 CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR attributes, 107 CSSM_DATA_PTR data, 108 CSSM_DB_UNIQUE_RECORD_PTR *uniqueID); 109 110 virtual void DbDataAbortQuery (CSSM_HANDLE resultsHandle); 111 112 virtual void DbDataGetFromUniqueRecordID (const CSSM_DB_UNIQUE_RECORD_PTR uniqueRecord, 113 CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR attributes, 114 CSSM_DATA_PTR data); 115 116 virtual void DbFreeUniqueRecord (CSSM_DB_UNIQUE_RECORD_PTR uniqueRecord); 117 118 virtual void DbPassThrough (uint32 passThroughID, 119 const void* inputParams, 120 void **outputParams); 121}; 122 123#endif 124