SecKeychainItemRequestData.h [plain text]
#ifndef SecKeychainItemRequestData_h
#define SecKeychainItemRequestData_h
#include "DataReference.h"
#include "KeychainAttribute.h"
#include <Security/Security.h>
#include <wtf/OwnArrayPtr.h>
#include <wtf/RetainPtr.h>
#include <wtf/ThreadSafeRefCounted.h>
#include <wtf/Vector.h>
namespace CoreIPC {
class ArgumentDecoder;
class ArgumentEncoder;
}
namespace WebKit {
class SecKeychainItemRequestData {
public:
enum Type {
Invalid,
CopyContent,
CreateFromContent,
ModifyContent,
};
SecKeychainItemRequestData();
SecKeychainItemRequestData(Type, SecKeychainItemRef, SecKeychainAttributeList*);
SecKeychainItemRequestData(Type, SecKeychainItemRef, SecKeychainAttributeList*, UInt32 length, const void* data);
SecKeychainItemRequestData(Type, SecItemClass, SecKeychainAttributeList*, UInt32 length, const void* data);
~SecKeychainItemRequestData();
void encode(CoreIPC::ArgumentEncoder*) const;
static bool decode(CoreIPC::ArgumentDecoder*, SecKeychainItemRequestData&);
Type type() const { return m_type; }
SecKeychainItemRef keychainItem() const { return m_keychainItem.get(); }
SecItemClass itemClass() const { return m_itemClass; }
UInt32 length() const { return m_dataReference.size(); }
const void* data() const { return m_dataReference.data(); }
SecKeychainAttributeList* attributeList() const;
private:
void initializeWithAttributeList(SecKeychainAttributeList*);
Type m_type;
RetainPtr<SecKeychainItemRef> m_keychainItem;
SecItemClass m_itemClass;
CoreIPC::DataReference m_dataReference;
Vector<KeychainAttribute> m_keychainAttributes;
struct Attributes : public ThreadSafeRefCounted<Attributes> {
mutable OwnPtr<SecKeychainAttributeList> m_attributeList;
mutable OwnArrayPtr<SecKeychainAttribute> m_attributes;
};
RefPtr<Attributes> m_attrs;
};
}
#endif // SecKeychainItemRequestData_h