]> git.siccegge.de Git - software/DIPE.git/blobdiff - src/DIPE.cxx
Fixes, working now, kind of base scheme
[software/DIPE.git] / src / DIPE.cxx
index 321372dccd74d913c61f365b5e78af4133e3928b..5b39bb7a7b7c0d5cdbcad7d8d7e4a9c5a9b3ee46 100644 (file)
@@ -37,7 +37,7 @@ namespace {
        size_t dipe_h_length(element_t elem, size_t dimension) {
                return 16 /*cid*/ + dimension * element_length_in_bytes(elem);
        }
-       
+
        void dipe_generate_h(char* cid, element_t* y, size_t dimension, unsigned char* result) {
                memcpy(result, cid, 16);
                unsigned char* next_element = result+16;
@@ -52,13 +52,13 @@ void dipe_init(FILE* configfp, dipe_param_t* param) {
        char buffer[2<<16];
        (*param) = (dipe_param_t)malloc(sizeof(dipe_param));
        fread(buffer, 1, 2<<16, configfp);
-       
+
        pairing_init_set_buf((*param)->pairing, buffer, 2<<16);
 
        element_init_G1((*param)->g1, (*param)->pairing);
        element_init_G2((*param)->g2, (*param)->pairing);
        element_init_GT((*param)->gt, (*param)->pairing);
-       
+
        element_random((*param)->g1);
        element_random((*param)->g2);
        pairing_apply((*param)->gt, (*param)->g1, (*param)->g2, (*param)->pairing);
@@ -85,7 +85,7 @@ void dipe_master_keygen(dipe_param_t param, size_t dimension, dipe_master_public
                element_init_Zr((*sk)->k[i], param->pairing);
                element_init_G1((*pk)->k[i], param->pairing);
                element_random((*sk)->k[i]);
-               element_pow_zn((*pk)->k[i], param->gt, (*sk)->k[i]);
+               element_pow_zn((*pk)->k[i], param->g1, (*sk)->k[i]);
        }
 }
 
@@ -93,24 +93,24 @@ void dipe_keygen(dipe_param_t param, dipe_master_secretkey_t msk, char* cid, ele
        *sk = (dipe_secretkey_t)malloc(sizeof(dipe_secretkey));
        (*sk)->dimension = msk->dimension;
        element_init_G2((*sk)->d, param->pairing);
-       
+
        size_t hash_input_length = dipe_h_length(y[0], msk->dimension);
        unsigned char hash_input[hash_input_length];
        element_t h;
        element_init_G2(h, param->pairing);
-       
+
        dipe_generate_h(cid, y, msk->dimension, hash_input);
        element_from_hash(h, hash_input, hash_input_length);
 
        element_t innerp;
        element_t tmp;
-       
+
        element_init_Zr(innerp, param->pairing);
        element_init_Zr(tmp, param->pairing);
-       element_set1(innerp);
+       element_set0(innerp);
 
        element_from_hash(h, hash_input, hash_input_length);
-       
+
        for (size_t i = 0; i < msk->dimension; ++i) {
                element_mul(tmp, y[i], msk->k[i]);
                element_add(innerp, innerp, tmp);
@@ -121,7 +121,7 @@ void dipe_keygen(dipe_param_t param, dipe_master_secretkey_t msk, char* cid, ele
        element_pow_zn(h, h, innerp);
        element_pow_zn(a2, param->g2, msk->a);
        element_mul((*sk)->d, a2, h);
-       
+
        element_clear(h);
        element_clear(innerp);
        element_clear(tmp);
@@ -130,8 +130,8 @@ void dipe_keygen(dipe_param_t param, dipe_master_secretkey_t msk, char* cid, ele
 
 void dipe_encrypt(dipe_param_t param, dipe_master_publickey_t mpk, element_t* x, element_t ptxt, dipe_ctxt_t* ctxt) {
        *ctxt = (dipe_ctxt_t)malloc(sizeof(dipe_ctxt));
-       (*ctxt)->dimension = mpk->dimension;    
-       
+       (*ctxt)->dimension = mpk->dimension;
+
        element_t r;
        element_t s;
        element_init_Zr(r, param->pairing);
@@ -142,19 +142,19 @@ void dipe_encrypt(dipe_param_t param, dipe_master_publickey_t mpk, element_t* x,
 
        element_init_G1((*ctxt)->s, param->pairing);
        element_pow_zn((*ctxt)->s, param->g1, s);
-       
+
        element_t k1;
        element_t x1;
        element_init_G1(k1, param->pairing);
        element_init_G1(x1, param->pairing);
-       
+
        (*ctxt)->cx = (element_t*)calloc(mpk->dimension, sizeof(element_t));
        for (size_t i = 0; i < mpk->dimension; ++i){
                element_pow_zn(x1, param->g1, x[i]);
                element_pow_zn(x1, x1, r);
 
                element_pow_zn(k1, mpk->k[i], s);
-               
+
                element_init_G1((*ctxt)->cx[i], param->pairing);
                element_mul((*ctxt)->cx[i], k1, x1);
        }
@@ -178,10 +178,10 @@ void dipe_decrypt(dipe_param_t param, dipe_secretkey_t sk, char* cid, element_t*
        unsigned char hash_input[hash_input_length];
        element_t h;
        element_init_G2(h, param->pairing);
-       
+
        dipe_generate_h(cid, y, sk->dimension, hash_input);
        element_from_hash(h, hash_input, hash_input_length);
-       
+
        element_t tmp;
        element_t innerp;
        element_t hy;
@@ -189,7 +189,7 @@ void dipe_decrypt(dipe_param_t param, dipe_secretkey_t sk, char* cid, element_t*
        element_init_GT(innerp, param->pairing);
        element_init_G2(hy, param->pairing);
 
-       element_set1(innerp);   
+       element_set1(innerp);
        for (size_t i = 0; i < sk->dimension; ++i) {
                element_pow_zn(hy, h, y[i]);
                pairing_apply(tmp, ctxt->cx[i], hy, param->pairing);