#ifdef __MWERKS__
#define _CPP_ACL_KEYCHAIN
#endif
#include <Security/acl_keychain.h>
#include <algorithm>
bool KeychainPromptAclSubject::validate(const AclValidationContext &,
const TypedList &sample) const
{
return interface.validate(description);
}
CssmList KeychainPromptAclSubject::toList(CssmAllocator &alloc) const
{
return TypedList(alloc, CSSM_ACL_SUBJECT_TYPE_KEYCHAIN_PROMPT,
new(alloc) ListElement(alloc, description));
}
KeychainPromptAclSubject *KeychainPromptAclSubject::Maker::make(const TypedList &list) const
{
ListElement *params[1];
crack(list, 1, params, CSSM_LIST_ELEMENT_DATUM);
return new KeychainPromptAclSubject(interface, *params[0]);
}
KeychainPromptAclSubject *KeychainPromptAclSubject::Maker::make(Reader &pub, Reader &) const
{
char *description; pub(description);
return new KeychainPromptAclSubject(interface, description);
}
KeychainPromptAclSubject::KeychainPromptAclSubject(KeychainPromptInterface &ifc,
string descr)
: SimpleAclSubject(CSSM_ACL_SUBJECT_TYPE_KEYCHAIN_PROMPT, CSSM_SAMPLE_TYPE_KEYCHAIN_PROMPT),
interface(ifc), description(descr)
{
}
void KeychainPromptAclSubject::exportBlob(Writer::Counter &pub, Writer::Counter &priv)
{
pub(description.size() + 1);
}
void KeychainPromptAclSubject::exportBlob(Writer &pub, Writer &priv)
{
pub(description.c_str());
}