mirror of
https://github.com/data61/MP-SPDZ.git
synced 2026-05-13 03:00:24 -04:00
77 lines
2.0 KiB
C++
77 lines
2.0 KiB
C++
/*
|
|
* PostSacriRepRingShare.h
|
|
*
|
|
*/
|
|
|
|
#ifndef PROTOCOLS_POSTSACRIREPRINGSHARE_H_
|
|
#define PROTOCOLS_POSTSACRIREPRINGSHARE_H_
|
|
|
|
#include "Protocols/MaliciousRep3Share.h"
|
|
#include "Protocols/MalRepRingShare.h"
|
|
#include "Protocols/Rep3Share2k.h"
|
|
#include "GC/MaliciousRepSecret.h"
|
|
|
|
template<class T> class MalRepRingPrepWithBits;
|
|
template<class T> class PostSacrifice;
|
|
|
|
template<int K, int S>
|
|
class PostSacriRepRingShare : public Rep3Share2<K>
|
|
{
|
|
typedef Rep3Share2<K> super;
|
|
typedef PostSacriRepRingShare This;
|
|
|
|
public:
|
|
static const int BIT_LENGTH = K;
|
|
static const int SECURITY = S;
|
|
|
|
static const bool has_trunc_pr = false;
|
|
static const bool malicious = true;
|
|
|
|
typedef SignedZ2<K> clear;
|
|
typedef MaliciousRep3Share<Z2<K + S>> prep_type;
|
|
typedef Z2<S> random_type;
|
|
typedef MalRepRingShare<K + 2, S> SquareToBitShare;
|
|
|
|
typedef PostSacrifice<PostSacriRepRingShare> Protocol;
|
|
typedef HashMaliciousRepMC<PostSacriRepRingShare> MAC_Check;
|
|
typedef MAC_Check Direct_MC;
|
|
typedef ReplicatedInput<PostSacriRepRingShare> Input;
|
|
typedef ReplicatedPO<This> PO;
|
|
typedef SpecificPrivateOutput<This> PrivateOutput;
|
|
typedef MalRepRingPrepWithBits<PostSacriRepRingShare> LivePrep;
|
|
|
|
typedef GC::MaliciousRepSecret bit_type;
|
|
|
|
const static bool expensive = true;
|
|
|
|
static string type_short()
|
|
{
|
|
return "PR";
|
|
}
|
|
|
|
PostSacriRepRingShare()
|
|
{
|
|
}
|
|
PostSacriRepRingShare(const clear& other, int my_num, clear alphai = {}) :
|
|
super(other, my_num, alphai)
|
|
{
|
|
}
|
|
template<class U>
|
|
PostSacriRepRingShare(const U& other) : super(other)
|
|
{
|
|
}
|
|
|
|
template<class U>
|
|
static void split(vector<U>& dest, const vector<int>& regs, int n_bits,
|
|
const super* source, int n_inputs,
|
|
typename bit_type::Protocol& protocol)
|
|
{
|
|
if (regs.size() / n_bits != 3)
|
|
throw runtime_error("only secure with three-way split");
|
|
|
|
super::split(dest, regs, n_bits, source, n_inputs, protocol);
|
|
}
|
|
};
|
|
|
|
#endif /* PROTOCOLS_POSTSACRIREPRINGSHARE_H_ */
|