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 specified Tizen::Base::ByteBuffer instance that contains the X.509 attribute
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
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.
89 result Construct(const Tizen::Base::String& attributeType);
92 * Gets the attribute type. @n
93 * The %GetAttributeType() method implements GetAttributeType that returns the attribute type of this attribute instance.
97 * @return The string with the object ID of attribute type like 2.5.4.41
100 Tizen::Base::String GetAttributeType(void) const;
103 * Adds the attribute value in the attribute value list.
107 * @return An error code
108 * @param[in] attributeValue An instance of Pkcs08AttributeValue
110 result AddAttributeValue(const Pkcs08AttributeValue& attributeValue);
113 * Removes the attribute value from the attribute value list.
117 * @return An error code
118 * @param[in] attributeValue An instance of Pkcs08AttributeValue
120 result RemoveAttributeValue(const Pkcs08AttributeValue& attributeValue);
123 * Gets an array list containing the attribute values of type Pkcs08AttributeValue.
127 * @return A reference to an ArrayList containing the list of attribute values
129 const Tizen::Base::Collection::ArrayList& GetAttributeValues(void) const;
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.
137 * @return A pointer to the Tizen::Base::ByteBuffer class that contains the output, @n
138 * else @c null if an error occurs
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.
144 Tizen::Base::ByteBuffer* GetEncodedDataN(void) const;
147 // This copy constructor is intentionally declared as private to prohibit @n
148 // copying of objects by users.
151 Pkcs08Attribute(const Pkcs08Attribute& rhs);
153 // The implementation of this copy assignment operator is intentionally blank and @n
154 // declared as private to prohibit copying of objects.
157 Pkcs08Attribute& operator =(const Pkcs08Attribute& rhs);
160 class _Pkcs08AttributeImpl* __pPkcs08AttributeImpl;
161 friend class _Pkcs08AttributeImpl;
165 }}} // Tizen::Security::Pkcs
167 #endif // _FSEC_PKCS_PKCS_08_ATTRIBUTE_H_