Top Constructors Methods
io.netty.util.internal

public final Class ConstantTimeUtils

extends Object
Class Inheritance

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static int

Returns:

0 if not equal. 1 if equal.
equalsConstantTime
(int
the first value.
x
,
int
the second value.
y
)

Compare two ints without leaking timing information.

public static int

Returns:

0 if not equal. 1 if equal.
equalsConstantTime
(long
the first value.
x
,
long
the second value.
y
)

Compare two longss without leaking timing information.

public static int

Returns:

0 if not equal. 1 if equal.
equalsConstantTime
(byte[]
the first byte array.
bytes1
,
int
the position (inclusive) to start comparing in bytes1.
startPos1
,
byte[]
the second byte array.
bytes2
,
int
the position (inclusive) to start comparing in bytes2.
startPos2
,
int
the amount of bytes to compare. This is assumed to be validated as not going out of bounds by the caller.
length
)

Compare two byte arrays for equality without leaking timing information.

public static int

Returns:

0 if not equal. 1 if equal.
equalsConstantTime
(CharSequence
the first value.
s1
,
CharSequence
the second value.
s2
)

Compare two CharSequence objects without leaking timing information.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

ConstantTimeUtilsback to summary
private ConstantTimeUtils()

Method Detail

equalsConstantTimeback to summary
public static int equalsConstantTime(int x, int y)

Compare two ints without leaking timing information.

The int return type is intentional and is designed to allow cascading of constant time operations:

    int l1 = 1;
    int l2 = 1;
    int l3 = 1;
    int l4 = 500;
    boolean equals = (equalsConstantTime(l1, l2) & equalsConstantTime(l3, l4)) != 0;
Parameters
x:int

the first value.

y:int

the second value.

Returns:int

0 if not equal. 1 if equal.

equalsConstantTimeback to summary
public static int equalsConstantTime(long x, long y)

Compare two longss without leaking timing information.

The int return type is intentional and is designed to allow cascading of constant time operations:

    long l1 = 1;
    long l2 = 1;
    long l3 = 1;
    long l4 = 500;
    boolean equals = (equalsConstantTime(l1, l2) & equalsConstantTime(l3, l4)) != 0;
Parameters
x:long

the first value.

y:long

the second value.

Returns:int

0 if not equal. 1 if equal.

equalsConstantTimeback to summary
public static int equalsConstantTime(byte[] bytes1, int startPos1, byte[] bytes2, int startPos2, int length)

Compare two byte arrays for equality without leaking timing information. For performance reasons no bounds checking on the parameters is performed.

The int return type is intentional and is designed to allow cascading of constant time operations:

    byte[] s1 = new {1, 2, 3};
    byte[] s2 = new {1, 2, 3};
    byte[] s3 = new {1, 2, 3};
    byte[] s4 = new {4, 5, 6};
    boolean equals = (equalsConstantTime(s1, 0, s2, 0, s1.length) &
                      equalsConstantTime(s3, 0, s4, 0, s3.length)) != 0;
Parameters
bytes1:byte[]

the first byte array.

startPos1:int

the position (inclusive) to start comparing in bytes1.

bytes2:byte[]

the second byte array.

startPos2:int

the position (inclusive) to start comparing in bytes2.

length:int

the amount of bytes to compare. This is assumed to be validated as not going out of bounds by the caller.

Returns:int

0 if not equal. 1 if equal.

equalsConstantTimeback to summary
public static int equalsConstantTime(CharSequence s1, CharSequence s2)

Compare two CharSequence objects without leaking timing information.

The int return type is intentional and is designed to allow cascading of constant time operations:

    String s1 = "foo";
    String s2 = "foo";
    String s3 = "foo";
    String s4 = "goo";
    boolean equals = (equalsConstantTime(s1, s2) & equalsConstantTime(s3, s4)) != 0;
Parameters
s1:CharSequence

the first value.

s2:CharSequence

the second value.

Returns:int

0 if not equal. 1 if equal.