Fix Java 9 support for Pbkdf2Django (#1390)
* Replace DatatypeConverter in Pbkdf2Django to support Java 9 * Fix NPE in AuthMeInitializer and CastException in Recovery tests * Set logger for SetPasswordTest to prevent NPE on logging * Use TestHelper for initializing ConsoleLogger
This commit is contained in:
parent
d8d87c8b67
commit
316f8fc642
@ -6,7 +6,9 @@ addons:
|
|||||||
- git
|
- git
|
||||||
|
|
||||||
language: java
|
language: java
|
||||||
jdk: oraclejdk8
|
jdk:
|
||||||
|
- oraclejdk8
|
||||||
|
- oraclejdk9
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- "sudo git clone https://www.github.com/P-H-C/phc-winner-argon2.git argon2-src"
|
- "sudo git clone https://www.github.com/P-H-C/phc-winner-argon2.git argon2-src"
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import de.rtner.security.auth.spi.PBKDF2Parameters;
|
|||||||
import fr.xephi.authme.ConsoleLogger;
|
import fr.xephi.authme.ConsoleLogger;
|
||||||
import fr.xephi.authme.security.crypts.description.AsciiRestricted;
|
import fr.xephi.authme.security.crypts.description.AsciiRestricted;
|
||||||
|
|
||||||
import javax.xml.bind.DatatypeConverter;
|
import java.util.Base64;
|
||||||
|
|
||||||
@AsciiRestricted
|
@AsciiRestricted
|
||||||
public class Pbkdf2Django extends HexSaltedMethod {
|
public class Pbkdf2Django extends HexSaltedMethod {
|
||||||
@ -18,7 +18,7 @@ public class Pbkdf2Django extends HexSaltedMethod {
|
|||||||
PBKDF2Parameters params = new PBKDF2Parameters("HmacSHA256", "ASCII", salt.getBytes(), DEFAULT_ITERATIONS);
|
PBKDF2Parameters params = new PBKDF2Parameters("HmacSHA256", "ASCII", salt.getBytes(), DEFAULT_ITERATIONS);
|
||||||
PBKDF2Engine engine = new PBKDF2Engine(params);
|
PBKDF2Engine engine = new PBKDF2Engine(params);
|
||||||
|
|
||||||
return result + DatatypeConverter.printBase64Binary(engine.deriveKey(password, 32));
|
return result + Base64.getEncoder().encodeToString(engine.deriveKey(password, 32));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -35,7 +35,7 @@ public class Pbkdf2Django extends HexSaltedMethod {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
String salt = line[2];
|
String salt = line[2];
|
||||||
byte[] derivedKey = DatatypeConverter.parseBase64Binary(line[3]);
|
byte[] derivedKey = Base64.getDecoder().decode(line[3]);
|
||||||
PBKDF2Parameters params = new PBKDF2Parameters("HmacSHA256", "ASCII", salt.getBytes(), iterations, derivedKey);
|
PBKDF2Parameters params = new PBKDF2Parameters("HmacSHA256", "ASCII", salt.getBytes(), iterations, derivedKey);
|
||||||
PBKDF2Engine engine = new PBKDF2Engine(params);
|
PBKDF2Engine engine = new PBKDF2Engine(params);
|
||||||
return engine.verifyKey(password);
|
return engine.verifyKey(password);
|
||||||
|
|||||||
@ -4,7 +4,6 @@ import ch.jalu.configme.resource.PropertyResource;
|
|||||||
import ch.jalu.injector.Injector;
|
import ch.jalu.injector.Injector;
|
||||||
import ch.jalu.injector.InjectorBuilder;
|
import ch.jalu.injector.InjectorBuilder;
|
||||||
import com.google.common.io.Files;
|
import com.google.common.io.Files;
|
||||||
import fr.xephi.authme.api.NewAPI;
|
|
||||||
import fr.xephi.authme.api.v3.AuthMeApi;
|
import fr.xephi.authme.api.v3.AuthMeApi;
|
||||||
import fr.xephi.authme.command.CommandHandler;
|
import fr.xephi.authme.command.CommandHandler;
|
||||||
import fr.xephi.authme.datasource.DataSource;
|
import fr.xephi.authme.datasource.DataSource;
|
||||||
@ -76,7 +75,7 @@ public class AuthMeInitializationTest {
|
|||||||
Files.copy(TestHelper.getJarFile(TestHelper.PROJECT_ROOT + "config.test.yml"), settingsFile);
|
Files.copy(TestHelper.getJarFile(TestHelper.PROJECT_ROOT + "config.test.yml"), settingsFile);
|
||||||
|
|
||||||
// Mock / wire various Bukkit components
|
// Mock / wire various Bukkit components
|
||||||
given(server.getLogger()).willReturn(mock(Logger.class));
|
given(server.getLogger()).willReturn(Logger.getAnonymousLogger());
|
||||||
ReflectionTestUtils.setField(Bukkit.class, null, "server", server);
|
ReflectionTestUtils.setField(Bukkit.class, null, "server", server);
|
||||||
given(server.getPluginManager()).willReturn(pluginManager);
|
given(server.getPluginManager()).willReturn(pluginManager);
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package fr.xephi.authme.command.executable.email;
|
package fr.xephi.authme.command.executable.email;
|
||||||
|
|
||||||
|
import fr.xephi.authme.TestHelper;
|
||||||
import fr.xephi.authme.datasource.DataSource;
|
import fr.xephi.authme.datasource.DataSource;
|
||||||
import fr.xephi.authme.message.MessageKey;
|
import fr.xephi.authme.message.MessageKey;
|
||||||
import fr.xephi.authme.security.PasswordSecurity;
|
import fr.xephi.authme.security.PasswordSecurity;
|
||||||
@ -8,6 +9,7 @@ import fr.xephi.authme.service.CommonService;
|
|||||||
import fr.xephi.authme.service.PasswordRecoveryService;
|
import fr.xephi.authme.service.PasswordRecoveryService;
|
||||||
import fr.xephi.authme.service.ValidationService;
|
import fr.xephi.authme.service.ValidationService;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.InjectMocks;
|
import org.mockito.InjectMocks;
|
||||||
@ -45,6 +47,11 @@ public class SetPasswordCommandTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private ValidationService validationService;
|
private ValidationService validationService;
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void setUpLogger() {
|
||||||
|
TestHelper.setupLogger();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldChangePassword() {
|
public void shouldChangePassword() {
|
||||||
// given
|
// given
|
||||||
|
|||||||
@ -125,7 +125,7 @@ public class RecoveryCodeServiceTest {
|
|||||||
return ReflectionTestUtils.getFieldValue(RecoveryCodeService.class, recoveryCodeService, "recoveryCodes");
|
return ReflectionTestUtils.getFieldValue(RecoveryCodeService.class, recoveryCodeService, "recoveryCodes");
|
||||||
}
|
}
|
||||||
|
|
||||||
private ExpiringMap<String, String> getTriesCounter() {
|
private ExpiringMap<String, Integer> getTriesCounter() {
|
||||||
return ReflectionTestUtils.getFieldValue(RecoveryCodeService.class, recoveryCodeService, "playerTries");
|
return ReflectionTestUtils.getFieldValue(RecoveryCodeService.class, recoveryCodeService, "playerTries");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user