Obliv-C is a simple GCC wrapper that makes it easy to embed secure computation protocols inside regular C programs.

The idea is simple: if you are performing a multi-party distributed computation with sensitive data, just write it in our Obliv-C langauge and compile/link it with your project. The result will be a secure multi-party cryptographic protocol that performs this operation without revealing any of the inputs or intermediate values of the computation to any of the parties. Only the final outputs are revealed.

This paper motivates and describes Obliv-C:

Samee Zahur and David Evans. Obliv-C: A Language for Extensible Data-Oblivious Computation, Cryptology ePrint Archive: Report 2015:1153 [PDF], November 2015.

This mini-book provides an introduction to secure multi-party computation:

David Evans, Vladimir Kolesnikov and Mike Rosulek. A Pragmatic Introduction to Secure Multi-Party Computation, NOW Publishers, December 2018. [PDF]

Getting Started

Code: https://github.com/samee/obliv-c

This repository includes the implementation of Obliv-C and several example applications and benchmarks.


Walks through how to install Obliv-C and build your first data-oblivious application using a simple linear regression example application.


Documentation on Obliv-C’s language extensions and library functions.

Rust Wrapper

Calling Obliv-C protocols from Rust programs (Phillipp Schoppmann)

Projects Using Obliv-C

Publications and Talks


Bargav Jayaraman, PhD Student
Nathaniel Grevatt, Undergraduate Researcher

David Evans, Faculty Advisor


Samee Zahur, Project Founder and Leader (now at Google)
Darion Cassel, Undergraduate Researcher (now at CMU)
Natnatee (“Ko”) Dokmai, Undergraduate Researcher (now at Indiana University)
Jack Doerner, Wizard of Oblivion (now at Northeastern)
Samuel Havron, Undergraduate Researcher (now at Cornell)
Hannah Li, Undergraduate at Masters Student (now at Facebook)
Jesse Nayak, Undergraduate Researcher

Other Notable Contributors:
Richard Li, Michael Mahoney, Xiao Wang, Weikeng Chen