Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 12 additions & 7 deletions emp-tool/circuits/aes_128_ctr.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,11 @@
#include <errno.h>


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 {

Expand Down Expand Up @@ -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<BristolFashion>(new BristolFashion(circuit_file));
fclose(circuit_file);
this->circuit = std::unique_ptr<BristolFashion>(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);
}

Expand Down
27 changes: 27 additions & 0 deletions emp-tool/circuits/circuit_file.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,16 @@ class BristolFashion { public:
vector<int> gates;
vector<block> 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);
}
Expand All @@ -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 "<<string(prefix)+"_num_gate = "<<num_gate<<";\n";
fout << "int "<<string(prefix)+"_num_wire = "<<num_wire<<";\n";
fout << "int "<<string(prefix)+"_num_input = "<<num_input<<";\n";
fout << "int "<<string(prefix)+"_num_output = "<<num_output<<";\n";
fout << "int "<<string(prefix)+"_gate_arr ["<< num_gate*4 <<"] = {\n";
for(int i = 0; i < num_gate; ++i) {
for(int j = 0; j < 4; ++j)
fout<<gates[4*i+j]<<", ";
fout<<"\n";
}
fout <<"};\n";
fout.close();
}

void from_file(FILE * f) {
int tmp;
(void)fscanf(f, "%d%d\n", &num_gate, &num_wire);
Expand Down
Loading