5#include <unordered_map>
12 SSLLib::RandomAPI rng;
20 ASSERT_TRUE(sid1.
defined() && sid2.
defined()) <<
"FAIL sid1 or sid2 is undefined";
21 ASSERT_EQ(sid1, sid2);
24 ASSERT_FALSE(sid1.
eq_weak(sid3)) <<
"FAIL sid1 ~== sid3";
25 ASSERT_FALSE(sid3.
eq_weak(sid1)) <<
"FAIL sid3 ~== sid1";
27 for (
int i = 1; i <= 4; ++i)
41 SSLLib::RandomAPI rng;
58 ASSERT_FALSE(ns.
defined()) <<
"FAIL default constructed SessionID is defined";
76 ASSERT_FALSE(a == b) <<
"test4: wrong, not equal";
77 ASSERT_TRUE(a.
eq_weak(b)) <<
"test4/1: wrong, weakly equal";
78 ASSERT_TRUE(a.
eq_weak(c)) <<
"test4/2: wrong, weakly equal";
79 ASSERT_TRUE(b.
eq_weak(c)) <<
"test4/3: wrong, weakly equal";
81 std::unordered_map<SessionID128, std::string> map;
82 const std::unordered_map<SessionID128, std::string> &cmap = map;
84 ASSERT_TRUE(b.
find_weak(map,
true)) <<
"test4/1: wrong, weak exists";
85 ASSERT_TRUE(d.
find_weak(map,
true)) <<
"test4/2: wrong, weak exists";
86 ASSERT_FALSE(a.
find_weak(map,
true)) <<
"test4/3: wrong, weak doesn't exist";
87 ASSERT_TRUE(a.
find_weak(map,
false)) <<
"test4/4: wrong, weak exists";
88 ASSERT_FALSE(x.
find_weak(map,
true)) <<
"test4: wrong, weak doesn't exist";
90 ASSERT_TRUE(s1) <<
"test4: can't find s1";
94 ASSERT_FALSE(s2) <<
"test4: shouldn't have found s2";
99 SSLLib::RandomAPI rng;
104 for (
size_t i = 0; i < 1000; ++i)
108 ASSERT_EQ(sid, sid_dec);
130 void dump(
const char *prefix)
const
132 std::cout << prefix <<
" : " <<
to_string() <<
'\n';
155 const std::string &nam =
"myname";
157 return "Name: " + nam +
" SessID: " + sid.
to_string();
164 EXPECT_EQ(
"Name: myname SessID: QkNERUZHSElKS0xNTk9QUQ..",
test(&sess));
165 EXPECT_EQ(
"Name: myname SessID: AAAAAAAAAAAAAAAAAAAAAA..",
test(
nullptr));
190 for (
size_t i = 0; i <
ITER; ++i)
const SessionID & get_token() const
Session(StrongRandomAPI &rng)
Abstract base class for random number generators.
virtual void rand_bytes(unsigned char *buf, size_t size)=0
Fill a buffer with random bytes.
std::string to_string() const
bool eq_weak(const SessionIDType< S > &other) const
const SessionIDType * find_weak(const UNORDERED_MAP &m, const bool conflict) const
Abstract base class for cryptographically strong random number generators.
static constexpr size_t SIZE
SessionID(StrongRandomAPI &rng)
void dump(const char *prefix) const
static void tryit(RandomAPI &rng, TokenEncryptDecrypt &encdec)