From 8040825daac4a5ba24e947c4c657d169d7763543 Mon Sep 17 00:00:00 2001 From: KushBlazingJudah <59340248+KushBlazingJudah@users.noreply.github.com> Date: Sat, 30 Oct 2021 00:28:51 -0300 Subject: restructuring, part 3 of many --- util/key.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 util/key.go (limited to 'util/key.go') diff --git a/util/key.go b/util/key.go new file mode 100644 index 0000000..458d7c0 --- /dev/null +++ b/util/key.go @@ -0,0 +1,36 @@ +package util + +import ( + "crypto/sha512" + "encoding/hex" + "math/rand" + "strings" +) + +const domain = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" + +func CreateKey(len int) string { + // TODO: provided that CreateTripCode still uses sha512, the max len can be 128 at most. + if len > 128 { + panic("len is greater than 128") // awful way to do it + } + + str := CreateTripCode(RandomID(len)) + return str[:len] +} + +func CreateTripCode(input string) string { + out := sha512.Sum512([]byte(input)) + + return hex.EncodeToString(out[:]) +} + +func RandomID(size int) string { + rng := size + newID := strings.Builder{} + for i := 0; i < rng; i++ { + newID.WriteByte(domain[rand.Intn(len(domain))]) + } + + return newID.String() +} -- cgit v1.2.3