1 // Copyright (C) 2019 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
2 // This Source Code Form is subject to the terms of the Mozilla Public
3 // License, v. 2.0. If a copy of the MPL was not distributed with this
4 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
6 #include "../include/policy.hpp"
7 #include "../include/policy_manager_impl.hpp"
8 #include "../include/security_impl.hpp"
9
10 namespace vsomeip_v3 {
11
~policy_manager_impl()12 policy_manager_impl::~policy_manager_impl() {
13 }
14
15 std::shared_ptr<policy>
create_policy() const16 policy_manager_impl::create_policy() const {
17 return std::make_shared<policy>();
18 }
19
20 void
print_policy(const std::shared_ptr<policy> & _policy) const21 policy_manager_impl::print_policy(const std::shared_ptr<policy> &_policy) const {
22
23 if (_policy)
24 _policy->print();
25 }
26
27 bool
parse_uid_gid(const byte_t * & _buffer,uint32_t & _buffer_size,uint32_t & _uid,uint32_t & _gid) const28 policy_manager_impl::parse_uid_gid(const byte_t* &_buffer,
29 uint32_t &_buffer_size, uint32_t &_uid, uint32_t &_gid) const {
30
31 const auto its_policy = std::make_shared<policy>();
32 return (its_policy
33 && its_policy->deserialize_uid_gid(_buffer, _buffer_size, _uid, _gid));
34 }
35
36 bool
is_policy_update_allowed(uint32_t _uid,std::shared_ptr<policy> & _policy) const37 policy_manager_impl::is_policy_update_allowed(uint32_t _uid, std::shared_ptr<policy> &_policy) const {
38
39 auto its_security = security_impl::get();
40 return (its_security
41 && its_security->is_policy_update_allowed(_uid, _policy));
42 }
43
44 bool
is_policy_removal_allowed(uint32_t _uid) const45 policy_manager_impl::is_policy_removal_allowed(uint32_t _uid) const {
46
47 auto its_security = security_impl::get();
48 return (its_security
49 && its_security->is_policy_removal_allowed(_uid));
50 }
51
52 bool
parse_policy(const byte_t * & _buffer,uint32_t & _buffer_size,uint32_t & _uid,uint32_t & _gid,const std::shared_ptr<policy> & _policy) const53 policy_manager_impl::parse_policy(const byte_t* &_buffer, uint32_t &_buffer_size,
54 uint32_t &_uid, uint32_t &_gid, const std::shared_ptr<policy> &_policy) const {
55
56 auto its_security = security_impl::get();
57 return (its_security
58 && its_security->parse_policy(_buffer, _buffer_size, _uid, _gid, _policy));
59 }
60
61 } // namespace vsomeip_v3
62