@Override
  public void make(final boolean mayWrite) {
    if (mLoggedInOwnIdentity.isRestoreInProgress()) {
      makeRestoreInProgressWarning();
      return;
    }

    final boolean addIdentity = mRequest.isPartSet("AddIdentity");

    if (mayWrite && addIdentity) {
      try {
        mWebOfTrust.addIdentity(mRequest.getPartAsStringFailsafe("IdentityURI", 1024));
        HTMLNode successBox =
            addContentBox(l10n().getString("KnownIdentitiesPage.AddIdentity.Success.Header"));
        successBox.addChild("#", l10n().getString("KnownIdentitiesPage.AddIdentity.Success.Text"));
      } catch (Exception e) {
        addErrorBox(l10n().getString("KnownIdentitiesPage.AddIdentity.Failed"), e);
      }
    }

    if (mayWrite && mRequest.isPartSet("SetTrust")) {
      for (String part : mRequest.getParts()) {
        if (!part.startsWith("SetTrustOf")) continue;

        final String trusteeID;
        final String value;
        final String comment;

        try {
          if (addIdentity) { // Add a single identity and set its trust value
            trusteeID =
                IdentityID.constructAndValidateFromURI(
                        new FreenetURI(mRequest.getPartAsStringFailsafe("IdentityURI", 1024)))
                    .toString();
            value = mRequest.getPartAsStringFailsafe("Value", 4).trim();
            comment =
                mRequest.getPartAsStringFailsafe("Comment", Trust.MAX_TRUST_COMMENT_LENGTH + 1);
          } else { // Change multiple trust values via the known-identities-list
            trusteeID = mRequest.getPartAsStringFailsafe(part, 128);
            value = mRequest.getPartAsStringFailsafe("Value" + trusteeID, 4).trim();
            comment =
                mRequest.getPartAsStringFailsafe(
                    "Comment" + trusteeID, Trust.MAX_TRUST_COMMENT_LENGTH + 1);
          }

          if (value.equals("")) mWebOfTrust.removeTrust(mLoggedInOwnIdentity.getID(), trusteeID);
          else {
            mWebOfTrust.setTrust(
                mLoggedInOwnIdentity.getID(), trusteeID,
                Byte.parseByte(value), comment);
          }

          if (addIdentity && (value.equals("") || Byte.parseByte(value) < 0)) {
            addErrorBox(
                l10n().getString("KnownIdentitiesPage.AddIdentity.NoTrustWarning.Header"),
                l10n().getString("KnownIdentitiesPage.AddIdentity.NoTrustWarning.Text"));
          }
        } catch (NumberFormatException e) {
          addErrorBox(
              l10n().getString("KnownIdentitiesPage.SetTrust.Failed"),
              l10n().getString("Trust.InvalidValue"));
        } catch (InvalidParameterException e) {
          addErrorBox(l10n().getString("KnownIdentitiesPage.SetTrust.Failed"), e.getMessage());
        } catch (Exception e) {
          addErrorBox(l10n().getString("KnownIdentitiesPage.SetTrust.Failed"), e);
        }
      }
    }

    makeKnownIdentitiesList();
    makeAddIdentityForm(); // Put this after makeKnownIdentitiesList() so clicking through pages of
    // the known identities list doesn't involve scrolling.
  }