22 lines
296 B
Go
22 lines
296 B
Go
package keys
|
|
|
|
import "crypto/subtle"
|
|
|
|
type Key interface {
|
|
Equals(Key) bool
|
|
|
|
Raw() ([]byte, error)
|
|
}
|
|
|
|
func KeyEquals(k1, k2 Key) bool {
|
|
a, err := k1.Raw()
|
|
if err != nil {
|
|
return false
|
|
}
|
|
b, err := k2.Raw()
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return subtle.ConstantTimeCompare(a, b) == 1
|
|
}
|