Merge "Update deprecated libprivilege-control API functions." into tizen
[platform/framework/native/appfw.git] / inc / FSecPkcsPkcs08Attribute.h
1 //
2 // Copyright (c) 2013 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Apache License, Version 2.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16
17 /**
18  * @file                FSecPkcsPkcs08Attribute.h
19  * @brief               This is the header file for the %Pkcs08Attribute class.
20  *
21  * This header file contains the declarations of the %Pkcs08Attribute class.
22  */
23
24 #ifndef _FSEC_PKCS_PKCS_08_ATTRIBUTE_H_
25 #define _FSEC_PKCS_PKCS_08_ATTRIBUTE_H_
26
27 #include <FBaseByteBuffer.h>
28 #include <FBaseResult.h>
29 #include <FSecPkcsPkcs08AttributeValue.h>
30
31 namespace Tizen { namespace Security { namespace Pkcs
32 {
33
34 /**
35  * @class               Pkcs08Attribute
36  * @brief               This class implements the functionalities specified by the %Pkcs08Attribute class.
37  *
38  * @since               2.1
39  *
40  * The %Pkcs08Attribute class implements the functionalities specified by the %Pkcs08Attribute class. An Attribute object consists
41  * of an attribute type (specified by an object identifier) and one or more attribute values. It acts as a
42  * container for adding, inserting, removing, and encoding X.509 AttributeValue.
43  *
44  */
45
46 class _OSP_EXPORT_ Pkcs08Attribute
47         : public Tizen::Base::Object
48 {
49 public:
50         /**
51          * The object is not fully constructed after this constructor is called. @n
52          * For full construction, the Construct() method must be called right after calling this constructor.
53          *
54          * @since       2.1
55          */
56         Pkcs08Attribute(void);
57
58         /**
59          * This destructor overrides Tizen::Base::Object::~Object().
60          *
61          * @since       2.1
62          */
63         virtual ~Pkcs08Attribute(void);
64
65         /**
66          * Initializes this instance of %Pkcs08Attribute with the specified Tizen::Base::ByteBuffer instance that contains the X.509 attribute 
67          * structure in ASN.1 DER format.
68          *
69          * @since               2.1
70          *
71          * @return              An error code
72          * @param[in]   encodedData                             The DER encoded Tizen::Base::ByteBuffer containing the X.509 attribute structure
73          * @exception   E_SUCCESS                               The method is successful.
74          * @exception   E_INVALID_ARG                   The specified input parameter is invalid.
75          */
76         result Construct(const Tizen::Base::ByteBuffer& encodedData);
77
78         /**
79          * Initializes this instance of %Pkcs08Attribute with the specified attribute type.
80          *
81          * @since               2.1
82          *
83          * @return              An error code
84          * @param[in]   attributeType                   The object identifier of a particular X.509 attribute type @n 
85          *                                                                              Object IDs (for example, oid for name is 2.5.4.41) are defined by standard attribute bodies.
86          * @exception   E_SUCCESS                               The method is successful.
87          * @exception   E_INVALID_ARG                   The specified input parameter is invalid.
88          */
89         result Construct(const Tizen::Base::String& attributeType);
90
91         /**
92          * Gets the attribute type. @n
93          * The %GetAttributeType() method implements GetAttributeType that returns the attribute type of this attribute instance.
94          *
95          * @since               2.1
96          *
97          * @return              The string with the object ID of attribute type like 2.5.4.41
98          *
99          */
100         Tizen::Base::String GetAttributeType(void) const;
101
102         /**
103          * Adds the attribute value in the attribute value list.
104          *
105          * @since               2.1
106          *
107          * @return              An error code
108          * @param[in]   attributeValue                  An instance of Pkcs08AttributeValue
109          */
110         result AddAttributeValue(const Pkcs08AttributeValue& attributeValue);
111
112         /**
113          * Removes the attribute value from the attribute value list.
114          *
115          * @since               2.1
116          *
117          * @return              An error code
118          * @param[in]   attributeValue                  An instance of Pkcs08AttributeValue
119          */
120         result RemoveAttributeValue(const Pkcs08AttributeValue& attributeValue);
121
122         /**
123          * Gets an array list containing the attribute values of type Pkcs08AttributeValue.
124          *
125          * @since               2.1
126          *
127          * @return              A reference to an ArrayList containing the list of attribute values
128          */
129         const Tizen::Base::Collection::ArrayList& GetAttributeValues(void) const;
130
131         /**
132          * Gets the encoded form of Pkcs08Attribute.
133          * It is assumed that each %Pkcs08Attribute will have only a single form of encoding, for example ASN.1 DER.
134          *
135          * @since               2.1
136          *
137          * @return              A pointer to the Tizen::Base::ByteBuffer class that contains the output, @n
138          *                              else @c null if an error occurs
139          *
140          * @exception   E_SUCCESS                                               The method is successful.
141          * @exception   E_SYSTEM                                                The method cannot proceed due to a severe system error.
142          * @remarks             The specific error code can be accessed using the GetLastResult() method.
143          */
144         Tizen::Base::ByteBuffer* GetEncodedDataN(void) const;
145
146 private:
147         // This copy constructor is intentionally declared as private to prohibit @n
148         // copying of objects by users.
149         //
150         // @since               2.1
151         Pkcs08Attribute(const Pkcs08Attribute& rhs);
152
153         // The implementation of this copy assignment operator is intentionally blank and @n
154         // declared as private to prohibit copying of objects.
155         //
156         // @since               2.1
157         Pkcs08Attribute& operator =(const Pkcs08Attribute& rhs);
158
159 private:
160         class _Pkcs08AttributeImpl* __pPkcs08AttributeImpl;
161         friend class _Pkcs08AttributeImpl;
162
163 }; //Pkcs08Attribute
164
165 }}} // Tizen::Security::Pkcs
166
167 #endif // _FSEC_PKCS_PKCS_08_ATTRIBUTE_H_