Vanetza
 
Loading...
Searching...
No Matches
delegating_security_entity.cpp
1#include <vanetza/common/its_aid.hpp>
2#include <vanetza/security/delegating_security_entity.hpp>
3#include <stdexcept>
4
5namespace vanetza
6{
7namespace security
8{
9
10DelegatingSecurityEntity::DelegatingSecurityEntity(std::unique_ptr<SignService> sign, std::unique_ptr<VerifyService> verify) :
11 m_sign_service(std::move(sign)),
12 m_verify_service(std::move(verify))
13{
14 if (!m_sign_service) {
15 throw std::invalid_argument("SN-SIGN service is not callable");
16 } else if (!m_verify_service) {
17 throw std::invalid_argument("SN-VERIFY service is not callable");
18 }
19}
20
22{
23 SignRequest sign_request;
24 sign_request.plain_message = std::move(encap_request.plaintext_payload);
25 sign_request.its_aid = encap_request.its_aid;
26
27 SignConfirm sign_confirm = m_sign_service->sign(std::move(sign_request));
28 EncapConfirm encap_confirm;
29 encap_confirm.sec_packet = std::move(sign_confirm.secured_message);
30 return encap_confirm;
31}
32
34{
35 VerifyConfirm verify_confirm = m_verify_service->verify(VerifyRequest { decap_request.sec_packet });
36 DecapConfirm decap_confirm;
37 decap_confirm.plaintext_payload = get_payload_copy(decap_request.sec_packet);
38 decap_confirm.report = static_cast<DecapReport>(verify_confirm.report);
39 decap_confirm.certificate_validity = verify_confirm.certificate_validity;
40 decap_confirm.its_aid = verify_confirm.its_aid;
41 decap_confirm.permissions = verify_confirm.permissions;
42 return decap_confirm;
43}
44
45} // namespace security
46} // namespace vanetza
EncapConfirm encapsulate_packet(EncapRequest &&encap_request) override
Creates a security envelope covering the given payload.
DelegatingSecurityEntity(std::unique_ptr< SignService > sign, std::unique_ptr< VerifyService > verify)
Create security entity from primitive services.
DecapConfirm decapsulate_packet(DecapRequest &&decap_request) override
Decapsulates the payload within a SecuredMessage.
STL namespace.
contains output of the verify process described in TS 102 723-8 v1.0.0 (2013-07) TS 102 636-4-1 v1....
contains input for verify process described in TS 102 723-8 v1.0.0 (2013-07) TS 102 636-4-1 v1....
contains output of the signing process described in TS 102 636-4-1 v1.2.3 (2015-01)