@Override public boolean isInWhiteList(List<PublicKey> whiteList) { return getSealedByKeys().stream().anyMatch(k -> whiteList.contains(k)); }
private static void doSign() throws IOException { String source = (String) options.valueOf("sign"); List<String> names = (List) options.valuesOf("output"); Contract c = Contract.fromPackedTransaction(Files.readAllBytes(Paths.get(source))); if(c != null) { keysMap().values().forEach( k -> c.addSignatureToSeal(k)); String name; if(names.size() > 0) { name = names.get(0); } else { String suffix = "_signedby_"+String.join("_",c.getSealedByKeys().stream().map(k->k.getShortAddress().toString()).collect(Collectors.toSet())); name = new FilenameTool(source).addSuffixToBase(suffix).toString(); } saveContract(c,name,true,false); } finish(); }
keys = leftOperandContract.getEffectiveKeys(); else keys = leftOperandContract.getSealedByKeys();
public synchronized Contract finishSwap_wrongKey(Contract swapContract, Set<PrivateKey> keys, PrivateKey wrongKey) { List<Contract> swappingContracts = (List<Contract>) swapContract.getNew(); // looking for contract that will be own for (Contract c : swappingContracts) { boolean willBeMine = c.getOwner().isAllowedForKeys(keys); System.out.println("willBeMine: " + willBeMine + " " + c.getSealedByKeys().size()); if(willBeMine) { c.addSignatureToSeal(wrongKey); } } swapContract.seal(); return swapContract; }
c.traceErrors(); System.out.println("c " + " isok=" + c.isOk() + " new: " + c.getNew().size() + " rev: " + c.getRevoking().size() + " ref: " + c.getReferences().size() + " signs:" + c.getSealedByKeys().size() + " data:" + c.getStateData() + " id:" + c.getId()); Contract cNew1 = c.getNew().get(0); Contract cNew2 = c.getNew().get(1); System.out.println("cNew1 new: " + cNew1.getNew().size() + " rev: " + cNew1.getRevoking().size() + " ref: " + cNew1.getReferences().size() + " signs:" + cNew1.getSealedByKeys().size() + " data:" + cNew1.getStateData() + " id:" + cNew1.getId()); System.out.println("cNew2 new: " + cNew2.getNew().size() + " rev: " + cNew2.getRevoking().size() + " ref: " + cNew2.getReferences().size() + " signs:" + cNew2.getSealedByKeys().size() + " data:" + cNew2.getStateData() + " id:" + cNew2.getId()); Contract cRevoke1 = cNew1.getRevoking().get(0); Contract cRevoke2 = cNew2.getRevoking().get(0); System.out.println("cRevoke1 new: " + cRevoke1.getNew().size() + " rev: " + cRevoke1.getRevoking().size() + " ref: " + cRevoke1.getReferences().size() + " signs:" + cRevoke1.getSealedByKeys().size() + " data:" + cRevoke1.getStateData() + " id:" + cRevoke1.getId()); System.out.println("cRevoke2 new: " + cRevoke2.getNew().size() + " rev: " + cRevoke2.getRevoking().size() + " ref: " + cRevoke2.getReferences().size() + " signs:" + cRevoke2.getSealedByKeys().size() + " data:" + cRevoke2.getStateData() + " id:" + cRevoke2.getId()); System.out.println("cNew1_1 new: " + cNew1_1.getNew().size() + " rev: " + cNew1_1.getRevoking().size() + " ref: " + cNew1_1.getReferences().size() + " signs:" + cNew1_1.getSealedByKeys().size() + " data:" + cNew1_1.getStateData() + " id:" + cNew1_1.getId());
@Test public void anonymizeRole() throws Exception { callMain2("-create", rootPath + "TokenDSLTemplate.yml", "--output", basePath + "forRoleAnonymizing.unicon", "-k", rootPath + "_xer0yfe2nn1xthc.private.unikey"); assertTrue (new File(basePath + "forRoleAnonymizing.unicon").exists()); callMain("-anonymize", basePath + "forRoleAnonymizing.unicon", "-role", "issuer"); assertTrue (new File(basePath + "forRoleAnonymizing_anonymized.unicon").exists()); System.out.println(output); PrivateKey key = new PrivateKey(Do.read(rootPath + "_xer0yfe2nn1xthc.private.unikey")); Contract contract = CLIMain.loadContract(basePath + "forRoleAnonymizing_anonymized.unicon", true); assertFalse(contract.getIssuer().getKeys().contains(key.getPublicKey())); Contract anonPublishedContract = new Contract(contract.getLastSealedBinary()); assertFalse(anonPublishedContract.getIssuer().getKeys().contains(key.getPublicKey())); assertFalse(anonPublishedContract.getSealedByKeys().contains(key.getPublicKey())); }
@Test public void anonymizeRoleAndSaveWithName() throws Exception { callMain2("-create", rootPath + "TokenDSLTemplate.yml", "--output", basePath + "forRoleAnonymizing.unicon", "-k", rootPath + "_xer0yfe2nn1xthc.private.unikey"); assertTrue (new File(basePath + "forRoleAnonymizing.unicon").exists()); callMain("-anonymize", basePath + "forRoleAnonymizing.unicon", "-role", "issuer", "--output", basePath + "myAnon.unicon"); assertTrue (new File(basePath + "myAnon.unicon").exists()); System.out.println(output); PrivateKey key = new PrivateKey(Do.read(rootPath + "_xer0yfe2nn1xthc.private.unikey")); Contract contract = CLIMain.loadContract(basePath + "myAnon.unicon", true); assertFalse(contract.getIssuer().getKeys().contains(key.getPublicKey())); Contract anonPublishedContract = new Contract(contract.getLastSealedBinary()); assertFalse(anonPublishedContract.getIssuer().getKeys().contains(key.getPublicKey())); assertFalse(anonPublishedContract.getSealedByKeys().contains(key.getPublicKey())); }
@Test public void anonymizeRoleForTwoContractsWithNames() throws Exception { callMain2("-create", rootPath + "TokenDSLTemplate.yml", "--output", basePath + "forRoleAnonymizing1.unicon", "-k", rootPath + "_xer0yfe2nn1xthc.private.unikey"); callMain2("-create", rootPath + "TokenDSLTemplate.yml", "--output", basePath + "forRoleAnonymizing2.unicon", "-k", rootPath + "_xer0yfe2nn1xthc.private.unikey"); assertTrue (new File(basePath + "forRoleAnonymizing1.unicon").exists()); assertTrue (new File(basePath + "forRoleAnonymizing2.unicon").exists()); callMain("-anonymize", basePath + "forRoleAnonymizing1.unicon", basePath + "forRoleAnonymizing2.unicon", "-role", "issuer", "--output", basePath + "myAnon1.unicon", "--output", basePath + "myAnon2.unicon"); assertTrue (new File(basePath + "myAnon1.unicon").exists()); assertTrue (new File(basePath + "myAnon2.unicon").exists()); System.out.println(output); PrivateKey key = new PrivateKey(Do.read(rootPath + "_xer0yfe2nn1xthc.private.unikey")); Contract contract1 = CLIMain.loadContract(basePath + "myAnon1.unicon", true); assertFalse(contract1.getIssuer().getKeys().contains(key.getPublicKey())); Contract anonPublishedContract1 = new Contract(contract1.getLastSealedBinary()); assertFalse(anonPublishedContract1.getIssuer().getKeys().contains(key.getPublicKey())); assertFalse(anonPublishedContract1.getSealedByKeys().contains(key.getPublicKey())); Contract contract2 = CLIMain.loadContract(basePath + "myAnon2.unicon", true); assertFalse(contract2.getIssuer().getKeys().contains(key.getPublicKey())); Contract anonPublishedContract2 = new Contract(contract2.getLastSealedBinary()); assertFalse(anonPublishedContract2.getIssuer().getKeys().contains(key.getPublicKey())); assertFalse(anonPublishedContract2.getSealedByKeys().contains(key.getPublicKey())); }
@Test public void anonymizeRoleForTwoContracts() throws Exception { callMain2("-create", rootPath + "TokenDSLTemplate.yml", "--output", basePath + "forRoleAnonymizing1.unicon", "-k", rootPath + "_xer0yfe2nn1xthc.private.unikey"); callMain2("-create", rootPath + "TokenDSLTemplate.yml", "--output", basePath + "forRoleAnonymizing2.unicon", "-k", rootPath + "_xer0yfe2nn1xthc.private.unikey"); assertTrue (new File(basePath + "forRoleAnonymizing1.unicon").exists()); assertTrue (new File(basePath + "forRoleAnonymizing2.unicon").exists()); callMain("-anonymize", basePath + "forRoleAnonymizing1.unicon", basePath + "forRoleAnonymizing2.unicon", "-role", "issuer"); assertTrue (new File(basePath + "forRoleAnonymizing1_anonymized.unicon").exists()); assertTrue (new File(basePath + "forRoleAnonymizing2_anonymized.unicon").exists()); System.out.println(output); PrivateKey key = new PrivateKey(Do.read(rootPath + "_xer0yfe2nn1xthc.private.unikey")); Contract contract1 = CLIMain.loadContract(basePath + "forRoleAnonymizing1_anonymized.unicon", true); assertFalse(contract1.getIssuer().getKeys().contains(key.getPublicKey())); Contract anonPublishedContract1 = new Contract(contract1.getLastSealedBinary()); assertFalse(anonPublishedContract1.getIssuer().getKeys().contains(key.getPublicKey())); assertFalse(anonPublishedContract1.getSealedByKeys().contains(key.getPublicKey())); Contract contract2 = CLIMain.loadContract(basePath + "forRoleAnonymizing2_anonymized.unicon", true); assertFalse(contract2.getIssuer().getKeys().contains(key.getPublicKey())); Contract anonPublishedContract2 = new Contract(contract2.getLastSealedBinary()); assertFalse(anonPublishedContract2.getIssuer().getKeys().contains(key.getPublicKey())); assertFalse(anonPublishedContract2.getSealedByKeys().contains(key.getPublicKey())); }
@Test public void anonymizeAllRoles() throws Exception { callMain2("-create", rootPath + "TokenDSLTemplate.yml", "--output", basePath + "forRoleAnonymizing.unicon", "-k", rootPath + "_xer0yfe2nn1xthc.private.unikey"); assertTrue (new File(basePath + "forRoleAnonymizing.unicon").exists()); callMain("-anonymize", basePath + "forRoleAnonymizing.unicon"); assertTrue (new File(basePath + "forRoleAnonymizing_anonymized.unicon").exists()); System.out.println(output); PrivateKey key = new PrivateKey(Do.read(rootPath + "_xer0yfe2nn1xthc.private.unikey")); PrivateKey ownerKey = new PrivateKey(Do.read(rootPath + "keys/stepan_mamontov.private.unikey")); Contract contract = CLIMain.loadContract(basePath + "forRoleAnonymizing_anonymized.unicon", true); assertFalse(contract.getOwner().getKeys().contains(ownerKey.getPublicKey())); assertFalse(contract.getIssuer().getKeys().contains(key.getPublicKey())); assertFalse(contract.getCreator().getKeys().contains(key.getPublicKey())); Contract anonPublishedContract = new Contract(contract.getLastSealedBinary()); assertFalse(anonPublishedContract.getOwner().getKeys().contains(ownerKey.getPublicKey())); assertFalse(anonPublishedContract.getIssuer().getKeys().contains(key.getPublicKey())); assertFalse(anonPublishedContract.getCreator().getKeys().contains(key.getPublicKey())); assertFalse(anonPublishedContract.getSealedByKeys().contains(key.getPublicKey())); assertFalse(anonPublishedContract.getSealedByKeys().contains(ownerKey.getPublicKey())); }
assertFalse(anonPublishedContract1.getIssuer().getKeys().contains(key.getPublicKey())); assertFalse(anonPublishedContract1.getCreator().getKeys().contains(key.getPublicKey())); assertFalse(anonPublishedContract1.getSealedByKeys().contains(key.getPublicKey())); assertFalse(anonPublishedContract1.getSealedByKeys().contains(ownerKey.getPublicKey())); assertFalse(anonPublishedContract2.getIssuer().getKeys().contains(key.getPublicKey())); assertFalse(anonPublishedContract2.getCreator().getKeys().contains(key.getPublicKey())); assertFalse(anonPublishedContract2.getSealedByKeys().contains(key.getPublicKey())); assertFalse(anonPublishedContract2.getSealedByKeys().contains(ownerKey.getPublicKey()));
Set<PublicKey> keys = contract.getSealedByKeys();
newDelorean.getSealedByKeys().removeAll(stepaPublicKeys); newDelorean.seal();
newDelorean.getSealedByKeys().removeAll(martyPublicKeys); newDelorean.seal();
assertEquals(ItemState.APPROVED, itemResult.state); assertTrue(anonPublishedContract.getSealedByKeys().contains(stepaPublicKeys.iterator().next()));
if (!isPermitted("decrement_permission", getSealedByKeys())) { res = false; addError(Errors.BAD_VALUE, "decrement_permission is missing");
assertEquals(ItemState.APPROVED, itemResult.state); assertTrue(anonPublishedContract.getSealedByKeys().contains(stepaPublicKeys.iterator().next()));
assertEquals(stepaCoins.getSealedByKeys().size(), 2); assertEquals(stepaCoins.getNew().get(0).getSealedByKeys().size(), 1); assertEquals(stepaCoins.getSealedByKeys().size(), 2); assertEquals(stepaCoins.getNew().get(0).getSealedByKeys().size(), 1);