mirror of
https://github.com/OMGeeky/ATCS.git
synced 2025-12-30 00:03:29 +01:00
Added link to Weblate from translatable strings once the translator mode
is activated in the workspace settings. This required the addition of a new lib (in source form) for a SipHash implementation.
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
package com.zackehh.siphash;
|
||||
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
public class SipHashCaseTest {
|
||||
|
||||
@Test
|
||||
public void ensureAllValues() throws Exception {
|
||||
SipHashCase[] cases = SipHashCase.values();
|
||||
|
||||
Assert.assertEquals(cases[0], SipHashCase.UPPER);
|
||||
Assert.assertEquals(cases[1], SipHashCase.LOWER);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void ensureValueOf() throws Exception {
|
||||
Assert.assertEquals(SipHashCase.valueOf("UPPER"), SipHashCase.UPPER);
|
||||
Assert.assertEquals(SipHashCase.valueOf("LOWER"), SipHashCase.LOWER);
|
||||
}
|
||||
|
||||
@Test(expectedExceptions = IllegalArgumentException.class)
|
||||
public void invalidCaseValueOf() throws Exception {
|
||||
SipHashCase.valueOf("invalid");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.zackehh.siphash;
|
||||
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Modifier;
|
||||
|
||||
public class SipHashConstantsTest {
|
||||
|
||||
@Test
|
||||
public void ensureAllConstants() throws Exception {
|
||||
Assert.assertEquals(SipHashConstants.INITIAL_V0, 0x736f6d6570736575L);
|
||||
Assert.assertEquals(SipHashConstants.INITIAL_V1, 0x646f72616e646f6dL);
|
||||
Assert.assertEquals(SipHashConstants.INITIAL_V2, 0x6c7967656e657261L);
|
||||
Assert.assertEquals(SipHashConstants.INITIAL_V3, 0x7465646279746573L);
|
||||
Assert.assertEquals(SipHashConstants.DEFAULT_C, 2);
|
||||
Assert.assertEquals(SipHashConstants.DEFAULT_D, 4);
|
||||
Assert.assertEquals(SipHashConstants.DEFAULT_CASE, SipHashCase.LOWER);
|
||||
Assert.assertEquals(SipHashConstants.DEFAULT_PADDING, false);
|
||||
}
|
||||
|
||||
@Test(expectedExceptions = InvocationTargetException.class)
|
||||
public void ensureCannotInstance() throws Exception {
|
||||
Constructor<SipHashConstants> ctor = SipHashConstants.class.getDeclaredConstructor();
|
||||
ctor.setAccessible(true);
|
||||
Assert.assertTrue(Modifier.isPrivate(ctor.getModifiers()));
|
||||
ctor.newInstance();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,148 @@
|
||||
package com.zackehh.siphash;
|
||||
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
public class SipHashDigestTest {
|
||||
|
||||
@Test
|
||||
public void initializeDigestWithKey() throws Exception {
|
||||
SipHashDigest sipHash = new SipHashDigest("0123456789ABCDEF".getBytes());
|
||||
|
||||
long v0 = SipHashTestUtils.getPrivateField(sipHash, "v0", Long.class);
|
||||
long v1 = SipHashTestUtils.getPrivateField(sipHash, "v1", Long.class);
|
||||
long v2 = SipHashTestUtils.getPrivateField(sipHash, "v2", Long.class);
|
||||
long v3 = SipHashTestUtils.getPrivateField(sipHash, "v3", Long.class);
|
||||
|
||||
Assert.assertEquals(v0, 4925064773550298181L);
|
||||
Assert.assertEquals(v1, 2461839666708829781L);
|
||||
Assert.assertEquals(v2, 6579568090023412561L);
|
||||
Assert.assertEquals(v3, 3611922228250500171L);
|
||||
|
||||
int c = SipHashTestUtils.getPrivateField(sipHash, "c", Integer.class);
|
||||
int d = SipHashTestUtils.getPrivateField(sipHash, "d", Integer.class);
|
||||
|
||||
Assert.assertEquals(c, SipHashConstants.DEFAULT_C);
|
||||
Assert.assertEquals(d, SipHashConstants.DEFAULT_D);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeDigestWithKeyAndCD() throws Exception {
|
||||
SipHashDigest sipHash = new SipHashDigest("0123456789ABCDEF".getBytes(), 4, 8);
|
||||
|
||||
long v0 = SipHashTestUtils.getPrivateField(sipHash, "v0", Long.class);
|
||||
long v1 = SipHashTestUtils.getPrivateField(sipHash, "v1", Long.class);
|
||||
long v2 = SipHashTestUtils.getPrivateField(sipHash, "v2", Long.class);
|
||||
long v3 = SipHashTestUtils.getPrivateField(sipHash, "v3", Long.class);
|
||||
|
||||
Assert.assertEquals(v0, 4925064773550298181L);
|
||||
Assert.assertEquals(v1, 2461839666708829781L);
|
||||
Assert.assertEquals(v2, 6579568090023412561L);
|
||||
Assert.assertEquals(v3, 3611922228250500171L);
|
||||
|
||||
int c = SipHashTestUtils.getPrivateField(sipHash, "c", Integer.class);
|
||||
int d = SipHashTestUtils.getPrivateField(sipHash, "d", Integer.class);
|
||||
|
||||
Assert.assertEquals(c, 4);
|
||||
Assert.assertEquals(d, 8);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeDigestWithKeyThenHash() throws Exception {
|
||||
SipHashDigest sipHash = new SipHashDigest("0123456789ABCDEF".getBytes());
|
||||
|
||||
long v0 = SipHashTestUtils.getPrivateField(sipHash, "v0", Long.class);
|
||||
long v1 = SipHashTestUtils.getPrivateField(sipHash, "v1", Long.class);
|
||||
long v2 = SipHashTestUtils.getPrivateField(sipHash, "v2", Long.class);
|
||||
long v3 = SipHashTestUtils.getPrivateField(sipHash, "v3", Long.class);
|
||||
|
||||
Assert.assertEquals(v0, 4925064773550298181L);
|
||||
Assert.assertEquals(v1, 2461839666708829781L);
|
||||
Assert.assertEquals(v2, 6579568090023412561L);
|
||||
Assert.assertEquals(v3, 3611922228250500171L);
|
||||
|
||||
int c = SipHashTestUtils.getPrivateField(sipHash, "c", Integer.class);
|
||||
int d = SipHashTestUtils.getPrivateField(sipHash, "d", Integer.class);
|
||||
|
||||
Assert.assertEquals(c, SipHashConstants.DEFAULT_C);
|
||||
Assert.assertEquals(d, SipHashConstants.DEFAULT_D);
|
||||
|
||||
for(byte b : "zymotechnics".getBytes()){
|
||||
sipHash.update(b);
|
||||
}
|
||||
|
||||
SipHashResult hashResult = sipHash.finish();
|
||||
|
||||
Assert.assertEquals(hashResult.get(), 699588702094987020L);
|
||||
Assert.assertEquals(hashResult.getHex(), "9b57037cd3f8f0c");
|
||||
Assert.assertEquals(hashResult.getHex(true), "09b57037cd3f8f0c");
|
||||
Assert.assertEquals(hashResult.getHex(SipHashCase.UPPER), "9B57037CD3F8F0C");
|
||||
Assert.assertEquals(hashResult.getHex(true, SipHashCase.UPPER), "09B57037CD3F8F0C");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeStateWithKeyAndCDThenHash() throws Exception {
|
||||
SipHashDigest sipHash = new SipHashDigest("0123456789ABCDEF".getBytes(), 4, 8);
|
||||
|
||||
long v0 = SipHashTestUtils.getPrivateField(sipHash, "v0", Long.class);
|
||||
long v1 = SipHashTestUtils.getPrivateField(sipHash, "v1", Long.class);
|
||||
long v2 = SipHashTestUtils.getPrivateField(sipHash, "v2", Long.class);
|
||||
long v3 = SipHashTestUtils.getPrivateField(sipHash, "v3", Long.class);
|
||||
|
||||
Assert.assertEquals(v0, 4925064773550298181L);
|
||||
Assert.assertEquals(v1, 2461839666708829781L);
|
||||
Assert.assertEquals(v2, 6579568090023412561L);
|
||||
Assert.assertEquals(v3, 3611922228250500171L);
|
||||
|
||||
int c = SipHashTestUtils.getPrivateField(sipHash, "c", Integer.class);
|
||||
int d = SipHashTestUtils.getPrivateField(sipHash, "d", Integer.class);
|
||||
|
||||
Assert.assertEquals(c, 4);
|
||||
Assert.assertEquals(d, 8);
|
||||
|
||||
for(byte b : "zymotechnics".getBytes()){
|
||||
sipHash.update(b);
|
||||
}
|
||||
|
||||
SipHashResult hashResult = sipHash.finish();
|
||||
|
||||
Assert.assertEquals(hashResult.get(), -3891084581787974112L); // overflow
|
||||
Assert.assertEquals(hashResult.getHex(), "ca0017304f874620");
|
||||
Assert.assertEquals(hashResult.getHex(true), "ca0017304f874620");
|
||||
Assert.assertEquals(hashResult.getHex(SipHashCase.UPPER), "CA0017304F874620");
|
||||
Assert.assertEquals(hashResult.getHex(true, SipHashCase.UPPER), "CA0017304F874620");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateWithAByteArrayChunk() throws Exception {
|
||||
SipHashDigest sipHash = new SipHashDigest("0123456789ABCDEF".getBytes());
|
||||
|
||||
long v0 = SipHashTestUtils.getPrivateField(sipHash, "v0", Long.class);
|
||||
long v1 = SipHashTestUtils.getPrivateField(sipHash, "v1", Long.class);
|
||||
long v2 = SipHashTestUtils.getPrivateField(sipHash, "v2", Long.class);
|
||||
long v3 = SipHashTestUtils.getPrivateField(sipHash, "v3", Long.class);
|
||||
|
||||
Assert.assertEquals(v0, 4925064773550298181L);
|
||||
Assert.assertEquals(v1, 2461839666708829781L);
|
||||
Assert.assertEquals(v2, 6579568090023412561L);
|
||||
Assert.assertEquals(v3, 3611922228250500171L);
|
||||
|
||||
int c = SipHashTestUtils.getPrivateField(sipHash, "c", Integer.class);
|
||||
int d = SipHashTestUtils.getPrivateField(sipHash, "d", Integer.class);
|
||||
|
||||
Assert.assertEquals(c, SipHashConstants.DEFAULT_C);
|
||||
Assert.assertEquals(d, SipHashConstants.DEFAULT_D);
|
||||
|
||||
sipHash.update("zymo".getBytes());
|
||||
sipHash.update("techni".getBytes());
|
||||
sipHash.update("cs".getBytes());
|
||||
|
||||
SipHashResult hashResult = sipHash.finish();
|
||||
|
||||
Assert.assertEquals(hashResult.get(), 699588702094987020L);
|
||||
Assert.assertEquals(hashResult.getHex(), "9b57037cd3f8f0c");
|
||||
Assert.assertEquals(hashResult.getHex(true), "09b57037cd3f8f0c");
|
||||
Assert.assertEquals(hashResult.getHex(SipHashCase.UPPER), "9B57037CD3F8F0C");
|
||||
Assert.assertEquals(hashResult.getHex(true, SipHashCase.UPPER), "09B57037CD3F8F0C");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.zackehh.siphash;
|
||||
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
public class SipHashKeyTest {
|
||||
|
||||
@Test
|
||||
public void initializeWithKey() throws Exception {
|
||||
SipHashKey key = new SipHashKey("0123456789ABCDEF".getBytes());
|
||||
|
||||
long k0 = SipHashTestUtils.getPrivateField(key, "k0", Long.class);
|
||||
long k1 = SipHashTestUtils.getPrivateField(key, "k1", Long.class);
|
||||
|
||||
Assert.assertEquals(k0, 3978425819141910832L);
|
||||
Assert.assertEquals(k1, 5063528411713059128L);
|
||||
}
|
||||
|
||||
@Test(
|
||||
expectedExceptions = IllegalArgumentException.class,
|
||||
expectedExceptionsMessageRegExp = "Key must be exactly 16 bytes!"
|
||||
)
|
||||
public void initializeWithKeyTooLong() throws Exception {
|
||||
new SipHashKey("0123456789ABCDEFG".getBytes()); // 17 bytes
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
package com.zackehh.siphash;
|
||||
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
public class SipHashTest {
|
||||
|
||||
@Test
|
||||
public void initializeStateWithKey() throws Exception {
|
||||
SipHash sipHash = new SipHash("0123456789ABCDEF".getBytes());
|
||||
|
||||
long v0 = SipHashTestUtils.getPrivateField(sipHash, "v0", Long.class);
|
||||
long v1 = SipHashTestUtils.getPrivateField(sipHash, "v1", Long.class);
|
||||
long v2 = SipHashTestUtils.getPrivateField(sipHash, "v2", Long.class);
|
||||
long v3 = SipHashTestUtils.getPrivateField(sipHash, "v3", Long.class);
|
||||
|
||||
Assert.assertEquals(v0, 4925064773550298181L);
|
||||
Assert.assertEquals(v1, 2461839666708829781L);
|
||||
Assert.assertEquals(v2, 6579568090023412561L);
|
||||
Assert.assertEquals(v3, 3611922228250500171L);
|
||||
|
||||
int c = SipHashTestUtils.getPrivateField(sipHash, "c", Integer.class);
|
||||
int d = SipHashTestUtils.getPrivateField(sipHash, "d", Integer.class);
|
||||
|
||||
Assert.assertEquals(c, SipHashConstants.DEFAULT_C);
|
||||
Assert.assertEquals(d, SipHashConstants.DEFAULT_D);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeStateWithKeyAndCD() throws Exception {
|
||||
SipHash sipHash = new SipHash("0123456789ABCDEF".getBytes(), 4, 8);
|
||||
|
||||
long v0 = SipHashTestUtils.getPrivateField(sipHash, "v0", Long.class);
|
||||
long v1 = SipHashTestUtils.getPrivateField(sipHash, "v1", Long.class);
|
||||
long v2 = SipHashTestUtils.getPrivateField(sipHash, "v2", Long.class);
|
||||
long v3 = SipHashTestUtils.getPrivateField(sipHash, "v3", Long.class);
|
||||
|
||||
Assert.assertEquals(v0, 4925064773550298181L);
|
||||
Assert.assertEquals(v1, 2461839666708829781L);
|
||||
Assert.assertEquals(v2, 6579568090023412561L);
|
||||
Assert.assertEquals(v3, 3611922228250500171L);
|
||||
|
||||
int c = SipHashTestUtils.getPrivateField(sipHash, "c", Integer.class);
|
||||
int d = SipHashTestUtils.getPrivateField(sipHash, "d", Integer.class);
|
||||
|
||||
Assert.assertEquals(c, 4);
|
||||
Assert.assertEquals(d, 8);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeStateWithKeyThenHash() throws Exception {
|
||||
SipHash sipHash = new SipHash("0123456789ABCDEF".getBytes());
|
||||
|
||||
long v0 = SipHashTestUtils.getPrivateField(sipHash, "v0", Long.class);
|
||||
long v1 = SipHashTestUtils.getPrivateField(sipHash, "v1", Long.class);
|
||||
long v2 = SipHashTestUtils.getPrivateField(sipHash, "v2", Long.class);
|
||||
long v3 = SipHashTestUtils.getPrivateField(sipHash, "v3", Long.class);
|
||||
|
||||
Assert.assertEquals(v0, 4925064773550298181L);
|
||||
Assert.assertEquals(v1, 2461839666708829781L);
|
||||
Assert.assertEquals(v2, 6579568090023412561L);
|
||||
Assert.assertEquals(v3, 3611922228250500171L);
|
||||
|
||||
int c = SipHashTestUtils.getPrivateField(sipHash, "c", Integer.class);
|
||||
int d = SipHashTestUtils.getPrivateField(sipHash, "d", Integer.class);
|
||||
|
||||
Assert.assertEquals(c, SipHashConstants.DEFAULT_C);
|
||||
Assert.assertEquals(d, SipHashConstants.DEFAULT_D);
|
||||
|
||||
SipHashResult hashResult = sipHash.hash("zymotechnics".getBytes());
|
||||
|
||||
Assert.assertEquals(hashResult.get(), 699588702094987020L);
|
||||
Assert.assertEquals(hashResult.getHex(), "9b57037cd3f8f0c");
|
||||
Assert.assertEquals(hashResult.getHex(true), "09b57037cd3f8f0c");
|
||||
Assert.assertEquals(hashResult.getHex(SipHashCase.UPPER), "9B57037CD3F8F0C");
|
||||
Assert.assertEquals(hashResult.getHex(true, SipHashCase.UPPER), "09B57037CD3F8F0C");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeStateWithKeyAndCDThenHash() throws Exception {
|
||||
SipHash sipHash = new SipHash("0123456789ABCDEF".getBytes(), 4, 8);
|
||||
|
||||
long v0 = SipHashTestUtils.getPrivateField(sipHash, "v0", Long.class);
|
||||
long v1 = SipHashTestUtils.getPrivateField(sipHash, "v1", Long.class);
|
||||
long v2 = SipHashTestUtils.getPrivateField(sipHash, "v2", Long.class);
|
||||
long v3 = SipHashTestUtils.getPrivateField(sipHash, "v3", Long.class);
|
||||
|
||||
Assert.assertEquals(v0, 4925064773550298181L);
|
||||
Assert.assertEquals(v1, 2461839666708829781L);
|
||||
Assert.assertEquals(v2, 6579568090023412561L);
|
||||
Assert.assertEquals(v3, 3611922228250500171L);
|
||||
|
||||
int c = SipHashTestUtils.getPrivateField(sipHash, "c", Integer.class);
|
||||
int d = SipHashTestUtils.getPrivateField(sipHash, "d", Integer.class);
|
||||
|
||||
Assert.assertEquals(c, 4);
|
||||
Assert.assertEquals(d, 8);
|
||||
|
||||
SipHashResult hashResult = sipHash.hash("zymotechnics".getBytes());
|
||||
|
||||
Assert.assertEquals(hashResult.get(), -3891084581787974112L); // overflow
|
||||
Assert.assertEquals(hashResult.getHex(), "ca0017304f874620");
|
||||
Assert.assertEquals(hashResult.getHex(true), "ca0017304f874620");
|
||||
Assert.assertEquals(hashResult.getHex(SipHashCase.UPPER), "CA0017304F874620");
|
||||
Assert.assertEquals(hashResult.getHex(true, SipHashCase.UPPER), "CA0017304F874620");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.zackehh.siphash;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
public class SipHashTestUtils {
|
||||
|
||||
static <T> T getPrivateField(Object obj, String name, Class<T> clazz) throws Exception {
|
||||
Field f = obj.getClass().getDeclaredField(name);
|
||||
f.setAccessible(true);
|
||||
return clazz.cast(f.get(obj));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user