“…Generally they accept as input a program written in a Turingcomplete programming language, which can be either imperative [74,15,47,73,83,110,108,25,26,72] or descriptive [97]. The systems outputs can be boolean circuits [74,15,47], source code in a generic programming language [73,110,108,25,26,72], or a running protocol [97]. Some systems [74,15,47,97,73] employed cryptographic primitives to enable secure computation, whereas others [110,108,25,26,72,83] did not.…”