package hashleaf import ( "crypto/ed25519" "fmt" "git.sigsum.org/sigsum-go/pkg/hex" "git.sigsum.org/sigsum-go/pkg/types" "git.sigsum.org/sigsum-tools-go/internal/util" ) func Main(_ []string, optPriv string, optShardHint uint64) error { data, err := util.BytesFromStdin() if err != nil { return fmt.Errorf("sign: %v", err) } priv, err := util.SignerFromHex(optPriv) if err != nil { return fmt.Errorf("sign: %v", err) } stm := types.Statement{ ShardHint: optShardHint, Checksum: *types.HashFn(data), } sig, err := stm.Sign(priv) if err != nil { fmt.Errorf("sign: %v", err) } leaf := types.Leaf{ Statement: stm, Signature: *sig, KeyHash: *types.HashFn(priv.Public().(ed25519.PublicKey)[:]), } lh := types.LeafHash(leaf.ToBinary()) fmt.Printf("%s\n", hex.Serialize(lh[:])) return nil }