#include "ack.h" #include "lib/cifra/sha2.h" #include "lib/config.h" #include "meshcore/meshframing.h" #include #define TAG "Ack" void sendDiscreteAck (uint8_t *data, const uint8_t len, uint8_t *senderPubKey) { FrameStruct frame; memset (&frame, 0, sizeof (frame)); // 1. Header frame.header = ROUTE_TYPE_FLOOD | // currently flood PAYLOAD_TYPE_ACK | PAYLOAD_VERSION_0; // Buffer for the digest uint8_t hash[CF_SHA256_HASHSZ]; // Context cf_sha256_context ctx; // 1. Initialize cf_sha256_init (&ctx); // 2. Feed in your data cf_sha256_update (&ctx, data, len); cf_sha256_update (&ctx, senderPubKey, sizeof (persistent.pubkey)); // 3. Compute digest cf_sha256_digest (&ctx, hash); memcpy (frame.payload, hash, 4); // 5. Finalize frame.payloadLen = 4; sendFrame (frame); }