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 <string.h>
|
||||||
#include "sha1.h"
|
#include "sha1.hpp"
|
||||||
|
|
||||||
#define SHA1_K0 0x5a827999
|
#define SHA1_K0 0x5a827999
|
||||||
#define SHA1_K20 0x6ed9eba1
|
#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.hpp>
|
||||||
#include "sha1.h"
|
#include "totp.hpp"
|
||||||
|
|
||||||
uint8_t *_hmacKey;
|
uint8_t *_hmacKey;
|
||||||
uint8_t _keyLength;
|
uint8_t _keyLength;
|
@@ -2,7 +2,7 @@
|
|||||||
#define __TOTP_H__
|
#define __TOTP_H__
|
||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include "time.h"
|
#include <time.h>
|
||||||
|
|
||||||
void TOTP(uint8_t *hmacKey, uint8_t keyLength, uint32_t timeStep);
|
void TOTP(uint8_t *hmacKey, uint8_t keyLength, uint32_t timeStep);
|
||||||
void setTimezone(uint8_t timezone);
|
void setTimezone(uint8_t timezone);
|
@@ -1,15 +1,12 @@
|
|||||||
[env:m5paper]
|
[env:m5paper]
|
||||||
platform = espressif32
|
platform = espressif32
|
||||||
; platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-upstream
|
|
||||||
board = m5stack-fire
|
board = m5stack-fire
|
||||||
framework = arduino
|
framework = arduino
|
||||||
upload_speed = 2000000
|
upload_speed = 2000000
|
||||||
; platform_packages =
|
|
||||||
; framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git
|
|
||||||
monitor_speed = 115200
|
monitor_speed = 115200
|
||||||
board_build.partitions = default_16MB.csv
|
board_build.partitions = default_16MB.csv
|
||||||
build_flags =
|
build_flags =
|
||||||
-std=gnu++17
|
-std=gnu++20
|
||||||
-Ofast
|
-Ofast
|
||||||
-DBOARD_HAS_PSRAM
|
-DBOARD_HAS_PSRAM
|
||||||
-mfix-esp32-psram-cache-issue
|
-mfix-esp32-psram-cache-issue
|
||||||
@@ -23,8 +20,3 @@ lib_deps =
|
|||||||
LovyanGFX
|
LovyanGFX
|
||||||
bblanchon/ArduinoJson
|
bblanchon/ArduinoJson
|
||||||
knolleary/PubSubClient
|
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 <HTTPClient.h>
|
||||||
#include <PubSubClient.h>
|
#include <PubSubClient.h>
|
||||||
|
|
||||||
// https://github.com/Netthaw/TOTP-MCU
|
#include <totp.hpp>
|
||||||
#include "totp.h"
|
|
||||||
|
|
||||||
#define LGFX_M5PAPER
|
#define LGFX_M5PAPER
|
||||||
#define LGFX_USE_V1
|
#define LGFX_USE_V1
|
||||||
@@ -167,6 +166,11 @@ void send(String state)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!WiFi.isConnected())
|
||||||
|
{
|
||||||
|
resetWifi();
|
||||||
|
}
|
||||||
|
|
||||||
if (client->connect(SETTINGS->gettext("mqtt:ident"), SETTINGS->gettext("mqtt:username"), SETTINGS->gettext("mqtt:password")))
|
if (client->connect(SETTINGS->gettext("mqtt:ident"), SETTINGS->gettext("mqtt:username"), SETTINGS->gettext("mqtt:password")))
|
||||||
{
|
{
|
||||||
client->unsubscribe(SETTINGS->gettext("mqtt:state_topic"));
|
client->unsubscribe(SETTINGS->gettext("mqtt:state_topic"));
|
||||||
|
Reference in New Issue
Block a user