|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface Label
This class represents the Jif security label.
Method Summary | |
---|---|
java.lang.String |
componentString()
|
java.lang.String |
componentString(java.util.Set printedLabels)
|
ConfPolicy |
confProjection()
|
java.lang.String |
description()
|
boolean |
hasVariableComponents()
Does the label contain any variables as components? This does not include variables that are in bounds of arg labels. |
boolean |
hasVariables()
Does the label contain any variables at all? This includes variables that are in bounds of arg labels. |
boolean |
hasWritersToReaders()
Does the label contain any writersToReaders constructs? |
IntegPolicy |
integProjection()
|
boolean |
isBottom()
Is this label equivalent to bottom? |
boolean |
isComparable()
Is this label comparable to other labels? |
boolean |
isCovariant()
Is this label covariant? |
boolean |
isDisambiguated()
Are the components of this label all disambiguated? |
boolean |
isEnumerable()
Are the components of this label enumerable? |
boolean |
isInvariant()
Is this label invariant? |
boolean |
isRuntimeRepresentable()
|
boolean |
isTop()
Is this label equivalent to top? |
PathMap |
labelCheck(JifContext A,
LabelChecker lc)
Label check the label, which will determine how much information may be gained if the label is evaluated at runtime. |
boolean |
leq_(Label L,
LabelEnv H,
LabelEnv.SearchState state)
Implementation of leq, should only be called by JifTypeSystem |
Label |
normalize()
Normalize the label. |
void |
setDescription(java.lang.String d)
|
Label |
simplify()
Simplify the label, using leq if needed |
Label |
subst(LabelSubstitution labelSubst)
|
java.util.List |
throwTypes(polyglot.types.TypeSystem ts)
If the label is runtime representable, when it is evaluated at runtime it may throw exceptions. |
polyglot.ast.Expr |
toJava(JifToJavaRewriter rw)
|
java.lang.String |
toString(java.util.Set printedLabels)
|
java.util.Set |
variableComponents()
The set of variables that this label contains as components. |
java.util.Set |
variables()
The set of variables that this label contains including variables contained in upper bounds of arg labels. |
Methods inherited from interface jif.types.Param |
---|
isCanonical |
Methods inherited from interface polyglot.types.TypeObject |
---|
equalsImpl, position, typeSystem |
Methods inherited from interface polyglot.util.Copy |
---|
copy |
Method Detail |
---|
boolean isBottom()
For example, a JoinLabel with no components would return true for this method.
boolean isTop()
For example, a JoinLabel with two components, one of which is Top, would return true for this method.
boolean isInvariant()
boolean isCovariant()
boolean isComparable()
For example, an UnknownLabel is not comparable to others, neither is a VarLabel. Most other labels are.
java.lang.String description()
void setDescription(java.lang.String d)
Label subst(LabelSubstitution labelSubst) throws polyglot.types.SemanticException
labelSubst
- The LabelSubstitution
to apply to this
label
polyglot.types.SemanticException
PathMap labelCheck(JifContext A, LabelChecker lc)
boolean{Alice:} secret = ...; final label{Alice:} lb = secret?new label{}:new label{Bob:}; boolean{} leak = false; if ((*lb} <= new label{}) { // evaluation of lb reveals // information at level {Alice:} leak = true; }
Jif.labelCheck(LabelChecker)
,
Principal.labelCheck(JifContext, LabelChecker)
boolean isEnumerable()
For example, Singletons are enumerable, JoinLabels are enumerable, RuntimeLabel (the label of all runtime representable components) is not enumerable. NOTE: The components of a label are not neccessarily stuck together with a join operation. For example, the MeetLabel uses the meet operation between its components.
boolean isDisambiguated()
Label simplify()
Label normalize()
boolean hasWritersToReaders()
boolean hasVariableComponents()
boolean hasVariables()
java.util.Set variableComponents()
java.util.Set variables()
boolean leq_(Label L, LabelEnv H, LabelEnv.SearchState state)
L
- the label to determine if this label is leq to. This label
always satisfies !this.equals(L)H
- the label environment (including principal hierarchy). Will
always be non-null.boolean isRuntimeRepresentable()
isRuntimeRepresentable
in interface Param
ConfPolicy confProjection()
IntegPolicy integProjection()
java.util.List throwTypes(polyglot.types.TypeSystem ts)
polyglot.ast.Expr toJava(JifToJavaRewriter rw) throws polyglot.types.SemanticException
polyglot.types.SemanticException
java.lang.String componentString()
java.lang.String componentString(java.util.Set printedLabels)
java.lang.String toString(java.util.Set printedLabels)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |