import (
"bufio"
"crypto/rand"
- "encoding/base32"
"encoding/binary"
"flag"
"fmt"
"io"
"os"
"runtime"
- "strings"
"sync"
"golang.org/x/crypto/blake2b"
SaltSize = 32
)
-func ToBase32(data []byte) string {
- return strings.TrimRight(base32.StdEncoding.EncodeToString(data), "=")
-}
-
-func FromBase32(data string) ([]byte, error) {
- padSize := len(data) % 8
- if padSize != 0 {
- padSize = 8 - padSize
- pad := make([]byte, 0, padSize)
- for i := 0; i < padSize; i++ {
- pad = append(pad, '=')
- }
- data += string(pad)
- }
- return base32.StdEncoding.DecodeString(data)
-}
-
type WorkerTask struct {
key []byte
n int
var w *Worker
for {
key := make([]byte, chacha20poly1305.KeySize)
- _, err = io.ReadFull(keys, key)
- if err != nil {
+ if _, err = io.ReadFull(keys, key); err != nil {
panic(err)
}
w = workers[i%len(workers)]
panic(err)
}
n = int(binary.BigEndian.Uint32(w.buf[:LenSize]))
- n, err = io.ReadFull(stdin, w.buf[LenSize:LenSize+n+tmpAEAD.Overhead()])
- if err != nil {
+ if n, err = io.ReadFull(stdin, w.buf[LenSize:LenSize+n+tmpAEAD.Overhead()]); err != nil {
panic(err)
}
} else {