mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
Grand test fixup (#138)
* start fixing up tests * fix up tests + automate with drone * fiddle with linting * messing about with drone.yml * some more fiddling * hmmm * add cache * add vendor directory * verbose * ci updates * update some little things * update sig
This commit is contained in:
39
vendor/github.com/wagslane/go-password-validator/entropy.go
generated
vendored
Normal file
39
vendor/github.com/wagslane/go-password-validator/entropy.go
generated
vendored
Normal file
@ -0,0 +1,39 @@
|
||||
package passwordvalidator
|
||||
|
||||
import (
|
||||
"math"
|
||||
)
|
||||
|
||||
// GetEntropy returns the entropy in bits for the given password
|
||||
// See the ReadMe for more information
|
||||
func GetEntropy(password string) float64 {
|
||||
return getEntropy(password)
|
||||
}
|
||||
|
||||
func getEntropy(password string) float64 {
|
||||
base := getBase(password)
|
||||
length := getLength(password)
|
||||
|
||||
// calculate log2(base^length)
|
||||
return logPow(float64(base), length, 2)
|
||||
}
|
||||
|
||||
func logX(base, n float64) float64 {
|
||||
if base == 0 {
|
||||
return 0
|
||||
}
|
||||
// change of base formulae
|
||||
return math.Log2(n) / math.Log2(base)
|
||||
}
|
||||
|
||||
// logPow calculates log_base(x^y)
|
||||
// without leaving logspace for each multiplication step
|
||||
// this makes it take less space in memory
|
||||
func logPow(expBase float64, pow int, logBase float64) float64 {
|
||||
// logb (MN) = logb M + logb N
|
||||
total := 0.0
|
||||
for i := 0; i < pow; i++ {
|
||||
total += logX(logBase, expBase)
|
||||
}
|
||||
return total
|
||||
}
|
Reference in New Issue
Block a user