import "crypto/subtle"

暗号化コードとして度々使われる便利な機能を実装していますが、正しく使用するよう注意が必要です。

パッケージファイル

constant_time.go

ConstantTimeByteEq関数

func ConstantTimeByteEq(x, y uint8) int

ConstantTimeByteEqは、x == yのとき1を返し、それ以外のときは0を返します。

ConstantTimeCompare関数

func ConstantTimeCompare(x, y []byte) int

ConstantTimeCompareは、xとyの2つのスライスの長さが同じで、等しい内容を持つときだけ1を返します。処理時間はスライスの長さにより異なり、xおよびyの内容には関係しません。

ConstantTimeCopy関数

func ConstantTimeCopy(v int, x, y []byte)

ConstantTimeCopyは、v == 1のときyの内容をxへコピーします。v == 0のときはxは変わりません。vの値が0または1以外のときの動作は未定義です。

ConstantTimeEq関数

func ConstantTimeEq(x, y int32) int

ConstantTimeEqは、x == yのとき1を返します。それ以外のときは0を返します。

ConstantTimeSelect関数

func ConstantTimeSelect(v, x, y int) int

ConstantTimeSelectは、vが1のときはxを返し、vが0のときはyを返します。vの値が0または1以外のときの動作は未定義です。