File: data.go

package info (click to toggle)
golang-github-multiformats-go-multihash 0.2.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 376 kB
  • sloc: sh: 138; makefile: 39
file content (55 lines) | stat: -rw-r--r-- 850 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// Generate hasher input that matches BLAKE3's test vectors.
//
// See:
//
// https://github.com/BLAKE3-team/BLAKE3/blob/080b3330159a19407dddb407dc917925ac40c4d3/test_vectors/test_vectors.json
package main

import (
	"fmt"
	"os"
	"strconv"
)

var usage = `usage: %s n
Generate n bytes of input for blake3 test vector.
`

const BYTE_LOOP = 251

func main() {
	if len(os.Args) != 2 {
		fmt.Fprintf(os.Stderr, usage, os.Args[0])
		os.Exit(1)
	}

	c, err := strconv.ParseUint(os.Args[1], 0, 32)
	if err != nil {
		die(err)
	}

	var b [BYTE_LOOP]uint8
	for i := range b {
		b[i] = uint8(i)
	}

	for c > 0 {
		var w uint64 = BYTE_LOOP
		if c < BYTE_LOOP {
			w = c
		}

		_, err := os.Stdout.Write(b[:w])
		if err != nil {
			die(err)
		}

		c -= w
	}
}

func die(v ...interface{}) {
	fmt.Fprint(os.Stderr, v...)
	fmt.Fprint(os.Stderr, "\n")
	os.Exit(1)
}