2
* Copyright (C) 2011 Apple Inc. All rights reserved.
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions
7
* 1. Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* 2. Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
13
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23
* THE POSSIBILITY OF SUCH DAMAGE.
26
#ifndef SecKeychainItemRequestData_h
27
#define SecKeychainItemRequestData_h
29
#if USE(SECURITY_FRAMEWORK)
31
#include "DataReference.h"
32
#include "KeychainAttribute.h"
33
#include <Security/Security.h>
34
#include <wtf/OwnArrayPtr.h>
35
#include <wtf/RetainPtr.h>
36
#include <wtf/ThreadSafeRefCounted.h>
37
#include <wtf/Vector.h>
40
class ArgumentDecoder;
41
class ArgumentEncoder;
46
class SecKeychainItemRequestData {
55
SecKeychainItemRequestData();
56
SecKeychainItemRequestData(Type, SecKeychainItemRef, SecKeychainAttributeList*);
57
SecKeychainItemRequestData(Type, SecKeychainItemRef, SecKeychainAttributeList*, UInt32 length, const void* data);
58
SecKeychainItemRequestData(Type, SecItemClass, SecKeychainAttributeList*, UInt32 length, const void* data);
59
~SecKeychainItemRequestData();
61
void encode(CoreIPC::ArgumentEncoder&) const;
62
static bool decode(CoreIPC::ArgumentDecoder*, SecKeychainItemRequestData&);
64
Type type() const { return m_type; }
66
SecKeychainItemRef keychainItem() const { return m_keychainItem.get(); }
67
SecItemClass itemClass() const { return m_itemClass; }
68
UInt32 length() const { return m_dataReference.size(); }
69
const void* data() const { return m_dataReference.data(); }
71
SecKeychainAttributeList* attributeList() const;
74
void initializeWithAttributeList(SecKeychainAttributeList*);
77
RetainPtr<SecKeychainItemRef> m_keychainItem;
78
SecItemClass m_itemClass;
79
CoreIPC::DataReference m_dataReference;
81
Vector<KeychainAttribute> m_keychainAttributes;
83
struct Attributes : public ThreadSafeRefCounted<Attributes> {
84
mutable OwnPtr<SecKeychainAttributeList> m_attributeList;
85
mutable OwnArrayPtr<SecKeychainAttribute> m_attributes;
87
RefPtr<Attributes> m_attrs;
92
#endif // USE(SECURITY_FRAMEWORK)
94
#endif // SecKeychainItemRequestData_h