"io"
"log"
"os"
- "runtime"
"strconv"
"github.com/companyzero/sntrup4591761"
balloonT := flag.Int("balloon-t", 4, "Balloon's time cost")
balloonP := flag.Int("balloon-p", 2, "Balloon's number of threads")
doDecrypt := flag.Bool("d", false, "Decrypt")
- parallel := flag.Int("parallel", runtime.NumCPU(), "Parallel cryptors")
+ parallel := flag.Int("parallel", cmhash.DefaultNumCPU, "Parallel cryptors")
noblob := flag.Bool("no-stream", false, "Include payload into container")
flag.Parse()
"fmt"
"log"
"os"
- "runtime"
"go.cypherpunks.su/gogost/v6/gost34112012256"
"go.cypherpunks.su/gogost/v6/gost34112012512"
)
func main() {
- workers := flag.Int("p", runtime.NumCPU(), "Parallel workers")
+ workers := flag.Int("p", cmhash.DefaultNumCPU, "Parallel workers")
chunkLenK := flag.Int("c", merkle.DefaultChunkLen/1024, "Chunk size, KiB")
algo := flag.String("a", cmhash.BLAKE2bMerkle, "Algorithm to use")
list := flag.Bool("list", false, "List available algorithms")
Streebog512Merkle = "streebog512-merkle"
)
+var DefaultNumCPU = max(1, runtime.NumCPU()/2)
+
func ByName(name string) hash.Hash {
switch name {
case Streebog256, gost.GOST3410256A:
return gost34112012256.New()
case Streebog256Merkle, gost.GOST3410256AMerkle:
return gost.NewMerkleHasher(gost34112012256.New,
- merkle.DefaultChunkLen, runtime.NumCPU())
+ merkle.DefaultChunkLen, DefaultNumCPU)
case Streebog512, gost.GOST3410512C:
return gost34112012512.New()
case Streebog512Merkle, gost.GOST3410512CMerkle:
return gost.NewMerkleHasher(gost34112012512.New,
- merkle.DefaultChunkLen, runtime.NumCPU())
+ merkle.DefaultChunkLen, DefaultNumCPU)
case BLAKE2b, cmblake2b.Ed25519BLAKE2b, cmblake2b.Ed25519PhBLAKE2b:
h, err := blake2b.New512(nil)
if err != nil {
return h
case BLAKE2bMerkle, cmblake2b.Ed25519PhBLAKE2bMerkle:
return cmblake2b.NewMerkleHasher(
- merkle.DefaultChunkLen, runtime.NumCPU())
+ merkle.DefaultChunkLen, DefaultNumCPU)
case BLAKE2b256:
h, err := blake2b.New256(nil)
if err != nil {
return NewSHAKE256()
case SHAKE128Merkle:
return NewSHAKE128MerkleHasher(
- merkle.DefaultChunkLen, runtime.NumCPU())
+ merkle.DefaultChunkLen, DefaultNumCPU)
case SHAKE256Merkle:
return NewSHAKE256MerkleHasher(
- merkle.DefaultChunkLen, runtime.NumCPU())
+ merkle.DefaultChunkLen, DefaultNumCPU)
}
return nil
}
"errors"
"hash"
"io"
- "runtime"
+ cmhash "go.cypherpunks.su/keks/cm/hash"
cmblake2b "go.cypherpunks.su/keks/cm/hash/blake2b"
"go.cypherpunks.su/keks/cm/hash/merkle"
"go.cypherpunks.su/keks/cm/sign/ed25519-blake2b/ed25519"
return nil
case mode.Merkle:
s.mode = m
- h := cmblake2b.NewMerkleHasher(merkle.DefaultChunkLen, runtime.NumCPU())
+ h := cmblake2b.NewMerkleHasher(merkle.DefaultChunkLen, cmhash.DefaultNumCPU)
s.prehasher = &h
return nil
default:
"errors"
"hash"
"io"
- "runtime"
"go.cypherpunks.su/gogost/v6/gost3410"
"go.cypherpunks.su/gogost/v6/gost34112012256"
"go.cypherpunks.su/gogost/v6/gost34112012512"
+ cmhash "go.cypherpunks.su/keks/cm/hash"
hashgost "go.cypherpunks.su/keks/cm/hash/gost"
"go.cypherpunks.su/keks/cm/hash/merkle"
"go.cypherpunks.su/keks/cm/sign/mode"
return nil
case mode.Merkle:
s.mode = m
- p := hashgost.NewMerkleHasher(s.NewHasher, merkle.DefaultChunkLen, runtime.NumCPU())
+ p := hashgost.NewMerkleHasher(s.NewHasher, merkle.DefaultChunkLen, cmhash.DefaultNumCPU)
s.prehasher = &p
return nil
default: