5 from pyoram.util.virtual_heap import \
7 from pyoram.encrypted_storage.encrypted_heap_storage import \
9 from pyoram.oblivious_storage.tree.tree_oram_helper import \
10 TreeORAMStorageManagerPointerAddressing
13 storage_name = "heap.bin"
14 print("Storage Name: %s" % (storage_name))
19 block_size = struct.calcsize("!?LL")
21 vheap = SizedVirtualHeap(
24 blocks_per_bucket=blocks_per_bucket)
26 print("Block Size: %s" % (block_size))
27 print("Blocks Per Bucket: %s" % (blocks_per_bucket))
32 for j in range(blocks_per_bucket):
34 bucket += struct.pack(
38 while not vheap.is_nil_node(x):
39 x = x.child_node(random.randint(0, heap_base-1))
41 bucket += struct.pack(
42 "!?LL", True, initialize.id_, x.bucket)
43 position_map[initialize.id_] = x.bucket
48 with EncryptedHeapStorage.setup(
54 blocks_per_bucket=blocks_per_bucket,
55 initialize=initialize,
56 ignore_existing=True) as f:
57 assert storage_name == f.storage_name
59 oram = TreeORAMStorageManagerPointerAddressing(f, stash)
61 b = vheap.random_bucket()
64 print(repr(vheap.Node(oram.path_stop_bucket)))
65 print(oram.path_block_ids)
66 print(oram.path_block_eviction_levels)
70 print(repr(vheap.Node(oram.path_stop_bucket)))
71 print(oram.path_block_ids)
72 print(oram.path_block_eviction_levels)
73 print(oram.path_block_reordering)
78 print(repr(vheap.Node(oram.path_stop_bucket)))
79 print(oram.path_block_ids)
80 print(oram.path_block_eviction_levels)
84 print(repr(vheap.Node(oram.path_stop_bucket)))
85 print(oram.path_block_ids)
86 print(oram.path_block_eviction_levels)
87 print(oram.path_block_reordering)
88 assert all(x is None for x in oram.path_block_reordering)
90 os.remove(storage_name)
92 if __name__ == "__main__":
93 main() # pragma: no cover