use of net.sergeych.tools.Binder in project universa by UniversaBlockchain.
the class RoleReferencesTest method serializeAny.
@Test
public void serializeAny() throws Exception {
SimpleRole sr = new SimpleRole("tr1");
sr.addKeyRecord(new KeyRecord(keys.get(0).getPublicKey()));
sr.addRequiredReference("ref", Role.RequiredMode.ANY_OF);
Binder serialized = DefaultBiMapper.serialize(sr);
Role r1 = DefaultBiMapper.deserialize(serialized);
assertEquals(sr, r1);
assertTrue(sr.getReferences(Role.RequiredMode.ALL_OF).isEmpty());
assertEquals(sr.getReferences(Role.RequiredMode.ANY_OF).size(), 1);
assertEquals(sr.getReferences(Role.RequiredMode.ANY_OF).iterator().next(), "ref");
}
use of net.sergeych.tools.Binder in project universa by UniversaBlockchain.
the class SimpleRoleTest method testAddressRole.
@Test
public void testAddressRole() throws Exception {
Set<KeyAddress> keyAddresses = new HashSet<>();
keyAddresses.add(new KeyAddress(keys.get(0).getPublicKey(), 0, true));
SimpleRole sr = new SimpleRole("tr1", keyAddresses);
Binder serialized = DefaultBiMapper.serialize(sr);
Role r1 = DefaultBiMapper.deserialize(serialized);
Set<PublicKey> pubKeys = new HashSet<>();
pubKeys.add(keys.get(0).getPublicKey());
assertTrue(sr.isAllowedForKeys(pubKeys));
assertTrue(r1.isAllowedForKeys(pubKeys));
assertEquals(sr, r1);
}
use of net.sergeych.tools.Binder in project universa by UniversaBlockchain.
the class SimpleRoleTest method serializeMany.
@Test
public void serializeMany() throws Exception {
SimpleRole sr = new SimpleRole("tr1");
keys.forEach(k -> sr.addKeyRecord(new KeyRecord(k.getPublicKey())));
Binder serialized = DefaultBiMapper.serialize(sr);
Role r1 = DefaultBiMapper.deserialize(serialized);
assertEquals(sr, r1);
Set<PublicKey> kk = r1.getKeys();
keys.forEach(k -> assertTrue(kk.contains(k.getPublicKey())));
}
use of net.sergeych.tools.Binder in project universa by UniversaBlockchain.
the class KeyRingTest method saveAndRestore.
@Test
public void saveAndRestore() throws Exception {
KeyRing kr = new KeyRing();
SymmetricKey sk1 = new SymmetricKey();
SymmetricKey sk2 = new SymmetricKey();
AbstractKey privateKey = TestKeys.privateKey(0);
AbstractKey publicKey1 = TestKeys.privateKey(1).getPublicKey();
AbstractKey publicKey2 = privateKey.getPublicKey();
kr.addKeys(sk1, sk2, privateKey, publicKey1, publicKey2);
Binder b = kr.toBinder();
KeyRing kr2 = KeyRing.fromBinder(b);
for (AbstractKey k : kr2.keySet()) {
assertTrue(kr2.contains(k));
assertTrue(kr.contains(k));
}
assertEquals(kr, kr2);
}
use of net.sergeych.tools.Binder in project universa by UniversaBlockchain.
the class KeyRingTest method findKey.
@Test
public void findKey() throws Exception {
KeyInfo i1 = new KeyInfo(KeyInfo.PRF.HMAC_SHA256, 1024, null, null);
AbstractKey pk1 = i1.derivePassword("helluva");
KeyInfo i2 = new KeyInfo(KeyInfo.PRF.HMAC_SHA256, 1025, null, "the tag".getBytes());
AbstractKey pk2 = i2.derivePassword("helluva");
assertEquals(i2.getTag(), pk2.info().getTag());
KeyRing kr = new KeyRing();
SymmetricKey sk1 = new SymmetricKey();
SymmetricKey sk2 = new SymmetricKey();
AbstractKey privateKey = TestKeys.privateKey(0);
AbstractKey publicKey1 = TestKeys.privateKey(1).getPublicKey();
AbstractKey publicKey2 = privateKey.getPublicKey();
kr.addKeys(sk1, sk2, privateKey, publicKey1, publicKey2, pk1, pk2);
kr.addKeys(pk1, pk2);
Binder b = kr.toBinder();
KeyRing kr2 = KeyRing.fromBinder(b);
assertTrue(kr.keySet().contains(pk1));
assertTrue(kr.keySet().contains(pk2));
assertEquals(pk2, kr.findKey(i2).toArray()[0]);
assertEquals(pk2, kr2.findKey(i2).toArray()[0]);
final Collection<AbstractKey> keys = kr.findKey(i1);
assertTrue(keys.contains(pk1));
assertTrue(keys.contains(pk1));
assertTrue(keys.contains(sk1));
assertTrue(keys.contains(sk2));
assertEquals(4, kr2.findKey(i1).size());
}
Aggregations