...

# Package subtle

Package subtle implements functions that are often useful in cryptographic
code but require careful thought to use correctly.

In the call graph viewer below, each node
is a function belonging to this package
and its children are the functions it
calls—perhaps dynamically.

The root nodes are the entry points of the
package: functions that may be called from
outside the package.
There may be non-exported or anonymous
functions among them if they are called
dynamically from another package.

Click a node to visit that function's source code.
From there you can visit its callers by
clicking its declaring `func`

token.

Functions may be omitted if they were
determined to be unreachable in the
particular programs or tests that were
analyzed.

func ConstantTimeByteEq(x, y uint8) int

ConstantTimeByteEq returns 1 if x == y and 0 otherwise.

▾ Internal call graph

This viewer shows the portion of the internal call
graph of this package that is reachable from this function.
See the package's call
graph for more information.

func ConstantTimeCompare(x, y []byte) int

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.

▾ Internal call graph

This viewer shows the portion of the internal call
graph of this package that is reachable from this function.
See the package's call
graph for more information.

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

ConstantTimeCopy copies the contents of y into x (a slice of equal length)
if v == 1. If v == 0, x is left unchanged. Its behavior is undefined if v
takes any other value.

▾ Internal call graph

This viewer shows the portion of the internal call
graph of this package that is reachable from this function.
See the package's call
graph for more information.

func ConstantTimeEq(x, y int32) int

ConstantTimeEq returns 1 if x == y and 0 otherwise.

▾ Internal call graph

This viewer shows the portion of the internal call
graph of this package that is reachable from this function.
See the package's call
graph for more information.

func ConstantTimeLessOrEq(x, y int) int

ConstantTimeLessOrEq returns 1 if x <= y and 0 otherwise.
Its behavior is undefined if x or y are negative or > 2**31 - 1.

▾ Internal call graph

This viewer shows the portion of the internal call
graph of this package that is reachable from this function.
See the package's call
graph for more information.

func ConstantTimeSelect(v, x, y int) int

ConstantTimeSelect returns x if v is 1 and y if v is 0.
Its behavior is undefined if v takes any other value.

▾ Internal call graph

This viewer shows the portion of the internal call
graph of this package that is reachable from this function.
See the package's call
graph for more information.