OpenVPN 3 Core Library
Loading...
Searching...
No Matches
test_statickey.cpp
Go to the documentation of this file.
1#include "test_common.hpp"
2#include <iostream>
3
5
8
9using namespace openvpn;
10
11const char key_text[] = "-----BEGIN OpenVPN Static key V1-----\n"
12 "bd28e7947597929093371be4cf55fd78\n"
13 "98a70d0feffd389f70ea606635ed0371\n"
14 "57045695a770264ca0b2c251cb5c65fe\n"
15 "447d9b28855cf199bc3d9527e5f88a59\n"
16 "5cd213b5a71b47f11a915a77e3a7aed7\n"
17 "fa901d864150b64eb8d424383e5564dd\n"
18 "23e5b5fa8d16dfe2d37b946e8f22bb58\n"
19 "a5b904062bdcea35007c6825250a1c00\n"
20 "a2a54bd892fa20edbcfe4fe1fa8a786c\n"
21 "5c1102a3b53e294c729b37a24842f9c9\n"
22 "b72018b990aff058bbeeaf18f586cd5c\n"
23 "d70475328caed6d9662937a3c970f253\n"
24 "8495988c6c72c0ef8da720c342ac6405\n"
25 "a61da0fd18ddfd106aeee1736772baad\n"
26 "014703f549480c61080aa963f8b10a4a\n"
27 "f7591ead4710bd0e74c0b37e37c84374\n"
28 "-----END OpenVPN Static key V1-----\n";
29
30TEST(statickey, key1)
31{
32 // This test only tests if loading a static key works
34 sk.parse(std::string(key_text));
35 std::string rend = sk.render();
36}
37
38TEST(statickey, key2)
39{
40 StrongRandomAPI::Ptr rng(new SSLLib::RandomAPI());
41 const size_t key_len = 16;
42 StaticKey sk1;
43 sk1.init_from_rng(*rng, key_len);
44 const std::string s1 = sk1.render_to_base64();
45 StaticKey sk2;
46 sk2.parse_from_base64(s1, key_len);
47 const std::string s2 = sk2.render_to_base64();
48 ASSERT_EQ(s1, s2);
49}
50
51class StaticSinkBase : public RC<thread_unsafe_refcount>
52{
53 public:
55
56 virtual void init(StaticKey &&key) = 0;
57 virtual std::string dump() = 0;
58};
59
61{
62 public:
63 void init(StaticKey &&key) override
64 {
65 k = std::move(key);
66 }
67
68 std::string dump() override
69 {
70 return k.render_hex();
71 }
72
73 private:
75};
76
77TEST(statickey, move)
78{
80 sk.parse(std::string(key_text));
81
84 ASSERT_EQ(
85 "a2a54bd892fa20edbcfe4fe1fa8a786c5c1102a3b53e294c729b37a24842f9c9b72018b990aff058bbeeaf18f586cd5cd70475328caed6d9662937a3c970f253",
86 ss->dump());
87}
virtual std::string dump()=0
virtual void init(StaticKey &&key)=0
RCPtr< StaticSinkBase > Ptr
void init(StaticKey &&key) override
std::string dump() override
std::string render() const
void parse(const std::string &key_text)
StaticKey slice(unsigned int key_specifier) const
Reference count base class for objects tracked by RCPtr. Disallows copying and assignment.
Definition rc.hpp:912
std::string render_hex() const
void parse_from_base64(const std::string &b64, const size_t capacity)
void init_from_rng(StrongRandomAPI &rng, const size_t key_size)
std::string render_to_base64() const
TEST(statickey, key1)
const char key_text[]