duoram.tcc 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Templated method implementations for duoram.hpp
  2. // Pass the player number and desired size
  3. template <typename T>
  4. Duoram<T>::Duoram(int player, size_t size) : player(player),
  5. oram_size(size), p0_blind(blind), p1_blind(peer_blinded_db) {
  6. if (player < 2) {
  7. database.resize(size);
  8. blind.resize(size);
  9. peer_blinded_db.resize(size);
  10. } else {
  11. p0_blind.resize(size);
  12. p1_blind.resize(size);
  13. }
  14. }
  15. // Constructor. len=0 means the maximum size (the parent's size
  16. // minus start).
  17. template <typename T>
  18. Duoram<T>::Flat::Flat(Duoram &duoram, MPCTIO &tio, yield_t &yield,
  19. size_t start, size_t len) : Shape(*this, duoram, tio, yield)
  20. {
  21. size_t parentsize = duoram.size();
  22. if (start > parentsize) {
  23. start = parentsize;
  24. }
  25. this->start = start;
  26. size_t maxshapesize = parentsize - start;
  27. if (len > maxshapesize || len == 0) {
  28. len = maxshapesize;
  29. }
  30. this->shape_size = len;
  31. }
  32. template <typename T>
  33. Duoram<T>::MemRefAS::operator T()
  34. {
  35. T res;
  36. return res;
  37. }