2 // Copyright (c) 2013 Samsung Electronics Co., Ltd.
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
8 // http://www.apache.org/licenses/LICENSE-2.0
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.
18 * @file FSecPkcsPkcs08Attribute.h
19 * @brief This is the header file for the %Pkcs08Attribute class.
21 * This header file contains the declarations of the %Pkcs08Attribute class.
24 #ifndef _FSEC_PKCS_PKCS_08_ATTRIBUTE_H_
25 #define _FSEC_PKCS_PKCS_08_ATTRIBUTE_H_
27 #include <FBaseByteBuffer.h>
28 #include <FBaseResult.h>
29 #include <FSecPkcsPkcs08AttributeValue.h>
31 namespace Tizen { namespace Security { namespace Pkcs
35 * @class Pkcs08Attribute
36 * @brief This class implements the functionalities specified by the %Pkcs08Attribute class.
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.
46 class _OSP_EXPORT_ Pkcs08Attribute
47 : public Tizen::Base::Object
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.
56 Pkcs08Attribute(void);
59 * This destructor overrides Tizen::Base::Object::~Object().
63 virtual ~Pkcs08Attribute(void);
66 * Initializes this instance of %Pkcs08Attribute with the Tizen::Base::ByteBuffer that contains the X.509 attribute @n
67 * structure in ASN.1 DER format.
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.
76 result Construct(const Tizen::Base::ByteBuffer& encodedData);
79 * Initializes this instance of %Pkcs08Attribute with the specified attribute type.
83 * @return An error code
84 * @param[in] attributeType The object identifier of a particular X.509 attribute type @n Object IDs (for example, oid for name is 2.5.4.41) are defined by standard attribute bodies.
85 * @exception E_SUCCESS The method is successful.
86 * @exception E_INVALID_ARG The specified input parameter is invalid.
88 result Construct(const Tizen::Base::String& attributeType);
91 * Gets the attribute type. @n
92 * The %GetAttributeType() method implements GetAttributeType that returns the attribute type of this attribute instance.
96 * @return Containing the object ID of attribute type in string format like 2.5.4.41
99 Tizen::Base::String GetAttributeType(void) const;
102 * Adds an attribute value in the attribute value list.
106 * @return An error code
107 * @param[in] attributeValue An instance of Pkcs08AttributeValue to add an attribute in the list
109 result AddAttributeValue(const Pkcs08AttributeValue& attributeValue);
112 * Removes an attribute value from the attribute value list.
116 * @return An error code
117 * @param[in] attributeValue An instance of Pkcs08AttributeValue to remove an attribute from the list
119 result RemoveAttributeValue(const Pkcs08AttributeValue& attributeValue);
122 * Returns an array list containing the attribute values of type Pkcs08AttributeValue.
126 * @return A reference to an ArrayList containing the list of attribute values
128 const Tizen::Base::Collection::ArrayList& GetAttributeValues(void) const;
131 * Gets the encoded form of Pkcs08Attribute.
132 * It is assumed that each %Pkcs08Attribute will have only a single form of encoding, for example ASN.1 DER.
136 * @return A pointer to the Tizen::Base::ByteBuffer class that contains the output, @n
137 * else @c null if an error occurs
139 * @exception E_SUCCESS The method is successful.
140 * @exception E_SYSTEM The method cannot proceed due to a severe system error.
141 * @remarks The specific error code can be accessed using the GetLastResult() method.
143 Tizen::Base::ByteBuffer* GetEncodedDataN(void) const;
146 // This copy constructor is intentionally declared as private to prohibit @n
147 // copying of objects by users.
150 Pkcs08Attribute(const Pkcs08Attribute& rhs);
152 // The implementation of this copy assignment operator is intentionally blank and @n
153 // declared as private to prohibit copying of objects.
156 Pkcs08Attribute& operator =(const Pkcs08Attribute& rhs);
159 class _Pkcs08AttributeImpl* __pPkcs08AttributeImpl;
160 friend class _Pkcs08AttributeImpl;
164 }}} // Tizen::Security::Pkcs
166 #endif // _FSEC_PKCS_PKCS_08_ATTRIBUTE_H_