2 * Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd All Rights Reserved
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 * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com)
22 #include <data-type.h>
28 : m_dataType(BINARY_DATA)
31 DataType::DataType(Type data)
35 ThrowMsg(Exception::OutOfRange, "Invalid conversion from DataType to DBDataType");
38 DataType::DataType(KeyType key) {
40 case KeyType::KEY_RSA_PUBLIC: m_dataType = DataType::KEY_RSA_PUBLIC; break;
41 case KeyType::KEY_RSA_PRIVATE: m_dataType = DataType::KEY_RSA_PRIVATE; break;
42 case KeyType::KEY_DSA_PUBLIC: m_dataType = DataType::KEY_DSA_PUBLIC; break;
43 case KeyType::KEY_DSA_PRIVATE: m_dataType = DataType::KEY_DSA_PRIVATE; break;
44 case KeyType::KEY_ECDSA_PUBLIC: m_dataType = DataType::KEY_ECDSA_PUBLIC; break;
45 case KeyType::KEY_ECDSA_PRIVATE: m_dataType = DataType::KEY_ECDSA_PRIVATE; break;
46 case KeyType::KEY_AES: m_dataType = DataType::KEY_AES; break;
48 ThrowMsg(Exception::OutOfRange, "Invalid conversion from KeyType to DBDataType");
52 DataType::DataType(int data)
53 : m_dataType(static_cast<Type>(data))
56 ThrowMsg(Exception::OutOfRange, "Invalid conversion from int to DBDataType");
59 DataType::operator int () const {
60 return static_cast<int>(m_dataType);
63 DataType::operator KeyType () const {
65 case DataType::KEY_RSA_PUBLIC: return KeyType::KEY_RSA_PUBLIC;
66 case DataType::KEY_RSA_PRIVATE: return KeyType::KEY_RSA_PRIVATE;
67 case DataType::KEY_DSA_PUBLIC: return KeyType::KEY_DSA_PUBLIC;
68 case DataType::KEY_DSA_PRIVATE: return KeyType::KEY_DSA_PRIVATE;
69 case DataType::KEY_ECDSA_PRIVATE: return KeyType::KEY_ECDSA_PRIVATE;
70 case DataType::KEY_ECDSA_PUBLIC: return KeyType::KEY_ECDSA_PUBLIC;
71 case DataType::KEY_AES: return KeyType::KEY_AES;
73 ThrowMsg(Exception::OutOfRange, "Invalid conversion from DBDataType to KeyType");
77 bool DataType::operator==(const DataType &second) const {
78 return m_dataType == second.m_dataType;
81 bool DataType::isKey() const {
82 if (DB_KEY_FIRST <= m_dataType && DB_KEY_LAST >= m_dataType)
87 bool DataType::isChainCert() const {
88 if (DB_CHAIN_FIRST <= m_dataType && DB_CHAIN_LAST >= m_dataType)
93 bool DataType::isKeyPrivate() const {
97 case KEY_ECDSA_PRIVATE:
104 bool DataType::isKeyPublic() const {
105 switch (m_dataType) {
108 case KEY_ECDSA_PUBLIC:
115 bool DataType::isCertificate() const {
116 return m_dataType == CERTIFICATE;
119 bool DataType::isBinaryData() const {
120 return m_dataType == BINARY_DATA;
123 bool DataType::isInRange(int data) {
124 if (data < static_cast<int>(DB_FIRST))
126 if (data > static_cast<int>(DB_LAST))
131 DataType DataType::getChainDatatype(unsigned int index)
133 DataType result(static_cast<int>(index) + DB_CHAIN_FIRST);
135 if ( !result.isChainCert() )
136 ThrowMsg(Exception::OutOfRange, "Certificate number is out of range");