Allow upgrading between different SCrypt encodings

Fixes gh-7057
This commit is contained in:
Lars Grefer
2019-06-28 23:41:51 +02:00
committed by Rob Winch
parent 742df2cd1d
commit e95effc839
2 changed files with 54 additions and 0 deletions

View File

@@ -116,5 +116,35 @@ public class SCryptPasswordEncoderTests {
new SCryptPasswordEncoder(2, 8, 1, -1, 16);
}
@Test
public void upgradeEncoding_nullOrEmptyInput() {
SCryptPasswordEncoder encoder = new SCryptPasswordEncoder();
assertThat(encoder.upgradeEncoding(null)).isFalse();
assertThat(encoder.upgradeEncoding("")).isFalse();
}
@Test
public void upgradeEncoding_sameEncoder() {
SCryptPasswordEncoder encoder = new SCryptPasswordEncoder();
String encoded = encoder.encode("password");
assertThat(encoder.upgradeEncoding(encoded)).isFalse();
}
@Test
public void upgradeEncoding_weakerToStronger() {
SCryptPasswordEncoder weakEncoder = new SCryptPasswordEncoder((int) Math.pow(2, 10), 4, 1, 32, 64);
SCryptPasswordEncoder strongEncoder = new SCryptPasswordEncoder((int) Math.pow(2, 16), 8, 1, 32, 64);
String weakPassword = weakEncoder.encode("password");
String strongPassword = strongEncoder.encode("password");
assertThat(strongEncoder.upgradeEncoding(weakPassword)).isTrue();
assertThat(weakEncoder.upgradeEncoding(strongPassword)).isFalse();
}
@Test(expected = IllegalArgumentException.class)
public void upgradeEncoding_invalidInput() {
new SCryptPasswordEncoder().upgradeEncoding("not-a-scrypt-password");
}
}