1#include <vanetza/asn1/security_profile.hpp>
2#include VANETZA_ASN1_SECURITY_HEADER(EccP256CurvePoint.h)
3#include <vanetza/security/v3/asn1_conversions.hpp>
4#include <boost/variant/static_visitor.hpp>
15HashedId8 convert(
const Vanetza_Security_HashedId8_t& in)
18 std::memcpy(out.data(), in.buf, std::min(out.size(), in.size));
22void assign(OCTET_STRING_t* dst,
const ByteBuffer& src)
24 OCTET_STRING_fromBuf(dst,
reinterpret_cast<
const char*>(src.data()), src.size());
27asn1::EccP256CurvePoint to_asn1(
const EccPoint& point)
29 struct visitor :
public boost::static_visitor<asn1::EccP256CurvePoint>
33 asn1::EccP256CurvePoint result = {};
34 result.present = Vanetza_Security_EccP256CurvePoint_PR_x_only;
35 assign(&result.choice.x_only, x_only.x);
41 asn1::EccP256CurvePoint result = {};
42 result.present = Vanetza_Security_EccP256CurvePoint_PR_compressed_y_0;
43 assign(&result.choice.compressed_y_0, y0.x);
49 asn1::EccP256CurvePoint result = {};
50 result.present = Vanetza_Security_EccP256CurvePoint_PR_compressed_y_1;
51 assign(&result.choice.compressed_y_1, y1.x);
55 asn1::EccP256CurvePoint operator()(
const Uncompressed& unc)
const
57 asn1::EccP256CurvePoint result = {};
58 result.present = Vanetza_Security_EccP256CurvePoint_PR_uncompressedP256;
59 assign(&result.choice.uncompressedP256.x, unc.x);
60 assign(&result.choice.uncompressedP256.y, unc.y);
65 return boost::apply_visitor(visitor(), point);
70HashedId8 create_hashed_id8(
const Vanetza_Security_HashedId8_t& in)
73 std::memcpy(out.data(), in.buf, std::min(out.size(), in.size));
77HashedId3 create_hashed_id3(
const Vanetza_Security_HashedId3_t& in)
80 std::memcpy(out.data(), in.buf, std::min(out.size(), in.size));
Compressed_Lsb_Y_0 specified in TS 103 097 v1.2.1 in section 4.2.5.
Compressed_Lsb_Y_1 specified in TS 103 097 v1.2.1 in section 4.2.5.
Uncompressed specified in TS 103 097 v1.2.1 in section 4.2.5.
X_Coordinate_Only specified in TS 103 097 v1.2.1 in section 4.2.5.