#ifndef ECDSA256_HPP_IOXLJFVZ #define ECDSA256_HPP_IOXLJFVZ #include #include #include namespace vanetza { namespace security { // forward declaration struct Uncompressed; // do not use ecdsa256 for new v3 code, only for legacy v2 security! namespace ecdsa256 { constexpr unsigned digest_octets = 32; struct PublicKey { std::array x; std::array y; }; bool operator==(const PublicKey& lhs, const PublicKey& rhs); bool operator!=(const PublicKey& lhs, const PublicKey& rhs); struct PrivateKey { std::array key; }; bool operator==(const PrivateKey& lhs, const PrivateKey& rhs); bool operator!=(const PrivateKey& lhs, const PrivateKey& rhs); struct KeyPair { PrivateKey private_key; PublicKey public_key; }; /** * Create generic public key from uncompressed ECC point * \param unc Uncompressed ECC point * \return public key */ PublicKey create_public_key(const Uncompressed&); } // namespace ecdsa256 } // namespace security } // namespace vanetza namespace std { template<> struct hash { size_t operator()(const vanetza::security::ecdsa256::PublicKey&) const; }; template<> struct hash { size_t operator()(const vanetza::security::ecdsa256::PrivateKey&) const; }; } // namespace std #endif /* ECDSA256_HPP_IOXLJFVZ */