github.com/jiajun1992/watercarver@v0.0.0-20191031150618-dfc2b17c0c4a/StadiumForWaterCarver/src/func_pro.h (about) 1 /* 2 * func_pro.h 3 * 4 * Created on: 05.07.2012 5 * Author: stephaniebayer 6 */ 7 8 #ifndef FUNC_PRO_H_ 9 #define FUNC_PRO_H_ 10 11 #include "Functions.h" 12 #include<vector> 13 #include "Cipher_elg.h" 14 #include "G_q.h" 15 #include "Mod_p.h" 16 #include "Pedersen.h" 17 18 #include "FakeZZ.h" 19 NTL_CLIENT 20 21 22 class func_pro { 23 public: 24 func_pro(); 25 virtual ~func_pro(); 26 27 //Help functions to generate X and Y 28 static void set_X(vector<vector<ZZ>*>* X, long m, long n); 29 static void set_A(vector<vector<ZZ>*>* Y, vector<vector<vector<long>* >* >* pi, long m, long n); 30 31 static void set_x2(vector<vector<ZZ>*>* chal_x2, ZZ x2, long m, long n); 32 static void set_B_op(vector<vector<ZZ>*>* B, vector<vector<vector<long>* >* >* basis_B, vector<vector<ZZ>*>* chal_x2, vector<vector<vector<long>* >*>* pi, long omega_mulex); 33 static void set_B(vector<vector<ZZ>*>* B,vector<vector<ZZ>*>* chal_x2, vector<vector<vector<long>* >*>* pi); 34 35 static void set_D(vector<vector<ZZ>*>* D, vector<vector<ZZ>*>* A, vector<vector<ZZ>*>* B, ZZ chal_z, ZZ chal_y); 36 static void set_D_h(vector<vector<ZZ>*>* D_h, vector<vector<ZZ>*>* D); 37 static void commit_B0_op(vector<ZZ>* B_0, vector<vector<long>* >* basis_B0, ZZ &r_B0, Mod_p &c_B0, long omega_mulex, Pedersen& ped); 38 39 static void set_Rb(vector<vector<ZZ>*>* B, vector<vector<ZZ>*>* R, ZZ &R_b); 40 static void commit_a_op(vector<ZZ>* a, vector<ZZ>* r_a, vector<Mod_p>* c_a, Pedersen& ped); 41 42 static void set_D_s(vector<vector<ZZ>*>* D_s, vector<vector<ZZ>*>* D_h, vector<vector<ZZ>*>* D, vector<ZZ>* chal, ZZ & r_Dl_bar); 43 static void commit_Dl_op(vector<Mod_p>* c_Dl, vector<ZZ>* Dl, vector<ZZ>* r_Dl, vector<vector<ZZ>*>* D, vector<vector<ZZ>*>* D_s, vector<ZZ>* chal, Pedersen& ped); 44 static void commit_d_op(vector<ZZ>* d, ZZ &r_d, Mod_p & c_d, Pedersen& ped); 45 static void commit_Delta_op(vector<ZZ>* Delta, vector<ZZ>* d, ZZ & r_Delta, Mod_p & c_Delta, Pedersen& ped); 46 static void commit_d_h_op(vector<vector<ZZ>*>* D_h, vector<ZZ>* d_h, vector<ZZ>* d, vector<ZZ>* Delta, ZZ & r_d_h, Mod_p &c_d_h, Pedersen& ped); 47 48 static void calculate_B_bar(vector<ZZ>* T_0, vector<vector<ZZ>*>* T, vector<ZZ>* chal, vector<ZZ>* B_bar); 49 static void calculate_r_B_bar(vector<ZZ>* r_T, vector<ZZ>* chal, ZZ r_T0, ZZ &r_B_bar); 50 static void calculate_a_bar(vector<ZZ>* a, vector<ZZ>* chal, ZZ & a_bar); 51 static void calculate_r_a_bar(vector<ZZ>* r_a, vector<ZZ>* chal, ZZ & r_a_bar); 52 static void calculate_rho_a_bar(vector<ZZ>* rho_a, vector<ZZ>* chal, ZZ & rho_bar); 53 54 static void calculate_D_h_bar(vector<ZZ>* D_h_bar, vector<vector<ZZ>*>* D_h, vector<ZZ>* chal); 55 static void calculate_r_Dh_bar(vector<ZZ>* r_D_h, vector<ZZ>* chal, ZZ & r_Dh_bar); 56 static void calculate_dbar_rdbar(vector<vector<ZZ>*>* D_h, vector<ZZ>* chal, vector<ZZ>* d_bar, vector<ZZ>* d, vector<ZZ>* r_D_h, ZZ r_d, ZZ & r_d_bar); 57 static void calculate_Deltabar_rDeltabar(vector<ZZ>* d_h, vector<ZZ>* chal, vector<ZZ>* Delta_bar, vector<ZZ>* Delta, ZZ r_d_h, ZZ r_Delta, ZZ & r_Delta_bar); 58 59 static void calculate_A_bar(vector<vector<ZZ>*>* D, vector<ZZ>* A_bar, vector<ZZ>* chal); 60 static void calculate_D_s_bar(vector<vector<ZZ>*>* D_s, vector<ZZ>* D_s_bar, vector<ZZ>* chal); 61 static void calculate_r_A_bar(ZZ r_Y0, vector<ZZ>* r_Y, vector<ZZ>* r_T, vector<ZZ>* chal, ZZ r_z, ZZ lamda, ZZ & r_A_bar); 62 static void calculate_r_Ds_bar(vector<ZZ>* r_D_h, vector<ZZ>* chal_1, vector<ZZ>* chal_2, ZZ & r_Ds_bar, ZZ r_Dm); 63 static void calculate_r_Dl_bar(vector<ZZ>* r_C, vector<ZZ>* chal, ZZ &r_Dl_bar); 64 65 }; 66 67 #endif /* FUNC_PRO_H_ */