public static Set<KeyAddress> extractKeyAddresses(Role role) { if(role instanceof SimpleRole) { return ((SimpleRole) role).getSimpleKeyAddresses(); } else if(role instanceof RoleLink) { return extractKeyAddresses(role.resolve()); } else if(role instanceof ListRole) { Set<KeyAddress> result = new HashSet<>(); ((ListRole) role).getRoles().forEach(r -> result.addAll(extractKeyAddresses(r))); return result; } return null; }
@Override public boolean isU(Set<KeyAddress> issuerKeys, String issuerName) { Role issuer = getIssuer(); if(!(issuer instanceof SimpleRole)) return false; Set<KeyAddress> thisIssuerAddresses = new HashSet<>(((SimpleRole)issuer).getSimpleKeyAddresses()); for (PublicKey publicKey : ((SimpleRole)issuer).getSimpleKeys()) thisIssuerAddresses.add(publicKey.getShortAddress()); if (Collections.disjoint(issuerKeys, thisIssuerAddresses)) return false; if ( !issuerName.equals(getDefinition().getData().get("issuerName"))) return false; return true; }
addError(Errors.BAD_VALUE, "issuer is not valid. must be simple role"); } else { Set<KeyAddress> thisIssuerAddresses = new HashSet<>(((SimpleRole) issuer).getSimpleKeyAddresses()); for (PublicKey publicKey : ((SimpleRole) issuer).getSimpleKeys()) thisIssuerAddresses.add(publicKey.getShortAddress());