/** * Check role is allowed to keys * * @param keys is set of keys * @return true if role is allowed to keys */ @Override public boolean isAllowedForKeys(Set<? extends AbstractKey> keys) { if(!super.isAllowedForKeys(keys)) return false; final Role role = resolve(); return (role == null) ? false : role.isAllowedForKeys(keys); }
/** * Check role is allowed to keys * * @param keys is set of keys * @return true if role is allowed to keys */ @Override public boolean isAllowedForKeys(Set<? extends AbstractKey> keys) { if(!super.isAllowedForKeys(keys)) return false; if(this.mode == null) { this.mode = Mode.ALL; } return this.mode == Mode.ANY && this.processAnyMode(keys) || this.mode == Mode.ALL && this.processAllMode(keys) || this.mode == Mode.QUORUM && this.processQuorumMode(keys); }
public static Set<PublicKey> extractKeys(Role role) { if(role instanceof SimpleRole) { return ((SimpleRole) role).getSimpleKeys(); } else if(role instanceof RoleLink) { return extractKeys(role.resolve()); } else if(role instanceof ListRole) { Set<PublicKey> result = new HashSet<>(); ((ListRole) role).getRoles().forEach(r -> result.addAll(extractKeys(r))); return result; } return null; }
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; }
public static Set<AnonymousId> extractAnonymousIds(Role role) { if(role instanceof SimpleRole) { return ((SimpleRole) role).getSimpleAnonymousIds(); } else if(role instanceof RoleLink) { return extractAnonymousIds(role.resolve()); } else if(role instanceof ListRole) { Set<AnonymousId> result = new HashSet<>(); ((ListRole) role).getRoles().forEach(r -> result.addAll(extractAnonymousIds(r))); return result; } return null; }
public static Set<KeyRecord> extractKeyRecords(Role role){ if(role instanceof SimpleRole) { return ((SimpleRole) role).getSimpleKeyRecords(); } else if(role instanceof RoleLink) { return extractKeyRecords(role.resolve()); } else if(role instanceof ListRole) { Set<KeyRecord> result = new HashSet<>(); ((ListRole) role).getRoles().forEach(r -> result.addAll(extractKeyRecords(r))); return result; } return null; }
/** * Get set of all key addresses in linked role. * * @return set of key addresses (see {@link KeyAddress}) */ @Override @Deprecated public Set<KeyAddress> getKeyAddresses() { final Role role = resolve(); return (role == null) ? null : role.getKeyAddresses(); }
public boolean containReference(String name) { if(requiredAllReferences.contains(name) || requiredAnyReferences.contains(name)) return true; if(this instanceof RoleLink) { return ((RoleLink)this).getRole().containReference(name); } if(this instanceof ListRole) { return ((ListRole)this).getRoles().stream().anyMatch(r -> r.containReference(name)); } return false; }
private boolean processQuorumMode(Set<? extends AbstractKey> keys) { int counter = this.quorumSize; boolean result = counter == 0; Set<Role> roles = this.roles; for (Role role : roles) { if (result) break; if (role != null && role.isAllowedForKeys(keys) && --counter == 0) { result = true; break; } } return result; }
public JSApiRoleLink(String newRoleName, String existingRoleName) { roleLink = new RoleLink(newRoleName, existingRoleName); }
/** * Get set of all key records in linked role. * * @return set of key records (see {@link KeyRecord}) */ @Override @Deprecated public Set<KeyRecord> getKeyRecords() { return resolve().getKeyRecords(); }
/** * Get set of all anonymous identifiers in linked role. * * @return set of anonymous identifiers (see {@link AnonymousId}) */ @Override @Deprecated public Set<AnonymousId> getAnonymousIds() { final Role role = resolve(); return (role == null) ? null : role.getAnonymousIds(); }
public void setQuorum(int quorum) { listRole.setQuorum(quorum); }
@Override protected boolean equalsIgnoreNameAndRefs(Role role) { if(!(role instanceof SimpleRole)) return false; if(!hasAllKeys(this,(SimpleRole)role)) return false; if(!hasAllKeys((SimpleRole)role,this)) return false; return true; }
/** * If this role has public keys, they will be replaced with {@link AnonymousId}. */ @Override public void anonymize() { for (Role role : roles) role.anonymize(); }