Vanetza
Loading...
Searching...
No Matches
hash.hpp
1#pragma once
2#include <vanetza/common/byte_buffer.hpp>
3#include <vanetza/security/hash_algorithm.hpp>
4#include <vanetza/security/key_type.hpp>
5
6namespace vanetza
7{
8namespace security
9{
10
11// forward declarations
12class Backend;
13
14namespace v3
15{
16
17// forward declarations
18class CertificateView;
19
20/**
21 * Calculate message hash (combination of hashes).
22 *
23 * This function creates the message hash according to IEEE 1609.2 cause 5.3.1.2.2
24 * for verification type "certificate", i.e. not "self-signed" messages.
25 *
26 * \param backend backend for cryptographic operations
27 * \param algo hash algorithm
28 * \param data message payload (data to be signed)
29 * \param signing certificate used for signing
30 * \return message digest
31 */
32ByteBuffer calculate_message_hash(Backend&, HashAlgorithm, const ByteBuffer& data, const CertificateView& signing);
33
34/**
35 * Determine the hash algorithm for a given key type.
36 * \see IEEE 1609.2 clause 5.3.1.2.2 rule a)
37 * \param key_type key type
38 * \return suitable hash algorithm
39 */
40HashAlgorithm specified_hash_algorithm(KeyType key_type);
41
42} // namespace v3
43} // namespace security
44} // namespace vanetza
virtual const PositionFix & position_fix()=0
virtual Clock::time_point now() const =0
static CertificateValidity valid()
Create CertificateValidity signalling a valid certificate This method is equivalent to default constr...
CertificateInvalidReason reason() const
Get reason for certificate invalidity This call is only safe if reason is available,...
void insert(const Certificate &certificate)
std::list< Certificate > lookup(const HashedId8 &id, SubjectType type)
virtual const ecdsa256::PrivateKey & own_private_key()=0
virtual const Certificate & own_certificate()=0
virtual std::list< Certificate > own_chain()=0
virtual CertificateValidity check_certificate(const Certificate &certificate)=0
void request_unrecognized_certificate(HashedId8 id) override
std::list< HeaderField > prepare_header(const SignRequest &request, CertificateProvider &certificate_provider) override
IntX specified in TS 103 097 v1.2.1, section 4.2.1.
Definition int_x.hpp:21
virtual void request_unrecognized_certificate(HashedId8 id)=0
virtual std::list< HeaderField > prepare_header(const SignRequest &req, CertificateProvider &certprvd)=0
bool is_known(const HashedId8 &digest) const
bool announce(const HashedId8 &digest)
const Certificate * lookup(const HashedId8 &digest) const
virtual CertificateCache & cache()=0
virtual const PrivateKey & own_private_key()=0
virtual const Certificate & own_certificate()=0
virtual Verdict valid_for_signing(const CertificateView &certificate, ItsAid app)=0
Verdict valid_for_signing(const CertificateView &, ItsAid) override
Verdict valid_for_signing(const CertificateView &, ItsAid) override
virtual void discard_p2p_request(HashedId3 id)=0
virtual void enqueue_p2p_request(HashedId3 id)=0
virtual void request_unrecognized_certificate(HashedId8 id)=0
described in TS 103 097 v1.2.1 (2015-06), section 6.1
SecuredMessage as specified in TS 103 097 v1.2.1, section 5.1.
const TrailerField * trailer_field(TrailerFieldType type) const