From 0231f494f643adaf1d9df9c2968539e3b5255c37 Mon Sep 17 00:00:00 2001 From: Sean Bowe Date: Sat, 5 Dec 2015 15:35:22 -0700 Subject: [PATCH] Added salts --- src/gadget.hpp | 1 + src/gadget.tcc | 26 +++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/gadget.hpp b/src/gadget.hpp index 086741b..e9f5eb6 100644 --- a/src/gadget.hpp +++ b/src/gadget.hpp @@ -14,6 +14,7 @@ public: std::shared_ptr> padding_var; std::vector>> key; // dimension*dimension*8 bit key + std::vector> salts; std::vector>> key_blocks; sodoku_encryption_key(protoboard &pb, diff --git a/src/gadget.tcc b/src/gadget.tcc index 90724de..fabd77a 100644 --- a/src/gadget.tcc +++ b/src/gadget.tcc @@ -11,10 +11,13 @@ sodoku_encryption_key::sodoku_encryption_key(protoboard &pb, padding_var.reset(new digest_variable(pb, 256, "padding")); key.resize(num_key_digests); + salts.resize(num_key_digests); //key_blocks.resize(num_key_digests); for (unsigned int i = 0; i < num_key_digests; i++) { key[i].reset(new digest_variable(pb, 256, "key[i]")); + salts[i].allocate(pb, 8, "key salt"); + /* key_blocks[i].reset(new block_variable(pb, { seed_key->bits, @@ -42,15 +45,36 @@ void sodoku_encryption_key::generate_r1cs_constraints() for (unsigned int i = 0; i < num_key_digests; i++) { key[i]->generate_r1cs_constraints(); + + auto s = convertIntToVector(i); + + for (unsigned int j = 0; j < 8; j++) { + this->pb.add_r1cs_constraint( + r1cs_constraint( + { salts[i][j] }, + { 1 }, + { s[j] ? 1 : 0 }), + "constrain_salts"); + } } } template void sodoku_encryption_key::generate_r1cs_witness() { + unsigned int num_key_digests = div_ceil(dimension * dimension * 8, 256); + for (unsigned int i = 0; i < 256; i++) { this->pb.val(padding_var->bits[i]) = sha256_padding[i] ? 1 : 0; - } + } + + for (unsigned int i = 0; i < num_key_digests; i++) { + auto s = convertIntToVector(i); + + for (unsigned int j = 0; j < 8; j++) { + this->pb.val(salts[i][j]) = s[j] ? 1 : 0; + } + } } template