init: v1.0.0
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
package hashrng
|
||||
|
||||
import (
|
||||
_ "crypto/sha256"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"xdx.jelly/xgcl/grand/drng/entropy"
|
||||
"xdx.jelly/xgcl/grand/drng/internal"
|
||||
"xdx.jelly/xgcl/sm"
|
||||
)
|
||||
|
||||
func TestSysEntropySource(t *testing.T) {
|
||||
e := entropy.GetEntropyPool()
|
||||
b, err := e.GetEntropy(128, 128, 128)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
fmt.Printf("%x\n", b)
|
||||
}
|
||||
|
||||
func TestSm3Df(t *testing.T) {
|
||||
input := make([]byte, 10)
|
||||
for n := 0; n < 100; n++ {
|
||||
output := newDF(sm.SM3)(input, n)
|
||||
if len(output) != n {
|
||||
t.Fatal()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 0.03GBps, 主要是internal.Outlen太小
|
||||
func TestDrngSpeed(t *testing.T) {
|
||||
raw, _ := NewHashDrng(sm.SM3, Config(internal.SecureLevel2))
|
||||
rng, _ := raw.Instantiate(nil, internal.Nonce(), entropy.GetEntropyPool())
|
||||
msg := make([]byte, rng.OutLen())
|
||||
|
||||
start := time.Now()
|
||||
times := 10000
|
||||
buf := make([]byte, 32)
|
||||
for i := 0; i < times; i++ {
|
||||
if err := rng.Generate(msg, nil); err == internal.ErrNeedReseed {
|
||||
entropy.GetEntropyPool().Read(buf)
|
||||
rng.Reseed(buf, nil)
|
||||
} else if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
end := time.Now()
|
||||
elapsed := end.Sub(start)
|
||||
t.Logf("Generate Random speed: %.2f MBps\n", float64(times*len(msg))/float64(1024*1024)/elapsed.Seconds())
|
||||
}
|
||||
|
||||
// func TestSm3DrngRandomness(t *testing.T) {
|
||||
// // 测试Sm3Drng的随机性测试通过率
|
||||
// total := 10
|
||||
// pass := 0
|
||||
// for i := 0; i < total; i++ {
|
||||
// fmt.Println("======================================", i)
|
||||
// if statistics.SampleSelfTests(Reader) {
|
||||
// fmt.Printf("%d-th test: [O]\n", i)
|
||||
// pass += 1
|
||||
// } else {
|
||||
// fmt.Printf("%d-th test: [X]\n", i)
|
||||
// }
|
||||
// }
|
||||
|
||||
// fmt.Printf("Pass Rate: %d/%d\n", pass, total)
|
||||
// }
|
||||
Reference in New Issue
Block a user