Merge "Update deprecated libprivilege-control API functions." into tizen
[platform/framework/native/appfw.git] / src / security / pkcs / FSecPkcsInitialVector.cpp
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                FSecPkcsInitialVector.cpp
19  * @brief               This is the implementation file for InitialVector class.
20  *
21  * This header file contains the implementation of InitialVector class.
22  *
23  */
24
25 #include <unique_ptr.h>
26 #include <FBaseErrors.h>
27 #include <FBaseByteBuffer.h>
28 #include <FBaseResult.h>
29 #include <FBaseSysLog.h>
30 #include <FSecPkcsInitialVector.h>
31 #include "FSecPkcs_InitialVectorImpl.h"
32
33 using namespace Tizen::Base;
34
35 namespace Tizen { namespace Security { namespace Pkcs
36 {
37
38 InitialVector::InitialVector(void)
39         : __pInitialVectorImpl(null)
40 {
41
42 }
43
44 InitialVector::~InitialVector(void)
45 {
46         delete __pInitialVectorImpl;
47 }
48
49 result
50 InitialVector::Construct(const Tizen::Base::ByteBuffer& initialVector)
51 {
52         result r = E_SUCCESS;
53
54         SysAssertf(__pInitialVectorImpl == null,
55                            "Already constructed! Calling Construct() twice or more on a same instance is not allowed for this class");
56
57         __pInitialVectorImpl = new (std::nothrow) _InitialVectorImpl();
58         SysTryReturnResult(NID_SEC_CRYPTO, __pInitialVectorImpl != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory in insufficient.");
59
60         r = __pInitialVectorImpl->Construct(initialVector);
61         SysTryCatch(NID_SEC_CRYPTO, !IsFailed(r), , r, "[%s] Propagated.", GetErrorMessage(r));
62
63         return r;
64
65 CATCH:
66
67         delete __pInitialVectorImpl;
68         __pInitialVectorImpl = null;
69
70         return r;
71
72 }
73
74 IAlgorithmParameters*
75 InitialVector::CloneN(void) const
76 {
77         result r = E_SUCCESS;
78
79         ClearLastResult();
80
81         SysAssertf(__pInitialVectorImpl != null, "Not yet constructed. Reconstructor the object.");
82         SysAssertf(__pInitialVectorImpl->GetInitialVector().GetRemaining() > 0, "Not yet constructed. Construct () should be called before use.");
83
84         std::unique_ptr< InitialVector > pInitialVectorObj(new (std::nothrow) InitialVector());
85         SysTryReturn(NID_SEC_CRYPTO, pInitialVectorObj != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
86
87         r = pInitialVectorObj->Construct(__pInitialVectorImpl->GetInitialVector());
88         SysTryReturn(NID_SEC_CRYPTO, !IsFailed(r), null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
89
90         return pInitialVectorObj.release();
91 }
92
93 PkcsAlgorithmParameterType
94 InitialVector::GetType(void) const
95 {
96         SysAssertf(__pInitialVectorImpl != null, "Not yet constructed. Reconstructor the object.");
97
98         ClearLastResult();
99         return __pInitialVectorImpl->GetType();
100 }
101
102 const ByteBuffer&
103 InitialVector::GetInitialVector(void) const
104 {
105
106         ClearLastResult();
107
108         SysAssertf(__pInitialVectorImpl != null, "Not yet constructed. Reconstructor the object.");
109
110         return __pInitialVectorImpl->GetInitialVector();
111
112 }
113
114 bool
115 InitialVector::Equals(const Object& obj) const
116 {
117         SysAssertf(__pInitialVectorImpl != null, "Not yet constructed. Reconstructor the object.");
118
119         const InitialVector* pOther = dynamic_cast< const InitialVector* >(&obj);
120         if (pOther == null)
121         {
122                 return false;
123         }
124
125         return __pInitialVectorImpl->Equals(*pOther->__pInitialVectorImpl);
126 }
127
128 int
129 InitialVector::GetHashCode(void) const
130 {
131         SysAssertf(__pInitialVectorImpl != null, "Not yet constructed. Reconstructor the object.");
132
133         return __pInitialVectorImpl->GetHashCode();
134 }
135
136 ByteBuffer*
137 InitialVector::GetEncodedDataN(void) const
138 {
139         SysAssertf(__pInitialVectorImpl != null, "Not yet constructed. Reconstructor the object.");
140
141         result r = E_SUCCESS;
142
143         std::unique_ptr< ByteBuffer > pEncInitialVector(__pInitialVectorImpl->GetEncodedDataN());
144         SysTryReturn(NID_IO, pEncInitialVector != null, null, GetLastResult(), "[%s] Propagated.", GetErrorMessage(r));
145
146         return pEncInitialVector.release();
147
148 }
149
150
151 } } }