Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
poseidon.test.cpp
Go to the documentation of this file.
1#include "poseidon.hpp"
3#include "poseidon_params.hpp"
4#include <gtest/gtest.h>
5
6#ifdef STARKNET_GARAGA_FLAVORS
7namespace {
9}
10using namespace bb::starknet;
11
12TEST(Poseidon, HashBasicTests)
13{
14 using fq = stark252::fq;
15
16 fq a = fq::random_element(&engine);
17 fq b = fq::random_element(&engine);
18 fq c = fq::random_element(&engine);
19 fq d = fq::random_element(&engine);
20
21 std::vector<fq> input1{ a, b, c, d };
22 std::vector<fq> input2{ d, c, b, a };
23
24 auto r0 = crypto::Poseidon<crypto::PoseidonStark252BaseFieldParams>::hash(input1);
25 auto r1 = crypto::Poseidon<crypto::PoseidonStark252BaseFieldParams>::hash(input1);
26 auto r2 = crypto::Poseidon<crypto::PoseidonStark252BaseFieldParams>::hash(input2);
27
28 EXPECT_EQ(r0, r1);
29 EXPECT_NE(r0, r2);
30}
31
32TEST(Poseidon, HashConsistencyCheck)
33{
34 using fq = stark252::fq;
35
36 fq a(std::string("9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789"));
37 fq b(std::string("9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789"));
38 fq c(std::string("0x9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789"));
39 fq d(std::string("0x9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789"));
40
41 std::vector<fq> input{ a, b, c, d };
42 auto result = crypto::Poseidon<crypto::PoseidonStark252BaseFieldParams>::hash(input);
43
44 fq expected(std::string("0x0494e3a5a8047943395f79e41f11ba73285be9aa930953fbad060c0649a7c79d"));
45
46 EXPECT_EQ(result, expected);
47}
48#else
49
50TEST(Poseidon, DisabledTests) {}
51#endif
FF a
FF b
numeric::RNG & engine
RNG & get_debug_randomness(bool reset, std::uint_fast64_t seed)
Definition engine.cpp:190
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
TEST(Poseidon, DisabledTests)