/**
   * Validate the signature related parameters. The signed fields and signature parameters must be
   * present, and the signed fields list must contain the requisite parameters.
   *
   * @param response response to validate
   * @throws ValidationException if the signature related parameters are not valid
   */
  public void validateSignature(PositiveAssertion response) throws ValidationException {
    Set<QName> requiredSignedFields = new HashSet();
    requiredSignedFields.addAll(Arrays.asList(ValidationUtils.REQUIRED_SIGNED_FIELDS));

    if (!DatatypeHelper.isEmpty(response.getClaimedId())) {
      requiredSignedFields.add(Parameter.claimed_id.QNAME);
    }

    if (!DatatypeHelper.isEmpty(response.getIdentity())) {
      requiredSignedFields.add(Parameter.identity.QNAME);
    }

    ValidationUtils.validateSignature(response, requiredSignedFields);
  }