Add scheme encryption test db generator
[platform/core/security/key-manager.git] / tests / encryption-scheme / smack-access.cpp
1 /*
2  *  Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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
15  */
16 /*
17  * @file       smack-access.cpp
18  * @author     Bartlomiej Grzelewski (b.grzelewski@samsung.com)
19  * @author     Krzysztof Jackiewicz (k.jackiewicz@samsung.com)
20  * @version    1.0
21  */
22
23 #include <stdexcept>
24
25 #include <smack-access.h>
26
27 #include <sys/smack.h>
28
29 SmackAccess::SmackAccess() : m_handle(nullptr)
30 {
31     if(0 != smack_accesses_new(&m_handle))
32         throw std::runtime_error("smack_accesses_new failed");
33 }
34
35 void SmackAccess::add(
36     const std::string &subject,
37     const std::string &object,
38     const std::string &rights)
39 {
40     if(0 != smack_accesses_add(m_handle, subject.c_str(), object.c_str(), rights.c_str()))
41         throw std::runtime_error("smack_accesses_add failed");
42 }
43
44 void SmackAccess::apply() {
45     if(0 != smack_accesses_apply(m_handle))
46         throw std::runtime_error("smack_accesses_apply failed");
47 }
48
49 SmackAccess::~SmackAccess() {
50     if (m_handle)
51         smack_accesses_free(m_handle);
52 }