Skip to content

Commit 60eea56

Browse files
author
Aslan Askarov
committed
checkpoint
1 parent 2c1850d commit 60eea56

File tree

1 file changed

+31
-29
lines changed

1 file changed

+31
-29
lines changed

body.tex

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -563,35 +563,6 @@ \subsection{Monitoring for information flow}
563563

564564

565565

566-
\paragraph{Implicit flows and type labels}
567-
Type labels of values created in branches are also tainted by the pc-label.
568-
Operations that check the type label, e.g., arithmetics or pattern
569-
matching, use the information in the type label to appropriately taint the blocking level.
570-
the value.
571-
\begin{lstlisting}
572-
(* ifc_type_labels.trp *)
573-
let val x = 100 raisedTo {alice}
574-
val y = 200 raisedTo {bob}
575-
val z = 300 raisedTo {charlie}
576-
val a = let pini authority
577-
val a = if y > 10 then z else "not an integer"
578-
in a
579-
end
580-
val _ = printWithLabels a
581-
val _ = debugpc()
582-
val w = a + x
583-
val _ = printWithLabels w
584-
in debugpc()
585-
end
586-
\end{lstlisting}
587-
\begin{verbatim}
588-
300@{charlie,bob}%{bob}
589-
PID:2dfdc81f-1027-40e2-810c-11fadb2dd40f@{}%{} PC:{} BL:{}
590-
400@{charlie,bob,alice}%{}
591-
PID:2dfdc81f-1027-40e2-810c-11fadb2dd40f@{}%{} PC:{} BL:{bob}
592-
\end{verbatim}
593-
594-
595566
\paragraph{Implementation note}
596567
\troupelang\ implements information flow enforcement via inlining.
597568

@@ -708,6 +679,37 @@ \subsubsection{Declassification of the blocking level}
708679
\code{pinipop} dynamically scope the part of the execution for which the blocking label is declassified.
709680

710681

682+
683+
\paragraph{Implicit flows and type labels}
684+
Type labels of values created in branches are also tainted by the pc-label.
685+
Operations that check the type label, e.g., arithmetics or pattern
686+
matching, use the information in the type label to appropriately taint the blocking level.
687+
the value.
688+
\begin{lstlisting}
689+
(* ifc_type_labels.trp *)
690+
let val x = 100 raisedTo {alice}
691+
val y = 200 raisedTo {bob}
692+
val z = 300 raisedTo {charlie}
693+
val a = let pini authority
694+
val a = if y > 10 then z else "not an integer"
695+
in a
696+
end
697+
val _ = printWithLabels a
698+
val _ = debugpc()
699+
val w = a + x
700+
val _ = printWithLabels w
701+
in debugpc()
702+
end
703+
\end{lstlisting}
704+
\begin{verbatim}
705+
300@{charlie,bob}%{bob}
706+
PID:2dfdc81f-1027-40e2-810c-11fadb2dd40f@{}%{} PC:{} BL:{}
707+
400@{charlie,bob,alice}%{}
708+
PID:2dfdc81f-1027-40e2-810c-11fadb2dd40f@{}%{} PC:{} BL:{bob}
709+
\end{verbatim}
710+
711+
712+
711713
\subsection{Information flow control with I/O primitives}
712714
This section may be omitted upon first read as it has a number of information flow subtleties that
713715
can be omitted when first starting to use the system.

0 commit comments

Comments
 (0)