element/vendor/github.com/jimstudt/http-authentication/basic/util.go
Evan Hazlett 15619b08f8
proxy: update vendor
Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
2017-07-29 22:50:48 -04:00

18 lines
454 B
Go

package basic
import (
"crypto/sha1"
"crypto/subtle"
)
func constantTimeEquals(a string, b string) bool {
// compare SHA-1 as a gatekeeper in constant time
// then check that we didn't get by because of a collision
aSha := sha1.Sum([]byte(a))
bSha := sha1.Sum([]byte(b))
if subtle.ConstantTimeCompare(aSha[:], bSha[:]) == 1 {
// yes, this bit isn't constant, but you had to make a Sha1 collision to get here
return a == b
}
return false
}