This project implements several oblivious data structures in C++ based on the research paper:
Xiao Shaun Wang, Kartik Nayak, Chang Liu, T-H. Hubert Chan, Elaine Shi, Emil Stefanov, Yan Huang.
Oblivious Data Structures. Cryptology ePrint Archive, Paper 2014/185, 2014.
DOI: 10.1145/2660267.2660314
The implementation includes:
- Oblivious Stack – A linked-list based stack with
PushandPopoperations. - Oblivious Queue – A linked-list based queue with
EnqueueandDequeueoperations. - Oblivious Priority Queue – An array-based heap (using a
readPathfunction to avoid revealing random access patterns) withInsertandExtractMinoperations. - Oblivious Map – An AVL tree-based map supporting
InsertandFindoperations (including rotations for balancing).
- A C++14 or C++17 compliant compiler (e.g., g++ or clang++).
- (Optional) CMake if you prefer a CMake-based build system.
From the project root, run:
g++ -std=c++17 -o ObliviousDS main.cpp ObliviousStack.cpp ObliviousQueue.cpp ObliviousPriorityQueue.cpp ObliviousMap.cppThen execute the binary:
./ObliviousDSThis project is licensed under the MIT License.
This implementation is based on the research paper:
Xiao Shaun Wang, Kartik Nayak, Chang Liu, T-H. Hubert Chan, Elaine Shi, Emil Stefanov, Yan Huang.
Oblivious Data Structures. Cryptology ePrint Archive, Paper 2014/185, 2014.
DOI: 10.1145/2660267.2660314