mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noël Rouvignac
25.21.2016 64721a895973f935c1adb975247770f402a88fdf
opendj-server-legacy/src/main/java/org/opends/server/authorization/dseecompat/SSF.java
@@ -22,11 +22,11 @@
/** The class represents the ssf keyword in a bind rule.SSF stands for security strength factor. */
public class SSF implements KeywordBindRule {
    /** Enumeration representing the bind rule operation type. */
    private EnumBindRuleType type;
    private static final int MAX_KEY_BITS=1024;
    private int ssf;
    /** Enumeration representing the bind rule operation type. */
    private final EnumBindRuleType type;
    private final int ssf;
    private SSF(int ssf, EnumBindRuleType type) {
        this.ssf = ssf;
@@ -51,8 +51,7 @@
            throw new AciException(message);
        }
        if (valueAsInt <= 0 || valueAsInt > MAX_KEY_BITS) {
            LocalizableMessage message = WARN_ACI_SYNTAX_INVALID_SSF_RANGE.get(expr);
            throw new AciException(message);
            throw new AciException(WARN_ACI_SYNTAX_INVALID_SSF_RANGE.get(expr));
        }
        return new SSF(valueAsInt, type);
    }
@@ -66,44 +65,31 @@
     */
    @Override
    public EnumEvalResult evaluate(AciEvalContext evalCtx) {
        int currentSSF = evalCtx.getCurrentSSF();
        EnumEvalResult matched = getMatched(currentSSF);
        EnumEvalResult matched = getMatched(evalCtx.getCurrentSSF());
        return matched.getRet(type, false);
    }
    private EnumEvalResult getMatched(int currentSSF) {
      return getMatched0(currentSSF) ? EnumEvalResult.TRUE : EnumEvalResult.FALSE;
    }
    private boolean getMatched0(int currentSSF)
    {
      switch (type) {
      case EQUAL_BINDRULE_TYPE:
      case NOT_EQUAL_BINDRULE_TYPE:
          if (currentSSF == ssf) {
            return EnumEvalResult.TRUE;
          }
          break;
          return currentSSF == ssf;
      case LESS_OR_EQUAL_BINDRULE_TYPE:
          if (currentSSF <= ssf) {
            return EnumEvalResult.TRUE;
          }
          break;
          return currentSSF <= ssf;
      case LESS_BINDRULE_TYPE:
          if (currentSSF < ssf) {
            return EnumEvalResult.TRUE;
          }
          break;
          return currentSSF < ssf;
      case GREATER_OR_EQUAL_BINDRULE_TYPE:
          if (currentSSF >= ssf) {
            return EnumEvalResult.TRUE;
          }
          break;
          return currentSSF >= ssf;
      case GREATER_BINDRULE_TYPE:
          if (currentSSF > ssf) {
            return EnumEvalResult.TRUE;
          }
          return currentSSF > ssf;
      default:
          return false;
      }
      return EnumEvalResult.FALSE;
    }
    @Override