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";
63 SSLLib::RandomAPI rng;
77 ASSERT_FALSE(a == b) <<
"test4: wrong, not equal";
78 ASSERT_TRUE(a.
eq_weak(b)) <<
"test4/1: wrong, weakly equal";
79 ASSERT_TRUE(a.
eq_weak(c)) <<
"test4/2: wrong, weakly equal";
80 ASSERT_TRUE(b.
eq_weak(c)) <<
"test4/3: wrong, weakly equal";
82 std::unordered_map<SessionID128, std::string> map;
83 const std::unordered_map<SessionID128, std::string> &cmap = map;
85 ASSERT_TRUE(b.
find_weak(map,
true)) <<
"test4/1: wrong, weak exists";
86 ASSERT_TRUE(d.
find_weak(map,
true)) <<
"test4/2: wrong, weak exists";
87 ASSERT_FALSE(a.
find_weak(map,
true)) <<
"test4/3: wrong, weak doesn't exist";
88 ASSERT_TRUE(a.
find_weak(map,
false)) <<
"test4/4: wrong, weak exists";
89 ASSERT_FALSE(x.
find_weak(map,
true)) <<
"test4: wrong, weak doesn't exist";
91 ASSERT_TRUE(s1) <<
"test4: can't find s1";
95 ASSERT_FALSE(s2) <<
"test4: shouldn't have found s2";
100 SSLLib::RandomAPI rng;
105 for (
size_t i = 0; i < 1000; ++i)
109 ASSERT_EQ(sid, sid_dec);
131 void dump(
const char *prefix)
const
133 std::cout << prefix <<
" : " <<
to_string() << std::endl;
156 const std::string &nam =
"myname";
158 return "Name: " + nam +
" SessID: " + sid.
to_string();
165 EXPECT_EQ(
"Name: myname SessID: QkNERUZHSElKS0xNTk9QUQ..",
test(&sess));
166 EXPECT_EQ(
"Name: myname SessID: AAAAAAAAAAAAAAAAAAAAAA..",
test(
nullptr));
191 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)