2025-04-24 16:03:03 +02:00

60 lines
1.0 KiB
Go

// SPDX-FileCopyrightText: 2025 Tillitis AB <tillitis.se>
// SPDX-License-Identifier: BSD-2-Clause
package main
import (
"flag"
"fmt"
"os"
"golang.org/x/crypto/blake2s"
)
func usage() {
fmt.Printf("Usage: %s -m filename [-c]\n", os.Args[0])
}
func printCDigest(digest [blake2s.Size]byte, fileName string) {
fmt.Printf("// BLAKE2s digest of %v\n", fileName)
fmt.Printf("const uint8_t digest[32] = {\n")
for _, n := range digest {
fmt.Printf("0x%x, ", n)
}
fmt.Printf("\n}; \n")
}
func main() {
var messageFile string
var forC bool
flag.StringVar(&messageFile, "m", "", "Specify file containing message.")
flag.BoolVar(&forC, "c", false, "Print digest for inclusion in C program.")
flag.Usage = usage
flag.Parse()
if messageFile == "" {
usage()
os.Exit(0)
}
message, err := os.ReadFile(messageFile)
if err != nil {
fmt.Printf("%v\n", err)
os.Exit(1)
}
digest := blake2s.Sum256(message)
if forC {
printCDigest(digest, messageFile)
} else {
fmt.Printf("%x %s\n", digest, messageFile)
}
os.Exit(0)
}