src/Pure/General/secure.ML
author wenzelm
Thu, 03 Mar 2016 21:59:21 +0100
changeset 62508 d0b68218ea55
parent 62493 src/Pure/RAW/secure.ML@dd154240a53c
permissions -rw-r--r--
discontinued RAW session: bootstrap directly from isabelle_process RAW_ML_SYSTEM;

(*  Title:      Pure/General/secure.ML
    Author:     Makarius

Secure critical operations.
*)

signature SECURE =
sig
  val set_secure: unit -> unit
  val is_secure: unit -> bool
  val deny: string -> unit
  val deny_ml: unit -> unit
end;

structure Secure: SECURE =
struct

val secure = Unsynchronized.ref false;

fun set_secure () = secure := true;
fun is_secure () = ! secure;

fun deny msg = if is_secure () then error msg else ();

fun deny_ml () = deny "Cannot evaluate ML source in secure mode";

end;