35 lines
770 B
C++
35 lines
770 B
C++
#ifndef ArduinoJsonJWT_H
|
|
#define ArduinoJsonJWT_H
|
|
|
|
#include "jwt/base64.h"
|
|
#include "jwt/sha256.h"
|
|
#include "jwt/ArduinoJsonJWT.h"
|
|
|
|
#include <Arduino.h>
|
|
#include <ArduinoJson.h>
|
|
|
|
class ArduinoJsonJWT {
|
|
|
|
private:
|
|
String _psk;
|
|
|
|
// {"alg": "HS256", "typ": "JWT"}
|
|
const char* JWT_HEADER = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
|
|
const uint16_t JWT_HEADER_LENGTH = strlen(JWT_HEADER);
|
|
const uint16_t SIGNATURE_LENGTH = encode_base64_length(32);
|
|
|
|
// static JWT length is made of:
|
|
// - the header length
|
|
// - the signature length
|
|
// - 2 delimiters, 1 terminator
|
|
const uint16_t BASE_JWT_LENGTH = JWT_HEADER_LENGTH + SIGNATURE_LENGTH + 3;
|
|
|
|
public:
|
|
ArduinoJsonJWT(String psk);
|
|
void setPSK(String psk);
|
|
String encodeJWT(JsonObject payload);
|
|
};
|
|
|
|
|
|
#endif
|