summaryrefslogtreecommitdiff
path: root/vendor/github.com/pion/randutil/crypto.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/pion/randutil/crypto.go')
-rw-r--r--vendor/github.com/pion/randutil/crypto.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/vendor/github.com/pion/randutil/crypto.go b/vendor/github.com/pion/randutil/crypto.go
new file mode 100644
index 0000000..d10df98
--- /dev/null
+++ b/vendor/github.com/pion/randutil/crypto.go
@@ -0,0 +1,30 @@
+package randutil
+
+import (
+ crand "crypto/rand"
+ "encoding/binary"
+ "math/big"
+)
+
+// GenerateCryptoRandomString generates a random string for cryptographic usage.
+func GenerateCryptoRandomString(n int, runes string) (string, error) {
+ letters := []rune(runes)
+ b := make([]rune, n)
+ for i := range b {
+ v, err := crand.Int(crand.Reader, big.NewInt(int64(len(letters))))
+ if err != nil {
+ return "", err
+ }
+ b[i] = letters[v.Int64()]
+ }
+ return string(b), nil
+}
+
+// CryptoUint64 returns cryptographic random uint64.
+func CryptoUint64() (uint64, error) {
+ var v uint64
+ if err := binary.Read(crand.Reader, binary.LittleEndian, &v); err != nil {
+ return 0, err
+ }
+ return v, nil
+}