mirror of
https://github.com/GravitLauncher/Launcher
synced 2025-04-22 07:53:04 +03:00
Compare commits
9 commits
c0ae41e447
...
c217f1fbe9
Author | SHA1 | Date | |
---|---|---|---|
|
c217f1fbe9 | ||
|
834fbab12b | ||
|
822872992f | ||
|
ac43034d45 | ||
|
05530b6664 | ||
|
8f20cbe104 | ||
|
66d8b9d9ca | ||
|
90ee90973e | ||
|
8bf58cff18 |
5 changed files with 48 additions and 6 deletions
|
@ -0,0 +1,42 @@
|
||||||
|
package pro.gravit.launchserver.auth.password;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
import org.bouncycastle.crypto.digests.SHA256Digest;
|
||||||
|
import org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator;
|
||||||
|
import org.bouncycastle.crypto.params.KeyParameter;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.Base64;
|
||||||
|
|
||||||
|
public class DjangoPasswordVerifier extends PasswordVerifier {
|
||||||
|
public final Integer DEFAULT_ITERATIONS = 10000;
|
||||||
|
private static final Logger logger = LogManager.getLogger();
|
||||||
|
private static final String algorithm = "pbkdf2_sha256";
|
||||||
|
|
||||||
|
public String getEncodedHash(String password, String salt, int iterations) {
|
||||||
|
PKCS5S2ParametersGenerator generator = new PKCS5S2ParametersGenerator(new SHA256Digest());
|
||||||
|
generator.init(password.getBytes(StandardCharsets.UTF_8), salt.getBytes(), iterations);
|
||||||
|
byte[] dk = ((KeyParameter) generator.generateDerivedParameters(256)).getKey();
|
||||||
|
byte[] hashBase64 = Base64.getEncoder().encode(dk);
|
||||||
|
return new String(hashBase64);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String encode(String password, String salt, int iterations) {
|
||||||
|
String hash = getEncodedHash(password, salt, iterations);
|
||||||
|
return String.format("%s$%d$%s$%s", algorithm, iterations, salt, hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean check(String encryptedPassword, String password) {
|
||||||
|
String[] params = encryptedPassword.split("\\$");
|
||||||
|
if (params.length != 4) {
|
||||||
|
logger.warn(" end 1 " + params.length);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
int iterations = Integer.parseInt(params[1]);
|
||||||
|
String salt = params[2];
|
||||||
|
String hash = encode(password, salt, iterations);
|
||||||
|
return hash.equals(encryptedPassword);
|
||||||
|
}
|
||||||
|
}
|
|
@ -15,6 +15,7 @@ public static void registerProviders() {
|
||||||
providers.register("bcrypt", BCryptPasswordVerifier.class);
|
providers.register("bcrypt", BCryptPasswordVerifier.class);
|
||||||
providers.register("accept", AcceptPasswordVerifier.class);
|
providers.register("accept", AcceptPasswordVerifier.class);
|
||||||
providers.register("reject", RejectPasswordVerifier.class);
|
providers.register("reject", RejectPasswordVerifier.class);
|
||||||
|
providers.register("django", DjangoPasswordVerifier.class);
|
||||||
registeredProviders = true;
|
registeredProviders = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,7 +117,7 @@ public void invoke(String... args) throws Exception {
|
||||||
Files.deleteIfExists(proguardConf.mappings);
|
Files.deleteIfExists(proguardConf.mappings);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return null;
|
return commands;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class ProGuardMultiReleaseFixer implements LauncherBuildTask {
|
public static class ProGuardMultiReleaseFixer implements LauncherBuildTask {
|
||||||
|
|
|
@ -49,7 +49,6 @@ public static ClientProfile makeProfile(ClientProfile.Version version, String ti
|
||||||
// Official Mojang launcher java arguments
|
// Official Mojang launcher java arguments
|
||||||
if (version.compareTo(ClientProfileVersions.MINECRAFT_1_12_2) <= 0) {
|
if (version.compareTo(ClientProfileVersions.MINECRAFT_1_12_2) <= 0) {
|
||||||
// lwjgl3ify arguments https://github.com/GTNewHorizons/lwjgl3ify
|
// lwjgl3ify arguments https://github.com/GTNewHorizons/lwjgl3ify
|
||||||
jvmArgs.add("-Djava.security.manager=allow");
|
|
||||||
jvmArgs.add("--add-opens");
|
jvmArgs.add("--add-opens");
|
||||||
jvmArgs.add("java.base/jdk.internal.loader=ALL-UNNAMED");
|
jvmArgs.add("java.base/jdk.internal.loader=ALL-UNNAMED");
|
||||||
jvmArgs.add("--add-opens");
|
jvmArgs.add("--add-opens");
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
project.ext {
|
project.ext {
|
||||||
verAsm = '9.7.1'
|
verAsm = '9.7.1'
|
||||||
verNetty = '4.2.0.RC3'
|
verNetty = '4.2.0.RC4'
|
||||||
verOshiCore = '6.6.6'
|
verOshiCore = '6.8.0'
|
||||||
verJunit = '5.11.4'
|
verJunit = '5.11.4'
|
||||||
verJansi = '2.4.1'
|
verJansi = '2.4.1'
|
||||||
verJline = '3.29.0'
|
verJline = '3.29.0'
|
||||||
verJwt = '0.12.6'
|
verJwt = '0.12.6'
|
||||||
verGson = '2.12.1'
|
verGson = '2.12.1'
|
||||||
verBcpkix = '1.80'
|
verBcpkix = '1.80'
|
||||||
verSlf4j = '2.0.16'
|
verSlf4j = '2.0.17'
|
||||||
verLog4j = '2.24.3'
|
verLog4j = '2.24.3'
|
||||||
verMySQLConn = '9.2.0'
|
verMySQLConn = '9.2.0'
|
||||||
verMariaDBConn = '3.5.1'
|
verMariaDBConn = '3.5.1'
|
||||||
verPostgreSQLConn = '42.7.5'
|
verPostgreSQLConn = '42.7.5'
|
||||||
verH2Conn = '2.3.232'
|
verH2Conn = '2.3.232'
|
||||||
verProguard = '7.6.1'
|
verProguard = '7.7.0'
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue