#ifndef _H_CDSA_CLIENT_ACLCLIENT
#define _H_CDSA_CLIENT_ACLCLIENT 1
#include <Security/cssmaclpod.h>
#include <Security/cssmcred.h>
#include <Security/refcount.h>
#include <Security/globalizer.h>
namespace Security {
namespace CssmClient {
class CSP;
class AclBearer : public virtual RefCount {
public:
virtual ~AclBearer();
virtual void getAcl(AutoAclEntryInfoList &aclInfos,
const char *selectionTag = NULL) const = 0;
virtual void changeAcl(const CSSM_ACL_EDIT &aclEdit,
const CSSM_ACCESS_CREDENTIALS *cred = NULL) = 0;
void addAcl(const AclEntryInput &input, const CSSM_ACCESS_CREDENTIALS *cred = NULL);
void changeAcl(CSSM_ACL_HANDLE handle, const AclEntryInput &input,
const CSSM_ACCESS_CREDENTIALS *cred = NULL);
void deleteAcl(CSSM_ACL_HANDLE handle, const CSSM_ACCESS_CREDENTIALS *cred = NULL);
void deleteAcl(const char *tag = NULL, const CSSM_ACCESS_CREDENTIALS *cred = NULL);
virtual void getOwner(AutoAclOwnerPrototype &owner) const = 0;
virtual void changeOwner(const CSSM_ACL_OWNER_PROTOTYPE &newOwner,
const CSSM_ACCESS_CREDENTIALS *cred = NULL) = 0;
};
class AclFactory {
public:
AclFactory();
virtual ~AclFactory();
const AccessCredentials *nullCred() const;
const AccessCredentials *promptCred() const;
const AccessCredentials *unlockCred() const;
public:
class PasswordChangeCredentials
{
protected:
AutoCredentials* mCredentials;
CssmAllocator& mAllocator;
public:
PasswordChangeCredentials (const CssmData& password,
CssmAllocator& allocator);
~PasswordChangeCredentials ();
operator const AccessCredentials* () {return mCredentials;}
};
};
} }
#endif // _H_CDSA_CLIENT_ACLCLIENT