Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
poseidon_permutation.test.cpp
Go to the documentation of this file.
1
2#ifdef STARKNET_GARAGA_FLAVORS
5#include "poseidon_params.hpp"
6#include <gtest/gtest.h>
7
8using namespace bb::starknet;
9
10namespace {
12}
13
14TEST(PoseidonPermutation, TestVectors)
15{
16 auto input = crypto::PoseidonStark252BaseFieldParams::TEST_VECTOR_INPUT;
17 auto expected = crypto::PoseidonStark252BaseFieldParams::TEST_VECTOR_OUTPUT;
18 auto result = crypto::PoseidonPermutation<crypto::PoseidonStark252BaseFieldParams>::permutation(input);
19
20 EXPECT_EQ(result, expected);
21}
22
23TEST(PoseidonPermutation, BasicTests)
24{
25 using fq = stark252::fq;
26
27 fq a = fq::random_element(&engine);
28 fq b = fq::random_element(&engine);
29 fq c = fq::random_element(&engine);
30
31 std::array<fq, 3> input1{ a, b, c };
32 std::array<fq, 3> input2{ c, b, a };
33
34 auto r0 = crypto::PoseidonPermutation<crypto::PoseidonStark252BaseFieldParams>::permutation(input1);
35 auto r1 = crypto::PoseidonPermutation<crypto::PoseidonStark252BaseFieldParams>::permutation(input1);
36 auto r2 = crypto::PoseidonPermutation<crypto::PoseidonStark252BaseFieldParams>::permutation(input2);
37
38 EXPECT_EQ(r0, r1);
39 EXPECT_NE(r0, r2);
40}
41
42TEST(PoseidonPermutation, ConsistencyCheck)
43{
44 using fq = stark252::fq;
45
46 fq a(std::string("9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789"));
47 fq b(std::string("9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789"));
48 fq c(std::string("0x9a807b615c4d3e2fa0b1c2d3e4f56789fedcba9876543210abcdef0123456789"));
49
50 std::array<fq, 3> input{ a, b, c };
51 auto result = crypto::PoseidonPermutation<crypto::PoseidonStark252BaseFieldParams>::permutation(input);
52
53 std::array<fq, 3> expected{
54 fq(std::string("0x03209a40f2b5e046337b5fae9e1e495dc3d9bcb5602ee9d4bd22aed772eab0f2")),
55 fq(std::string("0x04fbaa255051a602e8fcaf49614be34440da55ed42b3d8f33909ad0fbf8bce6a")),
56 fq(std::string("0x01655846c1e8dda470d0171d2d93efe9a71debadd42f9164e54ab90d70e04e48")),
57 };
58 EXPECT_EQ(result, expected);
59}
60#endif
TEST(acir_formal_proofs, uint_terms_add)
Tests 127-bit unsigned addition Verifies that the ACIR implementation of addition is correct Executio...
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