#include "mbedtls/md.h"
char charBuff[100];
void setup()
{
Serial.begin(115200);
char *payload = "Hello SHA 256 from ESP32learning";
//strcpy(test,__DATE__);
//strcat(test,__TIME__);
Serial.println();
Serial.print("Compiletime:\t");
Serial.println(compileTime(true));
byte shaResult[32];
sha256(compileTime(true),shaResult);
Serial.println("Hash: ");
for(int i= 0; i< sizeof(shaResult); i++){char str[3];
sprintf(str, "%02x", (int)shaResult[i]);
Serial.print(str);
}
Serial.println();
for(int i= 0; i< sizeof(shaResult); i++){
char str[5];
uint16_t sha16 = (int)combine(shaResult[i],shaResult[i+1]);
sprintf(str, "%04x", sha16);
Serial.print(str);Serial.print('\t');
Serial.println(sha16);
i++;
}
}
void loop()
{
}
void sha256(const char * inputString, byte * outputHash){
mbedtls_md_context_t context;
mbedtls_md_type_t md_type = MBEDTLS_MD_SHA256;
const size_t payloadLength = strlen(inputString);
mbedtls_md_init(&context);
mbedtls_md_setup(&context, mbedtls_md_info_from_type(md_type), 0);
mbedtls_md_starts(&context);
mbedtls_md_update(&context, (const unsigned char *) inputString, payloadLength);
mbedtls_md_finish(&context, outputHash);
mbedtls_md_free(&context);
}
uint16_t combine(uint8_t msb, uint8_t lsb){ return ((msb << 8 ) | (lsb & 0xff));}
const char * compileTime(bool withSec) { //const char * char const *date, char *buffOut
char buff[10];
charBuff[0] = '\0';
int month, day, year, hh, mm, ss;
static const char month_names[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
sscanf(__DATE__, "%s %d %d", buff, &day, &year);
month = (strstr(month_names, buff)-month_names)/3+1;
sprintf(buff, "%d%02d%02d", year, month, day);
strncpy(charBuff,&buff[2],strlen(buff)-2);
charBuff[strlen(buff)-2] = '\0';
buff[0] = '\0';
sscanf(__TIME__, "%d:%d:%d", &hh, &mm, &ss);
sprintf(buff, "%02d%02d%02d", hh, mm, ss);
strcat(charBuff,"-");
if(withSec){strcat(charBuff,buff);}
else{strncat(charBuff,buff,strlen(buff)-2);}
//
return charBuff;
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK