Use new classes to sign and verify messages.
[platform/core/security/key-manager.git] / src / manager / common / algo-param.cpp
1 /*
2  *  Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd All Rights Reserved
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  * @file       algo-param.cpp
18  * @author     Krzysztof Jackiewicz (k.jackiewicz@samsung.com)
19  * @version    1.0
20  */
21
22 #include <ckm/ckm-type.h>
23 #include <cassert>
24
25 namespace CKM
26 {
27
28 bool CryptoAlgorithm::BufferParam::getBuffer(RawBuffer& buffer) const
29 {
30     buffer = m_buffer;
31     return true;
32 }
33
34 CryptoAlgorithm::BaseParamPtr CryptoAlgorithm::BufferParam::create(const RawBuffer& buffer)
35 {
36     return BaseParamPtr(new CryptoAlgorithm::BufferParam(buffer));
37 }
38
39 bool CryptoAlgorithm::IntParam::getInt(uint64_t& value) const
40 {
41     value = m_int;
42     return true;
43 }
44
45 CryptoAlgorithm::BaseParamPtr CryptoAlgorithm::IntParam::create(uint64_t value)
46 {
47     return BaseParamPtr(new CryptoAlgorithm::IntParam(value));
48 }
49
50 template <>
51 bool CryptoAlgorithm::getParam(ParamName name, RawBuffer& value) const
52 {
53     auto param = m_params.find(name);
54     if (param == m_params.end())
55         return false;
56
57     assert(param->second);
58     return param->second->getBuffer(value);
59 }
60
61 template <>
62 bool CryptoAlgorithm::addParam(ParamName name, const RawBuffer& value)
63 {
64     return m_params.emplace(name, BufferParam::create(value)).second;
65 }
66
67 } // namespace CKM