fw/tools: Change partition checksum to vanilla BLAKE2s

Instead of using 16 byte BLAKE2s with a dummy key, use plain vanilla
unkeyed 32 byte BLAKE2s for partition checksum.

Co-authored-by: Mikael Ågren <mikael@tillitis.se>
This commit is contained in:
Michael Cardell Widerkrantz 2025-04-25 16:36:19 +02:00
parent 66ea8df1d9
commit 3e8ff9671c
No known key found for this signature in database
GPG key ID: D3DB3DDF57E704E5
3 changed files with 5 additions and 24 deletions

View file

@ -27,14 +27,10 @@ static void part_checksum(struct partition_table *part_table,
{ {
int blake2err = 0; int blake2err = 0;
uint8_t key[16] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
assert(part_table != NULL); assert(part_table != NULL);
assert(out_digest != NULL); assert(out_digest != NULL);
blake2err = blake2s(out_digest, out_len, key, sizeof(key), part_table, blake2err = blake2s(out_digest, out_len, NULL, 0, part_table,
sizeof(struct partition_table)); sizeof(struct partition_table));
assert(blake2err == 0); assert(blake2err == 0);

View file

@ -46,7 +46,7 @@
#define SIZE_STORAGE_AREA 0x20000UL // 128KiB #define SIZE_STORAGE_AREA 0x20000UL // 128KiB
#define N_STORAGE_AREA 4 #define N_STORAGE_AREA 4
#define PART_CHECKSUM_SIZE 16 #define PART_CHECKSUM_SIZE 32
enum part_status { enum part_status {
PART_SLOT0_INVALID = 1, PART_SLOT0_INVALID = 1,

View file

@ -34,7 +34,7 @@ type PartTable struct {
type PartTableStorage struct { type PartTableStorage struct {
PartTable PartTable PartTable PartTable
Digest [16]uint8 Checksum [32]byte
} }
type Flash struct { type Flash struct {
@ -85,21 +85,7 @@ func printPartTableStorageCondensed(storage PartTableStorage) {
fmt.Printf(" %x\n", appData.Signature[32:48]) fmt.Printf(" %x\n", appData.Signature[32:48])
fmt.Printf(" %x\n", appData.Signature[48:]) fmt.Printf(" %x\n", appData.Signature[48:])
} }
fmt.Printf(" Digest : %x\n", storage.Digest) fmt.Printf(" Digest : %x\n", storage.Checksum)
}
func calculateStorageDigest(data []byte) []byte {
key := [16]byte{}
hash, err := blake2s.New128(key[:])
if err != nil {
panic(err)
}
hash.Write(data)
digest := hash.Sum([]byte{})
return digest
} }
func generatePartTableStorage(outputFilename string, app0Filename string) { func generatePartTableStorage(outputFilename string, app0Filename string) {
@ -125,8 +111,7 @@ func generatePartTableStorage(outputFilename string, app0Filename string) {
panic(err) panic(err)
} }
digest := calculateStorageDigest(buf[:len]) storage.Checksum = blake2s.Sum256(buf[:len])
copy(storage.Digest[:], digest)
storageFile, err := os.Create(outputFilename) storageFile, err := os.Create(outputFilename)
if err != nil { if err != nil {