Skip to content

Commit

Permalink
crypto/subtle: normalize constant time ops docs
Browse files Browse the repository at this point in the history
ConstantTimeCompare is fairly useless if you can't rely on it being zero
when the slices are different, but thankfully it has that property
thanks to the final ConstantTimeByteEq.

Change-Id: Id51100ed7d8237abbbb15778a259065b162a48ad
Reviewed-on: https://go-review.googlesource.com/c/158643
Reviewed-by: Brad Fitzpatrick <[email protected]>
Reviewed-by: Adam Langley <[email protected]>
  • Loading branch information
FiloSottile committed Jan 22, 2019
1 parent 8d2e65d commit ef82ecd
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/crypto/subtle/constant_time.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
// code but require careful thought to use correctly.
package subtle

// ConstantTimeCompare returns 1 if and only if the two slices, x
// and y, have equal contents. The time taken is a function of the length of
// the slices and is independent of the contents.
// ConstantTimeCompare returns 1 if the two slices, x and y, have equal contents
// and 0 otherwise. The time taken is a function of the length of the slices and
// is independent of the contents.
func ConstantTimeCompare(x, y []byte) int {
if len(x) != len(y) {
return 0
Expand All @@ -23,7 +23,7 @@ func ConstantTimeCompare(x, y []byte) int {
return ConstantTimeByteEq(v, 0)
}

// ConstantTimeSelect returns x if v is 1 and y if v is 0.
// ConstantTimeSelect returns x if v == 1 and y if v == 0.
// Its behavior is undefined if v takes any other value.
func ConstantTimeSelect(v, x, y int) int { return ^(v-1)&x | (v-1)&y }

Expand Down

0 comments on commit ef82ecd

Please sign in to comment.