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 FSecPkcsInitialVector.h
19 * @brief This is the header file for the %InitialVector class.
21 * This header file contains the declarations of the %InitialVector class.
24 #ifndef _FSEC_PKCS_INITIAL_VECTOR_H_
25 #define _FSEC_PKCS_INITIAL_VECTOR_H_
27 #include <FBaseByteBuffer.h>
28 #include <FSecPkcsIAlgorithmParameters.h>
29 #include <FSecPkcsTypes.h>
31 namespace Tizen { namespace Security { namespace Pkcs
35 * @class InitialVector
36 * @brief This class implements the functionalities specified by the %InitialVector class.
40 * The %InitialVector class implements the functionalities specified by the %InitialVector class.
41 * This class represents the Initial Vector parameter for symmetric ciphers such as DES, AES, DES_EDE.
42 * This %InitialVector parameters will be used by both PKCS05 and PKCS08 related classes at the time of encryption.
47 class _OSP_EXPORT_ InitialVector
48 : public virtual IAlgorithmParameters
49 , public Tizen::Base::Object
54 * The object is not fully constructed after this constructor is called. @n
55 * For full construction, the Construct() method must be called right after calling this constructor.
62 * This destructor overrides Tizen::Base::Object::~Object().
67 virtual ~InitialVector(void);
70 * Initializes this instance of %InitialVector with the specified input buffer.
74 * @return An error code
76 * @param[in] initialVector An instance of Tizen::Base::ByteBuffer holding the initial vector data
77 * @exception E_SUCCESS The method is successful.
78 * @exception E_INVALID_ARG The specified input parameter is invalid.
80 result Construct(const Tizen::Base::ByteBuffer& initialVector);
83 * Gets a copy of this instance.
87 * @return A pointer to IAlgorithmParameters containing the copy of this instance
88 * @remarks The specific error code can be accessed using the GetLastResult() method.
90 virtual IAlgorithmParameters* CloneN(void) const;
93 * Gets the algorithm parameter type enum value for Initial Vector.
97 * @return PkcsAlgorithmParameterType The enum value containing the @c PKCS_ALGO_PARAM_TYPE_IV value for Initial Vector parameter
100 virtual PkcsAlgorithmParameterType GetType(void) const;
103 * Checks whether the specified instance of %InitialVector equals the current instance.
107 * @return @c true if the specified instance equals the current instance, @n
109 * @param[in] rhs An instance of %InitialVector
110 * @exception E_SUCCESS The method is successful.
111 * @exception E_INVALID_ARG The specified input parameter is invalid.
112 * @remarks The specific error code can be accessed using the GetLastResult() method.
114 virtual bool Equals(const Tizen::Base::Object& rhs) const;
117 * Gets the hash value of the current instance of %InitialVector.
121 * @return An integer value indicating the hash value of the current instance of %InitialVector
123 virtual int GetHashCode(void) const;
126 * Gets an instance of Tizen::Base::ByteBuffer that contains the Initial Vector value.
130 * @return A reference to the Tizen::Base::ByteBuffer class that contains the output
132 const Tizen::Base::ByteBuffer& GetInitialVector(void) const;
135 * Gets the encoded form of the %InitialVector. @n
136 * It is assumed that each %InitialVector type will have only a single form of encoding that is DER encoding.
140 * @return A pointer to the DER encoded Tizen::Base::ByteBuffer, @n
141 * else @c null if an error occurs
142 * @exception E_SUCCESS The method is successful.
143 * @exception E_SYSTEM The method cannot proceed due to a severe system error.
144 * @remarks The specific error code can be accessed using the GetLastResult() method.
146 Tizen::Base::ByteBuffer* GetEncodedDataN(void) const;
149 // This copy constructor is intentionally declared as private to prohibit @n
150 // copying of objects by users.
153 InitialVector(const InitialVector& rhs);
155 // The implementation of this copy assignment operator is intentionally blank and @n
156 // declared as private to prohibit copying of objects.Use CloneN() to get an exact copy of the instance. @n
157 // Use Equals() to compare the contents of one instance with the other.
160 InitialVector& operator =(const InitialVector& rhs);
163 class _InitialVectorImpl* __pInitialVectorImpl;
164 friend class _InitialVectorImpl;
168 } } } //Tizen::Security::Pkcs
170 #endif //_FSEC_PKCS_INITIAL_VECTOR_H_