private List<HashId> getOriginsToCheck() { Set<HashId> origins = new HashSet<>(); for (UnsName unsName : storedNames) for (UnsRecord unsRecord : unsName.getUnsRecords()) if (unsRecord.getOrigin() != null) origins.add(unsRecord.getOrigin()); for (Approvable revoked : getRevokingItems()) removeRevokedOrigins(revoked, origins); return new ArrayList<>(origins); }
private void removeRevokedOrigins(Approvable approvable, Set<HashId> set) { if (approvable instanceof UnsContract) { UnsContract unsContract = (UnsContract) approvable; for (UnsName unsName : unsContract.storedNames) for (UnsRecord unsRecord : unsName.getUnsRecords()) if (unsRecord.getOrigin() != null) set.remove(unsRecord.getOrigin()); } for (Approvable revoked : approvable.getRevokingItems()) removeRevokedOrigins(revoked, set); }
if(unsRecord.getOrigin() != null) { if(!unsRecord.getAddresses().isEmpty()) { addError(Errors.FAILED_CHECK, NAMES_FIELD_NAME, "name " + n.getUnsName() + " referencing to origin AND addresses. Should be either origin or addresses"); if(!isOriginReferenceExists(unsRecord.getOrigin())) { addError(Errors.FAILED_CHECK, NAMES_FIELD_NAME, "name " + n.getUnsName() + " referencing to origin " + unsRecord.getOrigin().toString() + " but no corresponding reference is found"); return false; .filter(contract -> contract.getId().equals(unsRecord.getOrigin()) || contract.getOrigin() != null && contract.getOrigin().equals(unsRecord.getOrigin())) .collect(Collectors.toList()); addError(Errors.FAILED_CHECK, NAMES_FIELD_NAME, "name " + n.getUnsName() + " referencing to origin " + unsRecord.getOrigin().toString() + " but no corresponding referenced contract is found"); return false; addError(Errors.FAILED_CHECK, NAMES_FIELD_NAME, "name " + n.getUnsName() + " referencing to origin " + unsRecord.getOrigin().toString() + ". UNS1 contract should be also signed by this contract issuer key."); return false;
public NNameRecord(@NonNull UnsName unsName, @NonNull ZonedDateTime expiresAt) { name = unsName.getUnsName(); nameReduced = unsName.getUnsReducedName(); description = unsName.getUnsDescription(); url = unsName.getUnsURL(); this.expiresAt = expiresAt; unsName.getUnsRecords().forEach(unsRecord -> { String longAddress = null; String shortAddress = null; for (KeyAddress keyAddress : unsRecord.getAddresses()) { if (keyAddress.isLong()) longAddress = keyAddress.toString(); else shortAddress = keyAddress.toString(); } entries.add(new NNameRecordEntry(unsRecord.getOrigin(), shortAddress, longAddress)); }); }
assertErrorsContainsSubstr(irPayload.errors, "origin '"+unsRecord2.getOrigin().toBase64String()+"' is not available"); assertEquals(ItemState.APPROVED, node.waitItem(payingParcel.getPayment().getContract().getId(), 8000).state); assertEquals(ItemState.UNDEFINED, node.waitItem(uns2.getNew().get(0).getId(), 8000).state);