[SOLUCIONADO] Firma digital Arduino

Muy buenas, tengo una conexión con una App vía módulo ESP8266. La App me envía algo como esto:

{Orden,28/08/2018-03:06:46}2bg6d3EeuhMduUiVCE6P7X1szGdAs9ezZ5CJ6QmhjVMfuvhFkXKBRaRKjYRieytd...#

Yo lo parseo correctamente en:

Mensaje:  {Orden,28/08/2018-03:06:46}
Firma:  2bg6d3EeuhMduUiVCE6P7X1szGdAs9ezZ5CJ6QmhjVMfuvhFkXKBRaRKjYRieytdhU....

Bien, tengo que comprobar la autencidad de la firma con SHA512 (uso la librería rweather) pero los ejemplos que encuentro no llego a comprenderlos bien.

¿Alguien podría ayudarme con algún ejemplo?

Edit: El ESP tiene acceso a la publicKey, creo que hace falta para comprobar la firma

No se bien para donde apuntas, pero mira a ver si este diálogo te sirve Implement firmware update signing and verification

Tal vez ya lo leíste o no ayude.

surbyte:
No se bien para donde apuntas, pero mira a ver si este diálogo te sirve Implement firmware update signing and verification

Tal vez ya lo leíste o no ayude.

Gracias por el enlance surByte, ya había visto este dialogo y aquí confirman que para la encriptación Sha512 la firma adecuada es Ed25519. Buscando información sobre esta firma en la librería mencionada anteriormente conseguí un ejemplo y trabajando sobre él he llegado a esto:

#include <Crypto.h>
#include <Ed25519.h>

void setup() {
  Serial.begin(19200);
  uint8_t privateKey [32];
  uint8_t publicKey [32];
  Ed25519 :: generatePrivateKey (privateKey);
  Serial.print("privateKey :");
  Serial.println((long)privateKey,HEX);
  Ed25519 :: derivePublicKey (publicKey, privateKey);
  Serial.print("publicKey :");
  Serial.println((long)publicKey,HEX);
  uint8_t message []="{X12,02/08/2018-03:06:46}";
  uint8_t signature [64];
  Ed25519 :: sign (signature, privateKey, publicKey, message, sizeof(message));
  Serial.print("Firma :");
  Serial.println((long)signature,HEX);
  if (! Ed25519 :: verify (signature, publicKey, message, sizeof(message))) {
    // La firma no es válida.
    Serial.println("Firma no válida");
  } else {
    Serial.println("Firma válida");
  }
}

Los println no están bien puestos porque la cadena a mostrar no sale como debería pero para que alguien lo pueda seguir es completamente válido.

Pongo el tema como solucionado, gracias.