2 * Copyright (c) 2016 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
17 #ifndef __DMCRYPT_ENGINE_H__
18 #define __DMCRYPT_ENGINE_H__
24 #include "progress-bar.h"
28 class DMCryptEngine final {
30 DMCryptEngine(const std::string &src, const std::string &dest, const ProgressBar &prgsBar);
31 DMCryptEngine(const DMCryptEngine &) = delete;
32 DMCryptEngine(DMCryptEngine &&) = delete;
35 DMCryptEngine &operator=(const DMCryptEngine &) = delete;
36 DMCryptEngine &operator=(DMCryptEngine &&) = delete;
38 const std::string &getSource()
43 const std::string &getDestination()
48 typedef std::vector<unsigned char> data;
50 void mount(const data &key, unsigned int options);
54 void encrypt(const data &key, unsigned int options);
55 void decrypt(const data &key, unsigned int options);
58 const data getKeyMeta();
59 void setKeyMeta(const data &data);
62 unsigned int getSupportedOptions();
65 std::string source, destination;
67 std::atomic<bool> mounted;
71 #endif // __DMCRYPT_ENGINE_H__