AuthorizationWalkers.h [plain text]
#if !defined(__AuthorizationWalkers__)
#define __AuthorizationWalkers__ 1
#include <Security/Authorization.h>
#include <Security/AuthorizationPlugin.h>
#include <Security/walkers.h>
#include <Security/cssmwalkers.h> // char * walker
namespace Security
{
namespace DataWalkers
{
template <class Action>
void walk(Action &operate, AuthorizationItem &item)
{
walk(operate, item.name);
operate(item.value, item.valueLength);
}
template <class Action>
AuthorizationItemSet *walk(Action &operate, AuthorizationItemSet * &itemSet)
{
operate(itemSet);
operate(itemSet->items, itemSet->count * sizeof(AuthorizationItem));
for (uint32 n = 0; n < itemSet->count; n++)
walk(operate, itemSet->items[n]);
return itemSet;
}
template <class Action>
void walk(Action &operate, AuthorizationValue &authvalue)
{
operate(authvalue.data, authvalue.length);
}
template <class Action>
AuthorizationValueVector *walk(Action &operate, AuthorizationValueVector * &valueVector)
{
operate(valueVector);
operate(valueVector->values, valueVector->count * sizeof(AuthorizationValue));
for (uint32 n = 0; n < valueVector->count; n++)
walk(operate, valueVector->values[n]);
return valueVector;
}
}
}
#endif