OSDN Git Service

Hulk did something
[bytom/vapor.git] / crypto / randentropy / rand_entropy.go
diff --git a/crypto/randentropy/rand_entropy.go b/crypto/randentropy/rand_entropy.go
new file mode 100644 (file)
index 0000000..71ce1cd
--- /dev/null
@@ -0,0 +1,26 @@
+package randentropy
+
+import (
+       crand "crypto/rand"
+       "io"
+)
+
+var Reader io.Reader = &randEntropy{}
+
+type randEntropy struct {
+}
+
+func (*randEntropy) Read(bytes []byte) (n int, err error) {
+       readBytes := GetEntropyCSPRNG(len(bytes))
+       copy(bytes, readBytes)
+       return len(bytes), nil
+}
+
+func GetEntropyCSPRNG(n int) []byte {
+       mainBuff := make([]byte, n)
+       _, err := io.ReadFull(crand.Reader, mainBuff)
+       if err != nil {
+               panic("reading from crypto/rand failed: " + err.Error())
+       }
+       return mainBuff
+}