2 * Copyright (c) 2014 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.
16 * @file crypto-logic.h
17 * @author Sebastian Grabowski (s.grabowski@samsung.com)
18 * @author Bartlomiej Grzelewski (b.grzelewski@samsung.com)
20 * @brief Crypto module implementation.
25 #include <ckm/ckm-type.h>
26 #include <db-crypto.h>
33 CryptoLogic(const CryptoLogic &second) = delete;
34 CryptoLogic(CryptoLogic &&second);
35 CryptoLogic& operator=(CryptoLogic &&second);
36 CryptoLogic& operator=(const CryptoLogic &second) = delete;
38 virtual ~CryptoLogic(){}
40 void decryptRow(const Password &password, DB::Row &row);
41 void encryptRow(const Password &password, DB::Row &row);
43 bool haveKey(const Label &smackLabel);
44 void pushKey(const Label &smackLabel,
45 const RawBuffer &applicationKey);
46 void removeKey(const Label &smackLabel);
49 static const int ENCR_BASE64 = 1 << 0;
50 static const int ENCR_APPKEY = 1 << 1;
51 static const int ENCR_PASSWORD = 1 << 2;
53 std::map<Label, RawBuffer> m_keyMap;
55 RawBuffer generateRandIV() const;
56 RawBuffer passwordToKey(const Password &password,
57 const RawBuffer &salt,
58 size_t keySize) const;
60 void decBase64(RawBuffer &data);
61 void encBase64(RawBuffer &data);
62 bool equalDigests(RawBuffer &dig1, RawBuffer &dig2);