re structure
This commit is contained in:
21
lib/sha1/LICENSE
Normal file
21
lib/sha1/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 Weravech
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
59
lib/sha1/README.md
Normal file
59
lib/sha1/README.md
Normal file
@@ -0,0 +1,59 @@
|
||||
Sourced from https://github.com/Netthaw/TOTP-MCU
|
||||
|
||||
TOTP Pure C Library for ALL MCU
|
||||
====================
|
||||
|
||||
Library to generate Time-based One-Time Passwords.
|
||||
|
||||
Implements the Time-based One-Time Password algorithm specified in [RFC 6238](https://tools.ietf.org/html/rfc6238).
|
||||
Supports different time steps and is compatible with tokens that use the same standard (including software ones, like the Google Authenticator app).
|
||||
|
||||
Tested on MCUs: MSP430, RP2040
|
||||
|
||||
Installation & usage:
|
||||
--------------------
|
||||
First include header to your file
|
||||
```
|
||||
#include <totp.h>
|
||||
```
|
||||
After included, define key ex. Key is ```MyLegoDoor```
|
||||
- Note: The format of hmacKey is array of hexadecimal bytes.
|
||||
- Most websites provide the key encoded in base32 - RFC3548/RFC4648, either upper or lower case. You can use [this site](https://cryptii.com/pipes/base32-to-hex) to convert the base32 string to hex (make sure you upcase it first if it's lowercase and remove all whitespaces).
|
||||
```
|
||||
uint8_t hmacKey[] = {0x4d, 0x79, 0x4c, 0x65, 0x67, 0x6f, 0x44, 0x6f, 0x6f, 0x72}; // Secret key
|
||||
```
|
||||
Instantiate the TOTP class by providing the secret hmacKey, the length of the hmacKey and the Timestep between codes.
|
||||
```
|
||||
TOTP(hmacKey, 10, 30); // Secret key, Secret key length, Timestep (30s)
|
||||
```
|
||||
Use the ```getCodeFromTimestamp()``` function to get a TOTP from a unix epoch timestamp
|
||||
```
|
||||
uint32_t newCode = getCodeFromTimestamp(1557414000); // Current timestamp since Unix epoch in seconds
|
||||
```
|
||||
Or ```getCodeFromTimeStruct()``` if you want to get a TOTP from a tm struct (Time Struct in C),
|
||||
```
|
||||
struct tm datetime;
|
||||
datetime.tm_hour = 9;
|
||||
datetime.tm_min = 0;
|
||||
datetime.tm_sec = 0;
|
||||
datetime.tm_mday = 13;
|
||||
datetime.tm_mon = 5;
|
||||
datetime.tm_year = 2019;
|
||||
uint32_t newCode = getCodeFromTimeStruct(datetime);
|
||||
```
|
||||
|
||||
If the provided unix timestamp isn't in UTC±0, use ```setTimezone()``` before ```getCodeFromTimestamp()``` or ```getCodeFromTimeStruct()``` to offset the time.
|
||||
|
||||
```
|
||||
setTimezone(9); // Set timezone +9 Japan
|
||||
```
|
||||
|
||||
You can see an example in blink.c
|
||||
|
||||
Thanks to:
|
||||
----------
|
||||
|
||||
* Jose Damico, https://github.com/damico/ARDUINO-OATH-TOKEN
|
||||
* Peter Knight, https://github.com/Cathedrow/Cryptosuite
|
||||
* Maniacbug, https://github.com/maniacbug/Cryptosuite
|
||||
* lucadentella, https://github.com/lucadentella/TOTP-Arduino
|
@@ -1,5 +1,5 @@
|
||||
#include <string.h>
|
||||
#include "sha1.h"
|
||||
#include "sha1.hpp"
|
||||
|
||||
#define SHA1_K0 0x5a827999
|
||||
#define SHA1_K20 0x6ed9eba1
|
21
lib/totp/LICENSE
Normal file
21
lib/totp/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 Weravech
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
59
lib/totp/README.md
Normal file
59
lib/totp/README.md
Normal file
@@ -0,0 +1,59 @@
|
||||
Sourced from https://github.com/Netthaw/TOTP-MCU
|
||||
|
||||
TOTP Pure C Library for ALL MCU
|
||||
====================
|
||||
|
||||
Library to generate Time-based One-Time Passwords.
|
||||
|
||||
Implements the Time-based One-Time Password algorithm specified in [RFC 6238](https://tools.ietf.org/html/rfc6238).
|
||||
Supports different time steps and is compatible with tokens that use the same standard (including software ones, like the Google Authenticator app).
|
||||
|
||||
Tested on MCUs: MSP430, RP2040
|
||||
|
||||
Installation & usage:
|
||||
--------------------
|
||||
First include header to your file
|
||||
```
|
||||
#include <totp.h>
|
||||
```
|
||||
After included, define key ex. Key is ```MyLegoDoor```
|
||||
- Note: The format of hmacKey is array of hexadecimal bytes.
|
||||
- Most websites provide the key encoded in base32 - RFC3548/RFC4648, either upper or lower case. You can use [this site](https://cryptii.com/pipes/base32-to-hex) to convert the base32 string to hex (make sure you upcase it first if it's lowercase and remove all whitespaces).
|
||||
```
|
||||
uint8_t hmacKey[] = {0x4d, 0x79, 0x4c, 0x65, 0x67, 0x6f, 0x44, 0x6f, 0x6f, 0x72}; // Secret key
|
||||
```
|
||||
Instantiate the TOTP class by providing the secret hmacKey, the length of the hmacKey and the Timestep between codes.
|
||||
```
|
||||
TOTP(hmacKey, 10, 30); // Secret key, Secret key length, Timestep (30s)
|
||||
```
|
||||
Use the ```getCodeFromTimestamp()``` function to get a TOTP from a unix epoch timestamp
|
||||
```
|
||||
uint32_t newCode = getCodeFromTimestamp(1557414000); // Current timestamp since Unix epoch in seconds
|
||||
```
|
||||
Or ```getCodeFromTimeStruct()``` if you want to get a TOTP from a tm struct (Time Struct in C),
|
||||
```
|
||||
struct tm datetime;
|
||||
datetime.tm_hour = 9;
|
||||
datetime.tm_min = 0;
|
||||
datetime.tm_sec = 0;
|
||||
datetime.tm_mday = 13;
|
||||
datetime.tm_mon = 5;
|
||||
datetime.tm_year = 2019;
|
||||
uint32_t newCode = getCodeFromTimeStruct(datetime);
|
||||
```
|
||||
|
||||
If the provided unix timestamp isn't in UTC±0, use ```setTimezone()``` before ```getCodeFromTimestamp()``` or ```getCodeFromTimeStruct()``` to offset the time.
|
||||
|
||||
```
|
||||
setTimezone(9); // Set timezone +9 Japan
|
||||
```
|
||||
|
||||
You can see an example in blink.c
|
||||
|
||||
Thanks to:
|
||||
----------
|
||||
|
||||
* Jose Damico, https://github.com/damico/ARDUINO-OATH-TOKEN
|
||||
* Peter Knight, https://github.com/Cathedrow/Cryptosuite
|
||||
* Maniacbug, https://github.com/maniacbug/Cryptosuite
|
||||
* lucadentella, https://github.com/lucadentella/TOTP-Arduino
|
@@ -1,5 +1,5 @@
|
||||
#include "totp.h"
|
||||
#include "sha1.h"
|
||||
#include <sha1.hpp>
|
||||
#include "totp.hpp"
|
||||
|
||||
uint8_t *_hmacKey;
|
||||
uint8_t _keyLength;
|
@@ -2,7 +2,7 @@
|
||||
#define __TOTP_H__
|
||||
|
||||
#include <inttypes.h>
|
||||
#include "time.h"
|
||||
#include <time.h>
|
||||
|
||||
void TOTP(uint8_t *hmacKey, uint8_t keyLength, uint32_t timeStep);
|
||||
void setTimezone(uint8_t timezone);
|
@@ -1,15 +1,12 @@
|
||||
[env:m5paper]
|
||||
platform = espressif32
|
||||
; platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-upstream
|
||||
board = m5stack-fire
|
||||
framework = arduino
|
||||
upload_speed = 2000000
|
||||
; platform_packages =
|
||||
; framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git
|
||||
monitor_speed = 115200
|
||||
board_build.partitions = default_16MB.csv
|
||||
build_flags =
|
||||
-std=gnu++17
|
||||
-std=gnu++20
|
||||
-Ofast
|
||||
-DBOARD_HAS_PSRAM
|
||||
-mfix-esp32-psram-cache-issue
|
||||
@@ -23,8 +20,3 @@ lib_deps =
|
||||
LovyanGFX
|
||||
bblanchon/ArduinoJson
|
||||
knolleary/PubSubClient
|
||||
; upload_protocol = espota
|
||||
; upload_port = 192.168.10.104
|
||||
; extra_scripts =
|
||||
; pre:extra_script.py
|
||||
; upload_flags = --host_port=55910
|
@@ -11,8 +11,7 @@
|
||||
#include <HTTPClient.h>
|
||||
#include <PubSubClient.h>
|
||||
|
||||
// https://github.com/Netthaw/TOTP-MCU
|
||||
#include "totp.h"
|
||||
#include <totp.hpp>
|
||||
|
||||
#define LGFX_M5PAPER
|
||||
#define LGFX_USE_V1
|
||||
@@ -167,6 +166,11 @@ void send(String state)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!WiFi.isConnected())
|
||||
{
|
||||
resetWifi();
|
||||
}
|
||||
|
||||
if (client->connect(SETTINGS->gettext("mqtt:ident"), SETTINGS->gettext("mqtt:username"), SETTINGS->gettext("mqtt:password")))
|
||||
{
|
||||
client->unsubscribe(SETTINGS->gettext("mqtt:state_topic"));
|
||||
|
Reference in New Issue
Block a user