From 80f9ee3bc916c63a9bd54e0b0eadf95a7d86836b Mon Sep 17 00:00:00 2001 From: siddharth Date: Sat, 4 Sep 2021 18:35:06 -0400 Subject: lib: MTPpasswordResetToken --- lib/rng.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'lib') diff --git a/lib/rng.go b/lib/rng.go index c1038f4..c48f719 100644 --- a/lib/rng.go +++ b/lib/rng.go @@ -142,3 +142,25 @@ func MTXORStream(stream, seed []byte) []byte { } return s } + +func MTPasswordResetToken(seed uint32, length int) string { + if length < 16 { + length = 16 // Default length. + } + + // Init MT19937. + mtR := new(MTRand) + mtR.Seed(seed) + + n := uint32(0) + t := make([]byte, 0) // Token in bytes. + for i := 0; i < length; i++ { + if n == uint32(0) { + n = mtR.Extract() + } + t = append(t, byte(n&0xFF)) // Extract last 8 bits. + n = n >> 8 // Get rid of the last 8 bits. + } + + return BytesToHexStr(t) // Return token as a hex string. +} -- cgit v1.2.3