SecreC 2 language  2.8.0 (2023.09)
Language and standard library reference
Functions

Functions

template<domain D :shared3p >
D uint8 oramPerformWrite (D uint8[[1]] arr, D uint8[[1]] vals, D uint8[[1]] shuffleSeed1, D uint8[[1]] shuffleSeed2, uint[[1]] sigmatau)
 
template<domain D :shared3p >
D uint16 oramPerformWrite (D uint16[[1]] arr, D uint16[[1]] vals, D uint8[[1]] shuffleSeed1, D uint8[[1]] shuffleSeed2, uint[[1]] sigmatau)
 
template<domain D :shared3p >
D uint32 oramPerformWrite (D uint32[[1]] arr, D uint32[[1]] vals, D uint8[[1]] shuffleSeed1, D uint8[[1]] shuffleSeed2, uint[[1]] sigmatau)
 
template<domain D :shared3p >
D uint64 oramPerformWrite (D uint64[[1]] arr, D uint64[[1]] vals, D uint8[[1]] shuffleSeed1, D uint8[[1]] shuffleSeed2, uint[[1]] sigmatau)
 
template<domain D :shared3p >
D int8 oramPerformWrite (D int8[[1]] arr, D int8[[1]] vals, D uint8[[1]] shuffleSeed1, D uint8[[1]] shuffleSeed2, uint[[1]] sigmatau)
 
template<domain D :shared3p >
D int16 oramPerformWrite (D int16[[1]] arr, D int16[[1]] vals, D uint8[[1]] shuffleSeed1, D uint8[[1]] shuffleSeed2, uint[[1]] sigmatau)
 
template<domain D :shared3p >
D int32 oramPerformWrite (D int32[[1]] arr, D int32[[1]] vals, D uint8[[1]] shuffleSeed1, D uint8[[1]] shuffleSeed2, uint[[1]] sigmatau)
 
template<domain D :shared3p >
D int64 oramPerformWrite (D int64[[1]] arr, D int64[[1]] vals, D uint8[[1]] shuffleSeed1, D uint8[[1]] shuffleSeed2, uint[[1]] sigmatau)
 

Detailed Description

Obliviously replaces (some) values in the original values vector with those contained in the replacement values vector.

Note
D - shared3p protection domain
Supported types - uint8 / uint16 / uint32 / uint64 / int8 / int16 / int32 / int64
Parameters
arr- original values vector
vals- replacement values vector
shuffleSeed1- random seed (32 bytes), has to be the same as used for oramPrepareWrite
shuffleSeed2- random seed (32 bytes), has to be the same as used for oramPrepareWrite
sigmatau- sorting permutation, output of oramPrepareWrite
Returns
Returns a copy of arr , where arr[indices[i]] = vals[i]
Note
Given that size(arr) = m and size(indices) = n then oramPrepareWrite works in Ο((m+n)log(m+n)) and oramPerformWrite in Ο(m+n) time.
Leakage
None

Function Documentation

◆ oramPerformWrite() [1/8]

D int16 oramPerformWrite ( D int16[[1]]  arr,
D int16[[1]]  vals,
D uint8[[1]]  shuffleSeed1,
D uint8[[1]]  shuffleSeed2,
uint[[1]]  sigmatau 
)

◆ oramPerformWrite() [2/8]

D int32 oramPerformWrite ( D int32[[1]]  arr,
D int32[[1]]  vals,
D uint8[[1]]  shuffleSeed1,
D uint8[[1]]  shuffleSeed2,
uint[[1]]  sigmatau 
)

◆ oramPerformWrite() [3/8]

D int64 oramPerformWrite ( D int64[[1]]  arr,
D int64[[1]]  vals,
D uint8[[1]]  shuffleSeed1,
D uint8[[1]]  shuffleSeed2,
uint[[1]]  sigmatau 
)

◆ oramPerformWrite() [4/8]

D int8 oramPerformWrite ( D int8[[1]]  arr,
D int8[[1]]  vals,
D uint8[[1]]  shuffleSeed1,
D uint8[[1]]  shuffleSeed2,
uint[[1]]  sigmatau 
)

◆ oramPerformWrite() [5/8]

D uint16 oramPerformWrite ( D uint16[[1]]  arr,
D uint16[[1]]  vals,
D uint8[[1]]  shuffleSeed1,
D uint8[[1]]  shuffleSeed2,
uint[[1]]  sigmatau 
)

◆ oramPerformWrite() [6/8]

D uint32 oramPerformWrite ( D uint32[[1]]  arr,
D uint32[[1]]  vals,
D uint8[[1]]  shuffleSeed1,
D uint8[[1]]  shuffleSeed2,
uint[[1]]  sigmatau 
)

◆ oramPerformWrite() [7/8]

D uint64 oramPerformWrite ( D uint64[[1]]  arr,
D uint64[[1]]  vals,
D uint8[[1]]  shuffleSeed1,
D uint8[[1]]  shuffleSeed2,
uint[[1]]  sigmatau 
)

◆ oramPerformWrite() [8/8]

D uint8 oramPerformWrite ( D uint8[[1]]  arr,
D uint8[[1]]  vals,
D uint8[[1]]  shuffleSeed1,
D uint8[[1]]  shuffleSeed2,
uint[[1]]  sigmatau 
)