mirror of
https://github.com/gravitl/netmaker.git
synced 2024-09-21 07:46:04 +08:00
48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
package ncutils
|
|
|
|
import (
|
|
"bytes"
|
|
"crypto/rand"
|
|
"encoding/gob"
|
|
)
|
|
|
|
// DEFAULT_GC_PERCENT - garbage collection percent
|
|
const DEFAULT_GC_PERCENT = 10
|
|
|
|
// == OS PATH FUNCTIONS ==
|
|
|
|
// ConvertKeyToBytes - util to convert a key to bytes to use elsewhere
|
|
func ConvertKeyToBytes(key *[32]byte) ([]byte, error) {
|
|
var buffer bytes.Buffer
|
|
var enc = gob.NewEncoder(&buffer)
|
|
if err := enc.Encode(key); err != nil {
|
|
return nil, err
|
|
}
|
|
return buffer.Bytes(), nil
|
|
}
|
|
|
|
// ConvertBytesToKey - util to convert bytes to a key to use elsewhere
|
|
func ConvertBytesToKey(data []byte) (*[32]byte, error) {
|
|
var buffer = bytes.NewBuffer(data)
|
|
var dec = gob.NewDecoder(buffer)
|
|
var result = new([32]byte)
|
|
var err = dec.Decode(result)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return result, err
|
|
}
|
|
|
|
// MakeRandomString - generates a random string of len n
|
|
func MakeRandomString(n int) string {
|
|
const validChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
result := make([]byte, n)
|
|
if _, err := rand.Reader.Read(result); err != nil {
|
|
return ""
|
|
}
|
|
for i, b := range result {
|
|
result[i] = validChars[b%byte(len(validChars))]
|
|
}
|
|
return string(result)
|
|
}
|