1#include <vanetza/common/its_aid.hpp>
2#include <vanetza/common/runtime.hpp>
3#include <vanetza/security/v2/basic_elements.hpp>
4#include <vanetza/security/backend.hpp>
5#include <vanetza/security/v3/hash.hpp>
6#include <vanetza/security/v3/sign_service.hpp>
7#include <vanetza/security/v3/secured_message.hpp>
17 m_certificates(provider), m_backend(backend), m_policy(policy), m_validator(validator)
21SignConfirm StraightSignService::sign(SignRequest&& request)
23 const auto& signing_cert = m_certificates.own_certificate();
24 const auto hash_algo = specified_hash_algorithm(signing_cert.get_verification_key_type());
26 SecuredMessage secured_message = SecuredMessage::with_signed_data();
27 secured_message.set_hash_id(hash_algo);
28 secured_message.set_payload(convert_to_payload(request.plain_message));
29 m_policy.prepare_header(request, secured_message);
31 if (m_validator.valid_for_signing(signing_cert, request.its_aid) != CertificateValidator::Verdict::Valid) {
32 return SignConfirm::failure(SignConfirmError::No_Certificate);
35 ByteBuffer digest = calculate_message_hash(m_backend, hash_algo, secured_message.signing_payload(), signing_cert);
36 Signature signature = m_backend.sign_digest(m_certificates.own_private_key(), digest);
37 secured_message.set_signature(signature);
38 return SignConfirm::success(std::move(secured_message));
48 SecuredMessage secured_message = SecuredMessage::with_signed_data();
50 payload = convert_to_payload(request.plain_message);
51 secured_message.set_payload(payload);
52 secured_message.set_dummy_signature();
53 secured_message.set_its_aid(request.its_aid);
54 secured_message.set_generation_time(vanetza::security::v2::convert_time64(m_runtime.
now()));
55 secured_message->content->choice.signedData->signer.present = Vanetza_Security_SignerIdentifier_PR_self;
57 return SignConfirm::success(std::move(secured_message));
virtual Clock::time_point now() const =0
DummySignService(const Runtime &rt)