25 lines
457 B
Go
25 lines
457 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"crypto/rand"
|
||
|
"encoding/base32"
|
||
|
"log"
|
||
|
"net/http"
|
||
|
|
||
|
"m.cluseau.fr/go/httperr"
|
||
|
)
|
||
|
|
||
|
func newToken(sizeInBytes int) (token string, err error) {
|
||
|
randBytes := make([]byte, sizeInBytes)
|
||
|
|
||
|
_, err = rand.Read(randBytes)
|
||
|
if err != nil {
|
||
|
log.Print("rand read error: ", err)
|
||
|
err = httperr.New(http.StatusInternalServerError, err)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
token = base32.StdEncoding.WithPadding(base32.NoPadding).EncodeToString(randBytes)
|
||
|
return
|
||
|
}
|