jif.extension
Class JifDowngradeStmtExt

java.lang.Object
  extended by polyglot.ast.Ext_c
      extended by jif.ast.Jif_c
          extended by jif.extension.JifStmtExt_c
              extended by jif.extension.JifDowngradeStmtExt
All Implemented Interfaces:
java.lang.Cloneable, Jif, JifStmtExt, polyglot.ast.Ext, polyglot.util.Copy
Direct Known Subclasses:
JifDeclassifyStmtExt, JifEndorseStmtExt

public abstract class JifDowngradeStmtExt
extends JifStmtExt_c

The Jif extension of the DeclassifyStmt node.

See Also:
DeclassifyStmt

Field Summary
 
Fields inherited from class jif.extension.JifStmtExt_c
stmtDel
 
Fields inherited from class jif.ast.Jif_c
toJava, X
 
Fields inherited from class polyglot.ast.Ext_c
ext, node
 
Constructor Summary
JifDowngradeStmtExt(ToJavaExt toJava)
           
 
Method Summary
protected  JifContext bodyContext(LabelChecker lc, JifContext A, Label downgradeFrom, Label downgradeTo)
           
protected  void checkAdditionalConstraints(LabelChecker lc, JifContext A, Label labelFrom, Label labelTo, polyglot.util.Position pos)
          Check any additional constraints
protected abstract  void checkAuthority(LabelChecker lc, JifContext A, Label labelFrom, Label labelTo, polyglot.util.Position pos)
          Check the authority condition
protected  polyglot.ast.Stmt checkBody(LabelChecker lc, JifContext A, Label downgradeFrom, Label downgradeTo)
           
protected abstract  void checkOneDimenOnly(LabelChecker lc, JifContext A, Label labelFrom, Label labelTo, polyglot.util.Position pos)
          Check that only the integrity/confidentiality is downgraded, and not the other dimension.
protected  void checkPCconstraint(LabelChecker lc, JifContext A, Label pc, Label downgradeFrom, boolean boundSpecified)
           
protected abstract  void checkRobustness(LabelChecker lc, JifContext A, Label labelFrom, Label labelTo, polyglot.util.Position pos)
          Check the robustness condition
protected  JifContext declassifyConstraintContext(JifContext A)
           
protected  PathMap initPathMap(LabelChecker lc)
           
 polyglot.ast.Node labelCheckStmt(LabelChecker lc)
           
 
Methods inherited from class jif.extension.JifStmtExt_c
copy, init, labelCheck, stmtDel, stmtDel
 
Methods inherited from class jif.ast.Jif_c
checkAndRemoveThrowType, checkThrowTypes, getPathMap, integerBoundsCalculated, toJava, toJava, updatePathMap, X, X
 
Methods inherited from class polyglot.ast.Ext_c
dump, ext, ext, node, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface polyglot.ast.Ext
dump, ext, ext, node
 

Constructor Detail

JifDowngradeStmtExt

public JifDowngradeStmtExt(ToJavaExt toJava)
Method Detail

declassifyConstraintContext

protected JifContext declassifyConstraintContext(JifContext A)
                                          throws polyglot.types.SemanticException
Throws:
polyglot.types.SemanticException

labelCheckStmt

public final polyglot.ast.Node labelCheckStmt(LabelChecker lc)
                                       throws polyglot.types.SemanticException
Specified by:
labelCheckStmt in interface JifStmtExt
Specified by:
labelCheckStmt in class JifStmtExt_c
Throws:
polyglot.types.SemanticException

checkPCconstraint

protected void checkPCconstraint(LabelChecker lc,
                                 JifContext A,
                                 Label pc,
                                 Label downgradeFrom,
                                 boolean boundSpecified)
                          throws polyglot.types.SemanticException
Throws:
polyglot.types.SemanticException

checkBody

protected polyglot.ast.Stmt checkBody(LabelChecker lc,
                                      JifContext A,
                                      Label downgradeFrom,
                                      Label downgradeTo)
                               throws polyglot.types.SemanticException
Throws:
polyglot.types.SemanticException

bodyContext

protected JifContext bodyContext(LabelChecker lc,
                                 JifContext A,
                                 Label downgradeFrom,
                                 Label downgradeTo)

initPathMap

protected PathMap initPathMap(LabelChecker lc)
                       throws polyglot.types.SemanticException
Throws:
polyglot.types.SemanticException

checkOneDimenOnly

protected abstract void checkOneDimenOnly(LabelChecker lc,
                                          JifContext A,
                                          Label labelFrom,
                                          Label labelTo,
                                          polyglot.util.Position pos)
                                   throws polyglot.types.SemanticException
Check that only the integrity/confidentiality is downgraded, and not the other dimension.

Parameters:
lc -
labelFrom -
labelTo -
Throws:
polyglot.types.SemanticException

checkAuthority

protected abstract void checkAuthority(LabelChecker lc,
                                       JifContext A,
                                       Label labelFrom,
                                       Label labelTo,
                                       polyglot.util.Position pos)
                                throws polyglot.types.SemanticException
Check the authority condition

Parameters:
lc -
labelFrom -
labelTo -
Throws:
polyglot.types.SemanticException

checkRobustness

protected abstract void checkRobustness(LabelChecker lc,
                                        JifContext A,
                                        Label labelFrom,
                                        Label labelTo,
                                        polyglot.util.Position pos)
                                 throws polyglot.types.SemanticException
Check the robustness condition

Parameters:
lc -
labelFrom -
labelTo -
Throws:
polyglot.types.SemanticException

checkAdditionalConstraints

protected void checkAdditionalConstraints(LabelChecker lc,
                                          JifContext A,
                                          Label labelFrom,
                                          Label labelTo,
                                          polyglot.util.Position pos)
                                   throws polyglot.types.SemanticException
Check any additional constraints

Parameters:
lc -
labelFrom -
labelTo -
Throws:
polyglot.types.SemanticException