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
17 #ifndef __INTERNAL_ENCRYPTION_SERVER_H__
18 #define __INTERNAL_ENCRYPTION_SERVER_H__
23 #include "rmi/internal-encryption.h"
24 #include "key-server.h"
25 #include "engine/encryption/dmcrypt-engine.h"
30 typedef DMCryptEngine INTERNAL_ENGINE;
32 class InternalEncryptionServer final: public InternalEncryption {
34 InternalEncryptionServer(ServerContext& srv, KeyServer& key);
35 ~InternalEncryptionServer();
37 int setMountPassword(const std::string& password);
39 int mount(const std::vector<unsigned char> &mk, unsigned int options);
43 int prepareEncryption(unsigned int options);
44 int prepareDecryption();
46 int encrypt(const std::string& password, unsigned int options = 0);
47 int decrypt(const std::string& password);
51 int isPasswordInitialized();
52 int initPassword(const std::string& password);
53 int cleanPassword(const std::string& password);
54 int changePassword(const std::string& oldPW, const std::string& newPW);
55 int verifyPassword(const std::string& password);
59 unsigned int getSupportedOptions();
61 std::string getDevicePath() const;
64 int migrateMasterKey(const std::string& dev, const std::string& password);
65 int getStateInternal() const;
68 ServerContext& server;
70 std::unique_ptr<INTERNAL_ENGINE> engine;
77 #endif // __INTERNAL_ENCRYPTION_SERVER_H__