1
0
Fork 0
mirror of https://github.com/pgpainless/pgpainless.git synced 2025-09-11 19:29:39 +02:00

Make Passphrase comparison constant time

This commit is contained in:
Paul Schaub 2021-11-29 21:55:35 +01:00
parent 729b33a116
commit 176ad09d19
Signed by: vanitasvitae
GPG key ID: 62BEE9264BF17311
3 changed files with 57 additions and 1 deletions

View file

@ -5,6 +5,8 @@
package org.pgpainless.util;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.IOException;
import java.security.InvalidAlgorithmParameterException;
@ -88,4 +90,18 @@ public class BCUtilTest {
assertEquals(pubColSize, secColSize);
}
@Test
public void constantTimeAreEqualsTest() {
char[] b = "Hello".toCharArray();
assertTrue(BCUtil.constantTimeAreEqual(b, b));
assertTrue(BCUtil.constantTimeAreEqual("Hello".toCharArray(), "Hello".toCharArray()));
assertTrue(BCUtil.constantTimeAreEqual(new char[0], new char[0]));
assertTrue(BCUtil.constantTimeAreEqual(new char[] {'H', 'e', 'l', 'l', 'o'}, "Hello".toCharArray()));
assertFalse(BCUtil.constantTimeAreEqual("Hello".toCharArray(), "Hello World".toCharArray()));
assertFalse(BCUtil.constantTimeAreEqual(null, "Hello".toCharArray()));
assertFalse(BCUtil.constantTimeAreEqual("Hello".toCharArray(), null));
assertFalse(BCUtil.constantTimeAreEqual(null, null));
}
}