mirror of
https://github.com/tillitis/tillitis-key1.git
synced 2025-05-06 07:54:59 -04:00
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:
parent
66ea8df1d9
commit
3e8ff9671c
3 changed files with 5 additions and 24 deletions
|
@ -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);
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue