diff --git a/emp-tool/circuits/aes_128_ctr.h b/emp-tool/circuits/aes_128_ctr.h index c704c87..764e154 100644 --- a/emp-tool/circuits/aes_128_ctr.h +++ b/emp-tool/circuits/aes_128_ctr.h @@ -17,8 +17,11 @@ #include -extern unsigned int emp_tool_circuits_files_bristol_fashion_aes_128_txt_len; -extern unsigned char emp_tool_circuits_files_bristol_fashion_aes_128_txt[]; +extern int emp_tool_circuits_files_bristol_fashion_aes_128_num_gate; +extern int emp_tool_circuits_files_bristol_fashion_aes_128_num_wire; +extern int emp_tool_circuits_files_bristol_fashion_aes_128_num_input; +extern int emp_tool_circuits_files_bristol_fashion_aes_128_num_output; +extern int emp_tool_circuits_files_bristol_fashion_aes_128_gate_arr[]; namespace emp { @@ -104,11 +107,13 @@ class AES_128_CTR_Calculator { public: // Sets up BristolFashion circuit for calculating aes, and allocates some space and constants. AES_128_CTR_Calculator() { - FILE * circuit_file = fmemopen(emp_tool_circuits_files_bristol_fashion_aes_128_txt, - emp_tool_circuits_files_bristol_fashion_aes_128_txt_len, - "r"); - this->circuit = std::unique_ptr(new BristolFashion(circuit_file)); - fclose(circuit_file); + this->circuit = std::unique_ptr(new BristolFashion( + emp_tool_circuits_files_bristol_fashion_aes_128_num_gate, + emp_tool_circuits_files_bristol_fashion_aes_128_num_wire, + emp_tool_circuits_files_bristol_fashion_aes_128_num_input, + emp_tool_circuits_files_bristol_fashion_aes_128_num_output, + emp_tool_circuits_files_bristol_fashion_aes_128_gate_arr + )); this->counter.bits.resize(128); } diff --git a/emp-tool/circuits/circuit_file.h b/emp-tool/circuits/circuit_file.h index 6159ac0..1747a65 100644 --- a/emp-tool/circuits/circuit_file.h +++ b/emp-tool/circuits/circuit_file.h @@ -134,6 +134,16 @@ class BristolFashion { public: vector gates; vector wires; + BristolFashion(int num_gate, int num_wire, int num_input, int num_output, int * gate_arr) { + this->num_gate = num_gate; + this->num_wire = num_wire; + this->num_input = num_input; + this->num_output = num_output; + gates.resize(num_gate*4); + wires.resize(num_wire); + memcpy(gates.data(), gate_arr, num_gate*4*sizeof(int)); + } + BristolFashion(FILE * file) { this->from_file(file); } @@ -142,6 +152,23 @@ class BristolFashion { public: this->from_file(file); } + void to_file(const char * filename, const char * prefix) { + std::ofstream fout; + fout.open(filename); + fout << "int "<