2 * Copyright (c) 2015-2019 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 Bartłomiej Grzelewski (b.grzelewski@samsung.com)
25 #include <generic-backend/gobj.h>
26 #include <generic-backend/encryption-params.h>
27 #include <ckm/ckm-type.h>
28 #include <crypto-backend.h>
34 // Data is very generic and does not say anything about content.
37 Data(const DataType &t, RawBuffer d) : type(t), data(std::move(d)) {}
39 RawBuffer data; // buffer will be better?
44 virtual GObjUPtr getObject(const Token &, const Password &) = 0;
45 virtual TokenPair generateAKey(const CryptoAlgorithm &,
47 const Password &) = 0;
48 virtual Token generateSKey(const CryptoAlgorithm &, const Password &) = 0;
51 * EncryptionParams parameter makes sense only on device with built-in key.
52 * EncryptionParams parameter is used for decryption of Data.
53 * If Data is not encrypted it's ok to pass empty EncryptionParams.
55 virtual Token import(const Data &, const Password &, const EncryptionParams &) = 0;
56 virtual void destroy(const Token &) = 0;
60 explicit GStore(CryptoBackend backendId) :
61 m_backendId(backendId)
65 CryptoBackend m_backendId;