2 // Open Service Platform
3 // Copyright (c) 2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FSecPkcsInitialVector.h
20 * @brief This is the header file for the %InitialVector class.
22 * This header file contains the declarations of the %InitialVector class.
25 #ifndef _FSEC_PKCS_INITIAL_VECTOR_H_
26 #define _FSEC_PKCS_INITIAL_VECTOR_H_
28 #include <FBaseByteBuffer.h>
29 #include <FSecPkcsIAlgorithmParameters.h>
30 #include <FSecPkcsTypes.h>
32 namespace Tizen { namespace Security { namespace Pkcs
36 * @class InitialVector
37 * @brief This class implements the functionalities specified by the InitialVector class.
38 * This class represents the Initial Vector parameter for symmetric ciphers like DES, AES, DES_EDE.
39 * This InitialVector Parameters will be used by both Pkcs05 and Pkcs08 related classes at the time of encryption.
45 class _OSP_EXPORT_ InitialVector
46 : public virtual IAlgorithmParameters
47 , public Tizen::Base::Object
52 * The object is not fully constructed after this constructor is called. @n
53 * For full construction, the Construct() method must be called right after calling this constructor.
60 * This destructor overrides Tizen::Base::Object::~Object().
65 virtual ~InitialVector(void);
68 * Initializes this instance of %InitialVector with the specified input buffer.
72 * @return An error code
74 * @param[in] initialVector An instance of ByteBuffer, holding the initial vector data.
75 * @exception E_SUCCESS The method is successful.
76 * @exception E_INVALID_ARG The specified input parameter is invalid.
78 result Construct(const Tizen::Base::ByteBuffer& initialVector);
81 * Get copy of this instance.
85 * @return A pointer to IAlgorithmParameters, containing the copy of this instance.
86 * @remarks The specific error code can be accessed using the GetLastResult() method.
88 virtual IAlgorithmParameters* CloneN(void) const;
91 * Get the algorithm parameter type enum value for Initial Vector.
95 * @return PkcsAlgorithmParameterType Enum value containing the PKCS_ALGO_PARAM_TYPE_IV value for Initial vector parameter.
98 virtual PkcsAlgorithmParameterType GetType(void) const;
101 * Checks whether the specified instance of %InitialVector equals the current instance.
105 * @return @c true if the specified instance equals the current instance, @n
107 * @param[in] rhs An instance of %InitialVector
108 * @exception E_SUCCESS The method is successful.
109 * @exception E_INVALID_ARG The specified input parameter is invalid.
110 * @remarks The specific error code can be accessed using the GetLastResult() method.
112 virtual bool Equals(const Tizen::Base::Object& rhs) const;
115 * Gets the hash value of the current instance of %InitialVector.
119 * @return An integer value indicating the hash value of the current instance of %InitialVector
121 virtual int GetHashCode(void) const;
124 * Get the instance of byte buffer that contains the Initial vector value.
128 * @return A reference to the ByteBuffer class that contains the output.
130 const Tizen::Base::ByteBuffer& GetInitialVector(void) const;
133 * Gets the encoded form of the InitialVector. @n
134 * It is assumed that each InitialVector type will have only a single form of encoding that is DER encoding.
138 * @return Pointer to the DER encoded ByteBuffer, @n
139 * 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 InitialVector(const InitialVector& rhs);
153 // The implementation of this copy assignment operator is intentionally blank and @n
154 // declared as private to prohibit copying of objects.Use CloneN() to get an exact copy of the instance. @n
155 // Use Equals() to compare the contents of one instance with the other.
158 InitialVector& operator =(const InitialVector& rhs);
161 class _InitialVectorImpl* __pInitialVectorImpl;
162 friend class _InitialVectorImpl;
166 } } } //Tizen::Security::Pkcs
168 #endif //_FSEC_PKCS_INITIAL_VECTOR_H_