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)
{
operate(item);
walk(operate, item.name);
operate.blob(item.value, item.valueLength);
}
template <class Action>
AuthorizationItemSet *walk(Action &operate, AuthorizationItemSet * &itemSet)
{
operate(itemSet);
operate.blob(itemSet->items, itemSet->count * sizeof(itemSet->items[0]));
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.blob(authvalue.data, authvalue.length);
}
template <class Action>
AuthorizationValueVector *walk(Action &operate, AuthorizationValueVector * &valueVector)
{
operate(valueVector);
operate.blob(valueVector->values, valueVector->count * sizeof(valueVector->values[0]));
for (uint32 n = 0; n < valueVector->count; n++)
walk(operate, valueVector->values[n]);
return valueVector;
}
} }
#endif