]> git.saurik.com Git - apple/security.git/blobdiff - Security/libsecurity_cdsa_client/lib/securestorage.h
Security-57336.1.9.tar.gz
[apple/security.git] / Security / libsecurity_cdsa_client / lib / securestorage.h
diff --git a/Security/libsecurity_cdsa_client/lib/securestorage.h b/Security/libsecurity_cdsa_client/lib/securestorage.h
deleted file mode 100644 (file)
index 7474fbf..0000000
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * Copyright (c) 2000-2001,2011,2014 Apple 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.
- */
-
-
-//
-// securestorage - client interface to CSP DLs and their operations
-//
-#ifndef _H_CDSA_CLIENT_SECURESTORAGE
-#define _H_CDSA_CLIENT_SECURESTORAGE  1
-
-#include <security_cdsa_client/cspclient.h>
-#include <security_cdsa_client/dlclient.h>
-#include <security_cdsa_client/keyclient.h>
-
-namespace Security
-{
-
-namespace CssmClient
-{
-
-//
-// A CSP and a DL attachment of the same subservice
-//
-// This gives us 2 Object instances, but we make sure that have the same
-// mImpl.  Currently this class has no behaviour, but it will get some in
-// the future.
-//
-class CSPDLImpl : public CSPImpl, public DLImpl
-{
-public:
-       CSPDLImpl(const Guid &guid);
-       CSPDLImpl(const Module &module);
-       virtual ~CSPDLImpl();
-
-       // Object methods.
-       bool isActive() const { return CSPImpl::isActive() || DLImpl::isActive(); }
-
-       virtual Allocator &allocator() const;
-       virtual void allocator(Allocator &alloc);
-
-       virtual bool operator <(const CSPDLImpl &other) const;
-       virtual bool operator ==(const CSPDLImpl &other) const;
-
-       // Attachment methods.
-       virtual CSSM_SERVICE_MASK subserviceMask() const;
-       virtual void subserviceId(uint32 id);
-
-       uint32 subserviceId() const { return CSPImpl::subserviceId(); }
-       CSSM_ATTACH_FLAGS cspFlags() const { return CSPImpl::flags(); }
-       void cspFlags(CSSM_ATTACH_FLAGS f) { CSPImpl::flags(f); }
-       CSSM_ATTACH_FLAGS dlFlags() const { return DLImpl::flags(); }
-       void dlFlags(CSSM_ATTACH_FLAGS f) { DLImpl::flags(f); }
-
-       void attach() { CSPImpl::attach(); DLImpl::attach(); }
-       void detach() { CSPImpl::detach(); DLImpl::detach(); }
-       bool attached() const { return CSPImpl::attached() || DLImpl::attached(); }
-
-       Module module() const { return CSPImpl::module(); }
-       const Guid &guid() const { return CSPImpl::guid(); }
-       CSSM_MODULE_HANDLE cspHandle() { return CSPImpl::handle(); }
-       CSSM_MODULE_HANDLE dlHandle() { return DLImpl::handle(); }
-
-       CssmSubserviceUid subserviceUid() const
-       { return CSPImpl::subserviceUid(); }
-
-private:
-};
-
-
-class CSPDL : public CSP, public DL
-{
-public:
-       typedef CSPDLImpl Impl;
-
-       explicit CSPDL(Impl *impl) : CSP(impl), DL(impl) {}
-       CSPDL(const Guid &guid) : CSP(new Impl(guid)), DL(&CSP::impl<Impl>()) {}
-       CSPDL(const Module &module)
-               : CSP(new Impl(module)), DL(&CSP::impl<Impl>()) {}
-
-       //template <class _Impl> _Impl &impl() const
-       //{ return CSP::impl<_Impl>(); }
-
-       Impl *get() const { return &CSP::impl<Impl>(); }
-       Impl *operator ->() const { return &CSP::impl<Impl>(); }
-       Impl &operator *() const { return CSP::impl<Impl>(); }
-
-       // Conversion operators must be here
-       bool operator !() const { return !get(); }
-       operator bool() const { return get(); }
-
-       bool operator <(const CSPDL &other) const
-       { return *this && other ? **this < *other : get() < other.get(); }
-       bool operator ==(const CSPDL &other) const
-       { return *this && other ? **this == *other : get() == other.get(); }
-};
-
-
-//
-// SSCSPDL -- Secure storage class
-//
-class SSCSPDLImpl : public CSPDLImpl
-{
-public:
-       SSCSPDLImpl(const Guid &guid);
-       SSCSPDLImpl(const Module &module);
-       virtual ~SSCSPDLImpl();
-
-       // DbMaker
-       DbImpl *newDb(const char *inDbName, const CSSM_NET_ADDRESS *inDbLocation);
-private:
-};
-
-class SSCSPDL : public CSPDL 
-{
-public:
-       typedef SSCSPDLImpl Impl;
-
-       explicit SSCSPDL(Impl *impl) : CSPDL(impl) {}
-       SSCSPDL(const Guid &guid) : CSPDL(new Impl(guid)) {}
-       SSCSPDL(const Module &module) : CSPDL(new Impl(module)) {}
-
-       Impl *operator ->() const { return &CSP::impl<Impl>(); }
-       Impl &operator *() const { return CSP::impl<Impl>(); }
-};
-
-
-//
-// SSDbImpl --  A Security Storage Db object.
-//
-class SSGroup;
-class SSDbUniqueRecord;
-
-class SSDbImpl : public DbImpl
-{
-public:
-       SSDbImpl(const SSCSPDL &cspdl,
-                        const char *inDbName, const CSSM_NET_ADDRESS *inDbLocation);
-       virtual ~SSDbImpl();
-
-       void create();
-       void open();
-
-       SSDbUniqueRecord insert(CSSM_DB_RECORDTYPE recordType,
-                                                       const CSSM_DB_RECORD_ATTRIBUTE_DATA *attributes,
-                                                       const CSSM_DATA *data,
-                                                       const CSSM_RESOURCE_CONTROL_CONTEXT *rc = NULL);
-
-       SSDbUniqueRecord insert(CSSM_DB_RECORDTYPE recordType,
-                                                       const CSSM_DB_RECORD_ATTRIBUTE_DATA *attributes,
-                                                       const CSSM_DATA *data, const SSGroup &group,
-                                                       const CSSM_ACCESS_CREDENTIALS *cred);
-
-       // DbCursorMaker
-       DbCursorImpl *newDbCursor(const CSSM_QUERY &query,
-                                                         Allocator &allocator);
-       DbCursorImpl *newDbCursor(uint32 capacity, Allocator &allocator);
-
-       // SSDbUniqueRecordMaker
-       DbUniqueRecordImpl *newDbUniqueRecord();
-
-       CSP csp() { return parent<CSP>(); }
-};
-
-class SSDb : public Db
-{
-public:
-       typedef SSDbImpl Impl;
-
-       explicit SSDb(Impl *impl) : Db(impl) {}
-       SSDb(const SSCSPDL &cspdl, const char *inDbName,
-                const CSSM_NET_ADDRESS *inDbLocation = NULL)
-               : Db(cspdl->newDb(inDbName, inDbLocation)) {}
-
-       Impl *operator ->() const { return &impl<Impl>(); }
-       Impl &operator *() const { return impl<Impl>(); }
-};
-
-
-//
-// SSGroup -- Group key with acl, used to protect a group of items.
-//
-class SSGroupImpl : public KeyImpl
-{
-public:
-       SSGroupImpl(const SSDb &ssDb, const CSSM_DATA &dataBlob);
-       SSGroupImpl(const SSDb &ssDb,
-                               const CSSM_RESOURCE_CONTROL_CONTEXT *credAndAclEntry);
-
-       static bool isGroup(const CSSM_DATA &dataBlob);
-
-       const CssmData label() const;
-       void decodeDataBlob(const CSSM_DATA &dataBlob,
-                                               const CSSM_ACCESS_CREDENTIALS *cred,
-                                               Allocator &allocator, CSSM_DATA &data);
-       void encodeDataBlob(const CSSM_DATA *data,
-                                               const CSSM_ACCESS_CREDENTIALS *cred,
-                                               CssmDataContainer &dataBlob);
-
-private:
-       // Constants
-       enum
-       {
-               // Label prefix for a secure storage group
-               kGroupMagic = FOUR_CHAR_CODE('ssgp'),
-
-               // Size of label (including prefix)
-               kLabelSize = 20,
-
-               // Size of IV
-               kIVSize = 8
-       };
-
-       CSSM_DB_ATTR_DECL(kLabel);
-
-       CssmDataContainer mLabel;
-};
-
-class SSGroup : public Key
-{
-public:
-       typedef SSGroupImpl Impl;
-       explicit SSGroup(Impl *impl) : Key(impl) {}
-
-       SSGroup() : Key(NULL) {}
-
-       // Create a new group.
-       SSGroup(const SSDb &ssDb,
-                       const CSSM_RESOURCE_CONTROL_CONTEXT *credAndAclEntry)
-       : Key(new Impl(ssDb, credAndAclEntry)) {}
-
-       // Lookup an existing group based on a dataBlob.
-       SSGroup(const SSDb &ssDb, const CSSM_DATA &dataBlob)
-       : Key(new Impl(ssDb, dataBlob)) {}
-
-       Impl *operator ->() const { return &impl<Impl>(); }
-       Impl &operator *() const { return impl<Impl>(); }
-};
-
-
-//
-// SSDbCursor -- Cursor for iterating over Securely Stored records (or keys)
-//
-class SSDbCursorImpl : public DbDbCursorImpl
-{
-public:
-       SSDbCursorImpl(const Db &db, const CSSM_QUERY &query,
-                                  Allocator &allocator);
-       SSDbCursorImpl(const Db &db, uint32 capacity,
-                                  Allocator &allocator);
-
-       bool next(DbAttributes *attributes, ::CssmDataContainer *data,
-                         DbUniqueRecord &uniqueId);
-       bool next(DbAttributes *attributes, ::CssmDataContainer *data,
-                         DbUniqueRecord &uniqueId, const CSSM_ACCESS_CREDENTIALS *cred);
-       bool nextKey(DbAttributes *attributes, Key &key, DbUniqueRecord &uniqueId);
-       //bool nextGroup(DbAttributes *attributes, SSGroup &group, DbUniqueRecord &uniqueId);
-
-       SSDb database() { return parent<SSDb>(); }
-protected:
-       void activate();
-       void deactivate();
-};
-
-class SSDbCursor : public DbCursor
-{
-public:
-       typedef SSDbCursorImpl Impl;
-
-       explicit SSDbCursor(Impl *impl) : DbCursor(impl) {}
-       SSDbCursor(const SSDb &ssDb, const CSSM_QUERY &query,
-                          Allocator &allocator = Allocator::standard())
-               : DbCursor(ssDb->newDbCursor(query, allocator)) {}
-       SSDbCursor(const SSDb &ssDb, const uint32 capacity = 0,
-                          Allocator &allocator = Allocator::standard())
-               : DbCursor(ssDb->newDbCursor(capacity, allocator)) {}
-
-       Impl *operator ->() const { return &impl<Impl>(); }
-       Impl &operator *() const { return impl<Impl>(); }
-};
-
-
-//
-// SSDbUniqueRecord
-//
-class SSDbUniqueRecordImpl : public DbUniqueRecordImpl
-{
-public:
-       SSDbUniqueRecordImpl(const Db &db);
-       virtual ~SSDbUniqueRecordImpl();
-
-       void deleteRecord();
-       void deleteRecord(const CSSM_ACCESS_CREDENTIALS *cred);
-       void modify(CSSM_DB_RECORDTYPE recordType,
-                               const CSSM_DB_RECORD_ATTRIBUTE_DATA *attributes,
-                               const CSSM_DATA *data,
-                               CSSM_DB_MODIFY_MODE modifyMode);
-       void modify(CSSM_DB_RECORDTYPE recordType,
-                               const CSSM_DB_RECORD_ATTRIBUTE_DATA *attributes,
-                               const CSSM_DATA *data,
-                               CSSM_DB_MODIFY_MODE modifyMode,
-                               const CSSM_ACCESS_CREDENTIALS *cred);
-       void get(DbAttributes *attributes, ::CssmDataContainer *data);
-       void get(DbAttributes *attributes, ::CssmDataContainer *data,
-                        const CSSM_ACCESS_CREDENTIALS *cred);
-
-       SSDb database() { return parent<SSDb>(); }
-
-       // Return the group that this record is in.
-       SSGroup group();
-};
-
-class SSDbUniqueRecord : public DbUniqueRecord
-{
-public:
-       typedef SSDbUniqueRecordImpl Impl;
-
-       explicit SSDbUniqueRecord(Impl *impl) : DbUniqueRecord(impl) {}
-       SSDbUniqueRecord(const SSDb &ssDb)
-               : DbUniqueRecord(ssDb->newDbUniqueRecord()) {}
-
-       Impl *operator ->() const { return &impl<Impl>(); }
-       Impl &operator *() const { return impl<Impl>(); }
-};
-
-}; // end namespace CssmClient
-
-} // end namespace Security
-
-#endif //_H_CDSA_CLIENT_SECURESTORAGE