Skip to content

Commit

Permalink
refactor: redesign can_flow
Browse files Browse the repository at this point in the history
  • Loading branch information
TWal committed Jan 26, 2024
1 parent 8ffc0b1 commit 0f2c2af
Show file tree
Hide file tree
Showing 10 changed files with 115 additions and 433 deletions.
4 changes: 2 additions & 2 deletions src/DY.Core.Attacker.Knowledge.fst
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ let rec attacker_knows_aux step tr msg =
msg_sent_on_network tr msg
) \/ (
exists prin sess_id.
principal_state_corrupt tr prin sess_id /\
is_corrupt tr (principal_state_label prin sess_id) /\
state_was_set tr prin sess_id msg
) \/ (
exists lit.
Expand Down Expand Up @@ -115,7 +115,7 @@ val corrupted_state_is_publishable:
tr:trace -> prin:principal -> sess_id:nat -> content:bytes ->
Lemma
(requires
principal_state_corrupt tr prin sess_id /\
is_corrupt tr (principal_state_label prin sess_id) /\
state_was_set tr prin sess_id content /\
trace_invariant tr
)
Expand Down
1 change: 0 additions & 1 deletion src/DY.Core.Bytes.fst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ open DY.Core.Bytes.Type
open DY.Core.Trace.Type
open DY.Core.Label.Type
open DY.Core.Label
open DY.Core.Label.Lattice

#set-options "--fuel 1 --ifuel 1"

Expand Down
242 changes: 0 additions & 242 deletions src/DY.Core.Label.Lattice.fst

This file was deleted.

74 changes: 19 additions & 55 deletions src/DY.Core.Label.Type.fst
Original file line number Diff line number Diff line change
@@ -1,27 +1,32 @@
module DY.Core.Label.Type

open DY.Core.Label.Lattice
noeq
type order (a:Type) = {
rel: a -> a -> prop;
refl: x:a -> Lemma (rel x x);
trans: x:a -> y:a -> z:a -> Lemma (requires rel x y /\ rel y z) (ensures rel x z);
}

type principal = string

type pre_pre_label =
| P: principal -> pre_pre_label
| S: principal -> nat -> pre_pre_label
type pre_label =
| P: principal -> pre_label
| S: principal -> nat -> pre_label

val get_principal: pre_pre_label -> option principal
val get_principal: pre_label -> option principal
let get_principal l =
match l with
| P p -> Some p
| S p _ -> Some p

val get_session: pre_pre_label -> option nat
val get_session: pre_label -> option nat
let get_session l =
match l with
| P _ -> None
| S _ s -> Some s

val pre_pre_label_order: order pre_pre_label
let pre_pre_label_order = {
val pre_label_order: order pre_label
let pre_label_order = {
rel = (fun x y ->
match y with
| P p -> Some p == get_principal x
Expand All @@ -31,50 +36,9 @@ let pre_pre_label_order = {
trans = (fun x y z -> ());
}

val corruption_pred_ok: #a:Type -> order a -> (a -> prop) -> prop
let corruption_pred_ok #a ord pred =
forall x y. pred x /\ ord.rel x y ==> pred y

type corruption_pred (#a:Type) (ord:order a) =
pred:(a -> prop){corruption_pred_ok ord pred}

type pre_label (a:Type) =
| Secret: pre_label a
| State: a -> pre_label a
| Public: pre_label a

val pre_label_order: #a:Type -> ord:order a -> corruption_pred ord -> order (pre_label a)
let pre_label_order ord is_corrupt = {
rel = (fun x y ->
match x, y with
| Secret, _ -> True
| _, Secret -> False
| State px, State py -> is_corrupt py \/ ord.rel px py
| State _, Public -> True
| Public, Public -> True
| Public, State py -> is_corrupt py
);
refl = (fun x ->
match x with
| State x0 -> ord.refl x0
| _ -> ()
);
trans = (fun x y z ->
match x, y, z with
| State x0, State y0, State z0 -> FStar.Classical.move_requires_3 ord.trans x0 y0 z0
| _, _, _ -> ()
);
}

type label = lattice (pre_label pre_pre_label)

val label_order: corruption_pred pre_pre_label_order -> order label
let label_order is_corrupt = {
rel = lattice_order (pre_label_order pre_pre_label_order is_corrupt);
refl = (fun x ->
lattice_order_refl (pre_label_order pre_pre_label_order is_corrupt) x
);
trans = (fun x y z ->
lattice_order_trans (pre_label_order pre_pre_label_order is_corrupt) x y z
);
}
type label =
| Secret: label
| State: pre_label -> label
| Meet: label -> label -> label
| Join: label -> label -> label
| Public: label
Loading

0 comments on commit 0f2c2af

Please sign in to comment.