1+ #include < settingsManager.h>
2+
3+ /*
4+ This sketch is used to test library crypto capacibilities.
5+ All printable ASCII input is supported.
6+ Any whitespace characters are prohibited and will return an error.
7+ */
8+
9+ /* Basic setup only for purpose of generating test keys */
10+ const char * _name = " Testbench" ;
11+ const char * _user = " username" ;
12+ const char * _password = " password" ;
13+
14+ /*
15+ Kind of canary. It's intended to use with time, but any value
16+ that changes is fine.
17+ In case of using custom generated number set tokenLifespan to 0
18+ */
19+ const uint32_t validityBase = 100 ;
20+ const String _chipID = String(ESP.getChipId(), HEX);
21+ String _expiry;
22+
23+ settingsManager settings;
24+
25+ void setup () {
26+ Serial.begin (115200 );
27+ Serial.println (" Encryption test" );
28+
29+ /* Configuring settings */
30+ #ifdef DEBUG_INSECURE
31+ settings.serialDebug (&Serial);
32+ #endif
33+ settings.name (_name);
34+ settings.configUser (_user, _password);
35+ settings.tokenLifespan = 10 ;
36+ _expiry = String (settings.tokenLifespan );
37+
38+ /* First, let's check if it en- and decrypts correctly */
39+
40+ String enc = settings.encryptKey (validityBase);
41+ Serial.print (" Generated key:\t\t " );
42+ Serial.println (enc);
43+
44+ String dec = settings.decryptKey (enc);
45+ Serial.print (" Valid decrypted key:\t " );
46+ Serial.println (dec);
47+
48+ Serial.print (" Encrypting key:\t\t " );
49+ Serial.println (settings.validateEncryptedKey (enc, validityBase) == 0 ? " Pass" : " Fail" );
50+
51+ Serial.print (" Decrypting key:\t\t " );
52+ Serial.println (performTest (&settings, dec, validityBase, 0 ) ? " Pass" : " Fail" );
53+
54+ String test = dec;
55+ test[test.length () - 2 ] = ' ' ;
56+ Serial.print (" White characters:\t " );
57+ Serial.println (performTest (&settings, test, validityBase, 1 ) ? " Pass" : " Fail" );
58+
59+ Serial.print (" No timestamp:\t\t " );
60+ test = _name + String (" ++" ) + _chipID + String (" +" ) + _expiry;
61+ Serial.println (performTest (&settings, test, validityBase, 2 ) ? " Pass" : " Fail" );
62+
63+ test = _name + String (" +" ) + String (validityBase) + String (" +" ) + _chipID + String (" +" ) + _expiry;
64+ test[strlen (_name) + 2 ] = ' a' ;
65+ Serial.print (" Conversion error:\t " );
66+ Serial.println (performTest (&settings, test, validityBase, 2 ) ? " Pass" : " Fail" );
67+
68+ test = _name + String (" +" ) + String (validityBase) + String (" +" ) + _chipID + String (" +" ) + _expiry;
69+ test += ' a' ;
70+ Serial.print (" Conversion error 2:\t " );
71+ Serial.println (performTest (&settings, test, validityBase, 2 ) ? " Pass" : " Fail" );
72+
73+ test = _name + String (" +" ) + String (validityBase) + String (" +" ) + _chipID + String (" +a" ) + _expiry;
74+ test += ' a' ;
75+ Serial.print (" Conversion error 3:\t " );
76+ Serial.println (performTest (&settings, test, validityBase, 2 ) ? " Pass" : " Fail" );
77+
78+ test = _name + String (" +" ) + String (validityBase) + String (" +" ) + _chipID + String (" +" );
79+ Serial.print (" No token lifespan:\t " );
80+ Serial.println (performTest (&settings, test, validityBase, 2 ) ? " Pass" : " Fail" );
81+
82+ test = _name + String (" +" ) + String (validityBase) + String (" +" ) + _chipID + String (" +" ) + _expiry;
83+ test[strlen (_name) - 1 ] = ' !' ;
84+ Serial.print (" Invalid name:\t\t " );
85+ Serial.println (performTest (&settings, test, validityBase, 3 ) ? " Pass" : " Fail" );
86+
87+ test = String (_name).substring (1 ) + String (" +" ) + String (validityBase) + String (" +" ) + _chipID + String (" +" ) + _expiry;
88+ Serial.print (" Invalid name length:\t " );
89+ Serial.println (performTest (&settings, test, validityBase, 3 ) ? " Pass" : " Fail" );
90+
91+ test = String (" +" ) + String (validityBase) + String (" +" ) + _chipID + String (" +" ) + _expiry;
92+ Serial.print (" No name:\t\t " );
93+ Serial.println (performTest (&settings, test, validityBase, 3 ) ? " Pass" : " Fail" );
94+
95+ test = _name + String (" +" ) + String (validityBase) + String (" +" ) + _chipID.substring (1 ) + String (" +" ) + _expiry;
96+ Serial.print (" Invalid chip id length:\t " );
97+ Serial.println (performTest (&settings, test, validityBase, 4 ) ? " Pass" : " Fail" );
98+
99+ test = _name + String (" +" ) + String (validityBase) + String (" +FFFFF+" ) + _expiry;
100+ Serial.print (" Invalid chip id:\t " );
101+ Serial.println (performTest (&settings, test, validityBase, 4 ) ? " Pass" : " Fail" );
102+
103+ test = _name + String (" +" ) + String (validityBase) + String (" +z" ) + _chipID.substring (1 ) + String (" +" ) + _expiry;
104+ Serial.print (" Invalid chip id 2:\t " );
105+ Serial.println (performTest (&settings, test, validityBase, 4 ) ? " Pass" : " Fail" );
106+
107+ test = _name + String (" +" ) + String (validityBase) + String (" +" ) + _chipID.substring (0 , _chipID.length () - 2 ) + String (" A+" ) + _expiry;
108+ Serial.print (" Invalid chip id 3:\t " );
109+ Serial.println (performTest (&settings, test, validityBase, 4 ) ? " Pass" : " Fail" );
110+
111+ test = _name + String (" +" ) + String (validityBase) + String (" ++" ) + _expiry;
112+ Serial.print (" No chip id:\t\t " );
113+ Serial.println (performTest (&settings, test, validityBase, 4 ) ? " Pass" : " Fail" );
114+
115+ test = dec;
116+ Serial.print (" Invalid time:\t\t " );
117+ Serial.println (performTest (&settings, test, validityBase + (settings.tokenLifespan * 2 ), 5 ) ? " Pass" : " Fail" );
118+
119+ Serial.print (" Invalid time 2:\t\t " );
120+ Serial.println (performTest (&settings, test, validityBase - (settings.tokenLifespan * 2 ), 5 ) ? " Pass" : " Fail" );
121+ }
122+
123+ /* Try to use pointers whenever you can. It's really memory-consuming */
124+ bool performTest (settingsManager* set, String test, uint32_t t, uint8_t code) {
125+ return (set->validateKey (test, t) == code);
126+ }
127+
128+ void loop () {}
0 commit comments