initial (almost) phase-1 reticulum implementation

This commit is contained in:
Jürg Schulthess
2024-03-24 18:24:13 +01:00
parent f6b91df7b6
commit 0c8c722097
10 changed files with 883 additions and 0 deletions

View File

@@ -0,0 +1,70 @@
package org.qortal.test.network;
import org.apache.commons.lang3.StringUtils;
//import org.junit.Before;
//import org.junit.Ignore;
import org.junit.Test;
//import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
//import java.util.Arrays;
import static io.reticulum.constant.ReticulumConstant.ETC_DIR;
import static org.apache.commons.lang3.SystemUtils.USER_HOME;
//import static org.junit.Assert.assertNotNull;
class ReticulumTest {
//@Test
//void t() throws DecoderException {
// System.out.println(Arrays.toString(Hex.decodeHex("adf54d882c9a9b80771eb4995d702d4a3e733391b2a0f53f416d9f907e55cff8")));
// System.out.println(2 + 1 + (128 / 8) * 2);
//}
@Test
void path() {
System.out.println(initConfig(null));
}
//@Test
//void testConfigYamlParse() throws IOException {
// var config = ConfigObj.initConfig(Path.of(getSystemClassLoader().getResource("reticulum.default.yml").getPath()));
// assertNotNull(config);
//}
//@Test
//void testHKDF() {
// var ifac_netname = "name";
// var ifac_netkey = "password";
// var ifacOrigin = new byte[]{};
// ifacOrigin = ArrayUtils.addAll(ifacOrigin, getSha256Digest().digest(ifac_netname.getBytes(UTF_8)));
// ifacOrigin = ArrayUtils.addAll(ifacOrigin, getSha256Digest().digest(ifac_netkey.getBytes(UTF_8)));
//
// var ifacOriginHash = getSha256Digest().digest(ifacOrigin);
//
// var HKDF = new HKDFBytesGenerator(new SHA256Digest());
// HKDF.init(new HKDFParameters(ifacOriginHash, IFAC_SALT, new byte[0]));
// var result = new byte[64];
// var len = HKDF.generateBytes(result, 0, result.length);
//
// assertNotNull(Hex.encodeHexString(result));
//}
private String initConfig(String configDir) {
if (StringUtils.isNotBlank(configDir)) {
return configDir;
} else {
if (Files.isDirectory(Path.of(ETC_DIR)) && Files.exists(Path.of(ETC_DIR, "config"))) {
return ETC_DIR;
} else if (
Files.isDirectory(Path.of(USER_HOME, ".config", "reticulum"))
&& Files.exists(Path.of(USER_HOME, ".config", "reticulum", "config"))
) {
return Path.of(USER_HOME, ".config", "reticulum").toString();
} else {
return Path.of(USER_HOME, ".reticulum").toString();
}
}
}
}