netclientutils.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package ncutils
  2. import (
  3. "bytes"
  4. "crypto/rand"
  5. "encoding/gob"
  6. )
  7. // DEFAULT_GC_PERCENT - garbage collection percent
  8. const DEFAULT_GC_PERCENT = 10
  9. // == OS PATH FUNCTIONS ==
  10. // ConvertKeyToBytes - util to convert a key to bytes to use elsewhere
  11. func ConvertKeyToBytes(key *[32]byte) ([]byte, error) {
  12. var buffer bytes.Buffer
  13. var enc = gob.NewEncoder(&buffer)
  14. if err := enc.Encode(key); err != nil {
  15. return nil, err
  16. }
  17. return buffer.Bytes(), nil
  18. }
  19. // ConvertBytesToKey - util to convert bytes to a key to use elsewhere
  20. func ConvertBytesToKey(data []byte) (*[32]byte, error) {
  21. var buffer = bytes.NewBuffer(data)
  22. var dec = gob.NewDecoder(buffer)
  23. var result = new([32]byte)
  24. var err = dec.Decode(result)
  25. if err != nil {
  26. return nil, err
  27. }
  28. return result, err
  29. }
  30. // MakeRandomString - generates a random string of len n
  31. func MakeRandomString(n int) string {
  32. const validChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  33. result := make([]byte, n)
  34. if _, err := rand.Reader.Read(result); err != nil {
  35. return ""
  36. }
  37. for i, b := range result {
  38. result[i] = validChars[b%byte(len(validChars))]
  39. }
  40. return string(result)
  41. }