pro enkryptování JSON Stringů a posílání přes nezabezpečené HTTP (Arduino jiné neumí) jsem našel knihovnu ArduinoJWT, která ale neobsahovala žádný příklad a autor na to asi už nemá čas.
Vypadala funkční, něco jsem v tom upravil, přidal jsem jeden příklad, enkryptuje mi to, teď řeším už jen jeden problém
https://gitlab.com/petrhu/ArduinoJWT
Problém: při decryptu zpět na JSON se rozšifrovaný řetězec nachází v souboru ArduinoJWT.cpp, v proměnné typu pole jsonPayload.
celý příklad
ArduinoJWT_JSON_jwt.ino
: https://gitlab.com/petrhu/ArduinoJWT/bl ... ON_jwt.inoSoubor ArduinoJWT.cpp s problematickou částí: https://gitlab.com/petrhu/ArduinoJWT/bl ... inoJWT.cpp
Dokážu z toho JSON vypsat na serial:
Kód: Vybrat vše
for(int i=0 ; i < payloadLength ; i++){
Serial.print(char(jsonPayload[i]));
}
payload = String(jsonPayload);
zde je dotčená funkce ze souboru ArduinoJWT.cpp. Dokázali byste mi poradit kde dělám nějakou začátečnickou chybu?
Kód: Vybrat vše
/* Library problematic part to be solved in ArduinoJWT.cpp*/
bool ArduinoJWT::decodeJWT(String& jwt, String& payload) {
int payloadLength = getJWTPayloadLength(jwt);
if(payloadLength > 0) {
char jsonPayload[payloadLength];
if(decodeJWT((char*)jwt.c_str(), (char*)jsonPayload, payloadLength)) {
Serial.print("ArduinoJWT.cpp jsonPayload:");
// Comment !!!!!!! jsonPayload doesn't contain the Payload, but the Payload can be printed char by char...
for(int i=0;i<payloadLength;i++){
Serial.print(char(jsonPayload[i]));
}
// Comment !!!!!!!
// Comment to avoid arduino restart: payload = String(jsonPayload); // odkomentováno, jinak se to sekne
return true;
}
}
return false;
}