Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ce8cb5ee19 | ||
|
|
5631982c2b |
@@ -2,7 +2,7 @@ Write.as web core
|
||||
=================
|
||||
[](https://godoc.org/github.com/writeas/web-core)
|
||||
[](https://travis-ci.org/writeas/web-core)
|
||||
[](http://slack.write.as/)
|
||||
[](http://webchat.freenode.net/?channels=writefreely)
|
||||
[](https://discuss.write.as/c/development)
|
||||
|
||||
web-core holds components of the [Write.as](https://write.as) web application.
|
||||
|
||||
+7
-7
@@ -1,4 +1,4 @@
|
||||
// Package passgen generates random, unmemorable passwords.
|
||||
// Package passgen generates random passwords.
|
||||
//
|
||||
// Example usage:
|
||||
//
|
||||
@@ -19,20 +19,20 @@ const DefLen = 20
|
||||
// DefChars is the default set of characters used in the password.
|
||||
var DefChars = []byte("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()- _=+,.?/:;{}[]`~")
|
||||
|
||||
// New returns a random password of the default length with the default set of
|
||||
// characters.
|
||||
// New returns a random, unmemorable password of the default length with the
|
||||
// default set of characters.
|
||||
func New() string {
|
||||
return NewLenChars(DefLen, DefChars)
|
||||
}
|
||||
|
||||
// NewLen returns a random password of the given length with the default set
|
||||
// of characters.
|
||||
// NewLen returns a random, unmemorable password of the given length with the
|
||||
// default set of characters.
|
||||
func NewLen(length int) string {
|
||||
return NewLenChars(length, DefChars)
|
||||
}
|
||||
|
||||
// NewLenChars returns a random password of the given length with the given
|
||||
// set of characters.
|
||||
// NewLenChars returns a random, unmemorable password of the given length with
|
||||
// the given set of characters.
|
||||
func NewLenChars(length int, chars []byte) string {
|
||||
if length == 0 {
|
||||
return ""
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
package passgen
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"math/big"
|
||||
)
|
||||
|
||||
var (
|
||||
ar = []rune("aA4")
|
||||
cr = []rune("cC")
|
||||
er = []rune("eE3")
|
||||
fr = []rune("fF")
|
||||
gr = []rune("gG")
|
||||
hr = []rune("hH")
|
||||
ir = []rune("iI1")
|
||||
lr = []rune("lL")
|
||||
nr = []rune("nN")
|
||||
or = []rune("oO0")
|
||||
rr = []rune("rR")
|
||||
sr = []rune("sS5")
|
||||
tr = []rune("tT7")
|
||||
remr = []rune("bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ0123456789")
|
||||
)
|
||||
|
||||
// NewWordish generates a password made of word-like words.
|
||||
func NewWordish() string {
|
||||
b := []rune{}
|
||||
b = append(b, randLetter(cr))
|
||||
b = append(b, randLetter(hr))
|
||||
b = append(b, randLetter(ar))
|
||||
b = append(b, randLetter(nr))
|
||||
b = append(b, randLetter(gr))
|
||||
b = append(b, randLetter(er))
|
||||
b = append(b, randLetter(tr))
|
||||
b = append(b, randLetter(hr))
|
||||
b = append(b, randLetter(ir))
|
||||
b = append(b, randLetter(sr))
|
||||
b = append(b, randLetter(ar))
|
||||
b = append(b, randLetter(fr))
|
||||
b = append(b, randLetter(tr))
|
||||
b = append(b, randLetter(er))
|
||||
b = append(b, randLetter(rr))
|
||||
b = append(b, randLetter(lr))
|
||||
b = append(b, randLetter(or))
|
||||
b = append(b, randLetter(gr))
|
||||
b = append(b, randLetter(gr))
|
||||
b = append(b, randLetter(ir))
|
||||
b = append(b, randLetter(nr))
|
||||
b = append(b, randLetter(gr))
|
||||
b = append(b, randLetter(ir))
|
||||
b = append(b, randLetter(nr))
|
||||
for i := 0; i <= 7; i++ {
|
||||
b = append(b, randLetter(remr))
|
||||
}
|
||||
return string(b)
|
||||
}
|
||||
|
||||
func randLetter(l []rune) rune {
|
||||
li, err := rand.Int(rand.Reader, big.NewInt(int64(len(l))))
|
||||
if err != nil {
|
||||
return rune(-1)
|
||||
}
|
||||
return l[li.Int64()]
|
||||
}
|
||||
Reference in New Issue
Block a user