Expand description

Traits for different pieces of ORAM, from the level of block storage up to an oblivious map. These are all defined in terms of fixed-length chunks of bytes and the A8Bytes object from the aligned-cmov crate.

There is also a naive implementation of the ORAM storage object for tests.


pub use aligned_cmov::subtle;
pub use aligned_cmov::typenum;


Some generic tests that exercise objects implementing these traits


Struct representing a generic array - GenericArray<T, N> works like [T; N]

The HeapORAMStorage is simply vector

HeapORAMStorage simply allocates a vector, and requires no special initialization support


Status code for the case that an OMAP operation found and returned a value.

Status code for the case that the OMAP algorithm rejected the key. The all zeroes key may be invalid for instance.

Status code for the case that an OMAP operation did not find a value that was searched for.

Status code for the case that an OMAP wanted to add a new value but could not because the hash table overflowed, and so the operation failed.


Trait making GenericArray work, marking types to be used as length of an array

CMov represents types that can be (obliviously) conditionally moved.

A marker trait used to indicate that an RngCore or BlockRngCore implementation is supposed to be cryptographically secure.

A factory which makes ObliviousMap objects of some type, based on an ORAM

An Oblivious RAM – that is, an array like [A8Bytes; N] which supports access queries without memory access patterns revealing what indices were queried. (Here, N is a runtime parameter set at construction time.)

A factory which creates an ORAM of arbitrary size using recursive strategy. The result is required to have the ’static lifetime, and not be tied to the factory.

Trait that helps to debug ORAM. This should only be used in tests.

Represents trusted block storage holding aligned blocks of memory of a certain size. This is a building block for ORAM.

A factory which makes ORAMStorage objects of some type

Trait for an oblivious hash map, where READING and ACCESSING EXISTING ENTRIES have a strong oblivious property.

PositionMap trait conceptually is an array of TreeIndex. Each value in the map corresponds to a leaf in the complete binary tree, at some common height.

A factory which creates a PositionMap

The core of a random number generator.


Utility function for logs base 2 rounded up, implemented as const fn

A helper which takes an Rng implementing SeedableRng and returns a lambda which returns newly seeded Rng’s with seeds derived from this one. This matches the rng_maker constraints in the above traits, and can be used in tests when we want all the Rng’s to be seeded.

Type Definitions

An alias representing 8-byte aligned bytes, mainly to save typing

An alias representing 64-byte aligned bytes, mainly to save typing