// generateRandomKey creates a random key with the given strength. func generateRandomKey(strength int) []byte { k := make([]byte, strength) if n, err := io.ReadFull(rand.Reader, k); n != strength || err != nil { return utils.RandomCreateBytes(strength) } return k }
func BenchmarkNewImage(b *testing.B) { b.StopTimer() d := utils.RandomCreateBytes(challengeNums, defaultChars...) b.StartTimer() for i := 0; i < b.N; i++ { NewImage(d, stdWidth, stdHeight) } }
// XsrfToken creates a xsrf token string and returns. func (ctx *Context) XsrfToken(key string, expire int64) string { if ctx._xsrf_token == "" { token, ok := ctx.GetSecureCookie(key, "_xsrf") if !ok { token = string(utils.RandomCreateBytes(32)) ctx.SetSecureCookie(key, "_xsrf", token, expire) } ctx._xsrf_token = token } return ctx._xsrf_token }
func BenchmarkImageWriteTo(b *testing.B) { b.StopTimer() d := utils.RandomCreateBytes(challengeNums, defaultChars...) b.StartTimer() counter := &byteCounter{} for i := 0; i < b.N; i++ { img := NewImage(d, stdWidth, stdHeight) img.WriteTo(counter) b.SetBytes(counter.n) counter.n = 0 } }
// create a new captcha id func (c *Captcha) CreateCaptcha() (string, error) { // generate captcha id id := string(utils.RandomCreateBytes(15)) // get the captcha chars chars := c.genRandChars() // save to store if err := c.store.Put(c.key(id), chars, c.Expiration); err != nil { return "", err } return id, nil }
// generate rand chars with default chars func (c *Captcha) genRandChars() []byte { return utils.RandomCreateBytes(c.ChallengeNums, defaultChars...) }