From ef82ecd0f604f6323bcca6fc06ccd3ac94982c60 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Sun, 20 Jan 2019 16:18:04 -0500 Subject: [PATCH] crypto/subtle: normalize constant time ops docs 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 Reviewed-by: Adam Langley --- src/crypto/subtle/constant_time.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/crypto/subtle/constant_time.go b/src/crypto/subtle/constant_time.go index 9f5fee87e3..7c3cf05c46 100644 --- a/src/crypto/subtle/constant_time.go +++ b/src/crypto/subtle/constant_time.go @@ -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 @@ -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 }