+++ /dev/null
-/*
- * Copyright (c) 2004,2008,2011 Apple Inc. All Rights Reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
- *
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- *
- * The 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.
- *
- * @APPLE_LICENSE_HEADER_END@
- */
-
-
-//
-// SDDLSession.h - DL session for security server CSP/DL.
-//
-#ifndef _H_SDDLSESSION
-#define _H_SDDLSESSION
-
-#include <security_cdsa_plugin/DLsession.h>
-#include <security_cdsa_utilities/u32handleobject.h>
-#include <securityd_client/ssclient.h>
-
-class SDCSPDLPlugin;
-class SDCSPDLSession;
-
-class SDDLSession : public DLPluginSession
-{
-public:
- SDCSPDLSession &mSDCSPDLSession;
-
- SDDLSession(CSSM_MODULE_HANDLE handle,
- SDCSPDLPlugin &plug,
- const CSSM_VERSION &version,
- uint32 subserviceId,
- CSSM_SERVICE_TYPE subserviceType,
- CSSM_ATTACH_FLAGS attachFlags,
- const CSSM_UPCALLS &upcalls,
- DatabaseManager &databaseManager,
- SDCSPDLSession &ssCSPDLSession);
- ~SDDLSession();
-
- SecurityServer::ClientSession &clientSession()
- { return mClientSession; }
- void GetDbNames(CSSM_NAME_LIST_PTR &NameList);
- void FreeNameList(CSSM_NAME_LIST &NameList);
- void DbDelete(const char *DbName,
- const CSSM_NET_ADDRESS *DbLocation,
- const AccessCredentials *AccessCred);
- void DbCreate(const char *DbName,
- const CSSM_NET_ADDRESS *DbLocation,
- const CSSM_DBINFO &DBInfo,
- CSSM_DB_ACCESS_TYPE AccessRequest,
- const CSSM_RESOURCE_CONTROL_CONTEXT *CredAndAclEntry,
- const void *OpenParameters,
- CSSM_DB_HANDLE &DbHandle);
- void DbOpen(const char *DbName,
- const CSSM_NET_ADDRESS *DbLocation,
- CSSM_DB_ACCESS_TYPE AccessRequest,
- const AccessCredentials *AccessCred,
- const void *OpenParameters,
- CSSM_DB_HANDLE &DbHandle);
- void DbClose(CSSM_DB_HANDLE DBHandle);
- void CreateRelation(CSSM_DB_HANDLE DBHandle,
- CSSM_DB_RECORDTYPE RelationID,
- const char *RelationName,
- uint32 NumberOfAttributes,
- const CSSM_DB_SCHEMA_ATTRIBUTE_INFO *pAttributeInfo,
- uint32 NumberOfIndexes,
- const CSSM_DB_SCHEMA_INDEX_INFO &pIndexInfo);
- void DestroyRelation(CSSM_DB_HANDLE DBHandle,
- CSSM_DB_RECORDTYPE RelationID);
-
- void Authenticate(CSSM_DB_HANDLE DBHandle,
- CSSM_DB_ACCESS_TYPE AccessRequest,
- const AccessCredentials &AccessCred);
- void GetDbAcl(CSSM_DB_HANDLE DBHandle,
- const CSSM_STRING *SelectionTag,
- uint32 &NumberOfAclInfos,
- CSSM_ACL_ENTRY_INFO_PTR &AclInfos);
- void ChangeDbAcl(CSSM_DB_HANDLE DBHandle,
- const AccessCredentials &AccessCred,
- const CSSM_ACL_EDIT &AclEdit);
- void GetDbOwner(CSSM_DB_HANDLE DBHandle,
- CSSM_ACL_OWNER_PROTOTYPE &Owner);
- void ChangeDbOwner(CSSM_DB_HANDLE DBHandle,
- const AccessCredentials &AccessCred,
- const CSSM_ACL_OWNER_PROTOTYPE &NewOwner);
- void GetDbNameFromHandle(CSSM_DB_HANDLE DBHandle,
- char **DbName);
- void DataInsert(CSSM_DB_HANDLE DBHandle,
- CSSM_DB_RECORDTYPE RecordType,
- const CSSM_DB_RECORD_ATTRIBUTE_DATA *Attributes,
- const CssmData *Data,
- CSSM_DB_UNIQUE_RECORD_PTR &UniqueId);
- void DataDelete(CSSM_DB_HANDLE DBHandle,
- const CSSM_DB_UNIQUE_RECORD &UniqueRecordIdentifier);
- void DataModify(CSSM_DB_HANDLE DBHandle,
- CSSM_DB_RECORDTYPE RecordType,
- CSSM_DB_UNIQUE_RECORD &UniqueRecordIdentifier,
- const CSSM_DB_RECORD_ATTRIBUTE_DATA *AttributesToBeModified,
- const CssmData *DataToBeModified,
- CSSM_DB_MODIFY_MODE ModifyMode);
- CSSM_HANDLE DataGetFirst(CSSM_DB_HANDLE DBHandle,
- const CssmQuery *Query,
- CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR Attributes,
- CssmData *Data,
- CSSM_DB_UNIQUE_RECORD_PTR &UniqueId);
- bool DataGetNext(CSSM_DB_HANDLE DBHandle,
- CSSM_HANDLE ResultsHandle,
- CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR Attributes,
- CssmData *Data,
- CSSM_DB_UNIQUE_RECORD_PTR &UniqueId);
- void DataAbortQuery(CSSM_DB_HANDLE DBHandle,
- CSSM_HANDLE ResultsHandle);
- void DataGetFromUniqueRecordId(CSSM_DB_HANDLE DBHandle,
- const CSSM_DB_UNIQUE_RECORD &UniqueRecord,
- CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR Attributes,
- CssmData *Data);
- void FreeUniqueRecord(CSSM_DB_HANDLE DBHandle,
- CSSM_DB_UNIQUE_RECORD &UniqueRecord);
- void PassThrough(CSSM_DB_HANDLE DBHandle,
- uint32 PassThroughId,
- const void *InputParams,
- void **OutputParams);
-
- Allocator &allocator() { return *static_cast<DatabaseSession *>(this); }
-
-protected:
- void postGetRecord(SecurityServer::RecordHandle record, U32HandleObject::Handle resultsHandle,
- CSSM_DB_HANDLE db,
- CssmDbRecordAttributeData *pAttributes,
- CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR inoutAttributes,
- CssmData *inoutData, SecurityServer::KeyHandle hKey);
-
- CSSM_DB_UNIQUE_RECORD_PTR makeDbUniqueRecord(SecurityServer::RecordHandle recordHandle);
- CSSM_HANDLE findDbUniqueRecord(const CSSM_DB_UNIQUE_RECORD &inUniqueRecord);
- void freeDbUniqueRecord(CSSM_DB_UNIQUE_RECORD &inUniqueRecord);
-
- SecurityServer::ClientSession mClientSession;
- //SecurityServer::AttachmentHandle mAttachment;
-};
-
-
-#endif // _H_SDDLSESSION