mirror of
https://github.com/tillitis/tillitis-key1.git
synced 2025-04-27 10:29:22 -04:00
60 lines
1.0 KiB
Go
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)
|
|
}
|