package Ġedu . corn ell . cs . apl . vi ad uct . security Ċ Ċ import Ġedu . corn ell . cs . apl . pretty printing . Document Ċ import Ġedu . corn ell . cs . apl . pretty printing . Pretty Print able Ċ import Ġedu . corn ell . cs . apl . pretty printing . Style Ċ import Ġedu . corn ell . cs . apl . vi ad uct . algebra . Free Distribut ive L attice Ċ import Ġedu . corn ell . cs . apl . vi ad uct . algebra . L attice Ċ import Ġedu . corn ell . cs . apl . vi ad uct . security . Label . Companion . bottom Ċ import Ġedu . corn ell . cs . apl . vi ad uct . security . Label . Companion . str on gest Ċ import Ġedu . corn ell . cs . apl . vi ad uct . security . Label . Companion . top Ċ import Ġedu . corn ell . cs . apl . vi ad uct . security . Label . Companion . weak est Ċ Ċ /** Ċ Ġ* ĠA Ġlattice Ġfor Ġinformation Ġflow Ġsecurity . ĠThis Ġis Ġa Ġstandard Ġbounded Ġlattice Ġthat Ġaddition ally Ċ Ġ* Ġsupports Ġconf idential ity Ġand Ġintegrity Ġprojection s . ĠInformation Ġflows Ġfrom Ġless Ġrestrict ive Ċ Ġ* Ġcontexts Ġto Ġmore Ġrestrict ive Ġones . Ċ Ġ* Ċ Ġ* Ġ[ top ], Ġ[ bottom ], Ġ[ meet ], Ġand Ġ[ join ] Ġtalk Ġabout Ġinformation Ġflow . Ċ Ġ* Ċ Ġ* Ġ[ weak est ], Ġ[ str on gest ], Ġ[ and ], Ġand Ġ[ or ] Ġtalk Ġabout Ġtrust . Ċ Ġ*/ Ċ data Ġclass ĠLabel ( ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġconf idential ity Ġcomponent Ġin Ġthe Ġunderlying Ġlattice . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUn like Ġ[ conf idential ity ], Ġthe Ġresult Ġis Ġnot Ġa Ġ[ Label ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġconf idential ity Component : ĠFree Distribut ive L attice < Principal >, ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġintegrity Ġcomponent Ġin Ġthe Ġunderlying Ġlattice . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUn like Ġ[ integrity ], Ġthe Ġresult Ġis Ġnot Ġa Ġ[ Label ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġintegrity Component : ĠFree Distribut ive L attice < Principal > Ċ ) Ġ: ĠL attice < Label >, ĠTrust L attice < Label >, ĠPretty Print able Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġconf idential ity Ġcomponent . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠKeep s Ġconf idential ity Ġthe Ġsame Ġwhile Ġsetting Ġintegrity Ġto Ġthe Ġweak est Ġlevel . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġconf idential ity (): ĠLabel Ġ= ĊĠĠĠĠĠĠĠ Ġfrom Conf idential ity ( conf idential ity Component ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġintegrity Ġcomponent . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠKeep s Ġintegrity Ġthe Ġsame Ġwhile Ġsetting Ġconf idential ity Ġto Ġthe Ġweak est Ġlevel . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġintegrity (): ĠLabel Ġ= Ġfrom Integr ity ( integrity Component ) ĊĊĠĠĠ Ġ/** ĠCheck Ġif Ġinformation Ġflow Ġfrom Ġ` this ` Ġto Ġ[ that ] Ġis Ġsafe . Ġ*/ ĊĠĠĠ Ġin fix Ġfun Ġflow sTo ( that : ĠLabel ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġ( that . conf idential ity () Ġand Ġthis . integrity ()) Ġacts For Ġ( this . conf idential ity () Ġand Ġthat . integrity ()) ĊĊĠĠĠ Ġoverride Ġfun Ġless Than OrEqualTo ( that : ĠLabel ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġthis . flow sTo ( that ) ĊĊĠĠĠ Ġoverride Ġin fix Ġfun Ġjoin ( that : ĠLabel ): ĠLabel Ġ= ĊĠĠĠĠĠĠĠ Ġ( this . conf idential ity () Ġand Ġthat . conf idential ity ()) Ġand Ġ( this . integrity () Ġor Ġthat . integrity ()) ĊĊĠĠĠ Ġoverride Ġin fix Ġfun Ġmeet ( that : ĠLabel ): ĠLabel Ġ= ĊĠĠĠĠĠĠĠ Ġ( this . conf idential ity () Ġor Ġthat . conf idential ity ()) Ġand Ġ( this . integrity () Ġand Ġthat . integrity ()) ĊĊĠĠĠ Ġoverride Ġin fix Ġfun Ġacts For ( that : ĠLabel ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġthis . conf idential ity Component . less Than OrEqualTo ( that . conf idential ity Component ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . integrity Component . less Than OrEqualTo ( that . integrity Component ) ĊĊĠĠĠ Ġoverride Ġin fix Ġfun Ġand ( that : ĠLabel ): ĠLabel Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconf idential ity Ġ= Ġthis . conf idential ity Component . meet ( that . conf idential ity Component ) ĊĠĠĠĠĠĠĠ Ġval Ġintegrity Ġ= Ġthis . integrity Component . meet ( that . integrity Component ) ĊĠĠĠĠĠĠĠ Ġreturn ĠLabel ( conf idential ity , Ġintegrity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġin fix Ġfun Ġor ( that : ĠLabel ): ĠLabel Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconf idential ity Ġ= Ġthis . conf idential ity Component . join ( that . conf idential ity Component ) ĊĠĠĠĠĠĠĠ Ġval Ġintegrity Ġ= Ġthis . integrity Component . join ( that . integrity Component ) ĊĠĠĠĠĠĠĠ Ġreturn ĠLabel ( conf idential ity , Ġintegrity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSwitch Ġthe Ġconf idential ity Ġand Ġintegrity Ġcomponents . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġis Ġused Ġto Ġenforce Ġrobust Ġde classification Ġand Ġtransparent Ġendorse ment ĊĠĠĠĠ Ġ* Ġ( a . k . a . Ġnon - m alle able Ġinformation Ġflow ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġswap (): ĠLabel Ġ= ĊĠĠĠĠĠĠĠ ĠLabel ( integrity Component , Ġconf idential ity Component ) ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconf idential ity Str Ġ= Ġconf idential ity Component . toString () ĊĠĠĠĠĠĠĠ Ġval Ġintegrity Str Ġ= Ġintegrity Component . toString () ĊĠĠĠĠĠĠĠ Ġval Ġexpression Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconf idential ity Component Ġ== Ġintegrity Component Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconf idential ity Str ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ== Ġthis . conf idential ity () Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ conf idential ity Str ->" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ== Ġthis . integrity () Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ integrity Str <- " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ conf idential ity Str -> ĠâĪ § Ġ$ integrity Str <- " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ" {$ expression }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO : Ġmake Ġas Document Ġprimitive Ġand Ġremove ĠtoString ĊĠĠĠ Ġoverride Ġval Ġas Document : ĠDocument ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠDocument ( this . toString ()) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġleast Ġpowerful Ġprincipal , Ġi . e . Ġpublic Ġand Ġun trusted . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġis Ġthe Ġunit Ġfor Ġ[ and ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval Ġweak est : ĠLabel Ġ= ĠLabel ( Free Distribut ive L attice . top (), ĠFree Distribut ive L attice . top ()) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġmost Ġpowerful Ġprincipal , Ġi . e . Ġsecret Ġand Ġtrusted . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġis Ġthe Ġunit Ġfor Ġ[ or ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval Ġstr on gest : ĠLabel Ġ= ĠLabel ( Free Distribut ive L attice . bottom (), ĠFree Distribut ive L attice . bottom ()) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġleast Ġrestrict ive Ġdata Ġpolicy , Ġi . e . Ġpublic Ġand Ġtrusted . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġis Ġthe Ġunit Ġfor Ġ[ join ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval Ġbottom : ĠLabel Ġ= ĠLabel ( weak est . conf idential ity Component , Ġstr on gest . integrity Component ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġmost Ġrestrict ive Ġdata Ġpolicy , Ġi . e . Ġsecret Ġand Ġun trusted . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġis Ġthe Ġunit Ġfor Ġ[ meet ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval Ġtop : ĠLabel Ġ= ĠLabel ( str on gest . conf idential ity Component , Ġweak est . integrity Component ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĠReturns Ġthe Ġlabel Ġrepresenting Ġthe Ġauthority Ġof Ġthe Ġgiven Ġprincipal . Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( principal : ĠPrincipal ): ĠLabel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomponent Ġ= ĠFree Distribut ive L attice ( principal ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLabel ( component , Ġcomponent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĠConstructs Ġa Ġlabel Ġgiven Ġonly Ġthe Ġconf idential ity Ġcomponent . ĠIntegr ity Ġis Ġset Ġto Ġminimum . Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Conf idential ity ( conf idential ity : ĠFree Distribut ive L attice < Principal >): ĠLabel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLabel ( conf idential ity , Ġweak est . integrity Component ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĠConstructs Ġa Ġlabel Ġgiven Ġonly Ġthe Ġintegrity Ġcomponent . ĠConf idential ity Ġis Ġset Ġto Ġminimum . Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Integr ity ( integrity : ĠFree Distribut ive L attice < Principal >): ĠLabel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLabel ( weak est . conf idential ity Component , Ġintegrity ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** ĠThe Ġdisplay Ġstyle Ġof Ġ[ Label ] Ġspecific Ġoperators Ġsuch Ġas Ġ[ Label . conf idential ity ]. Ġ*/ Ċ object ĠLabel Operator Style Ġ: ĠStyle Ċ