Esempio n. 1
0
	uint8_t readB(){
		switch (type){
			case A_BYTE: return  evalB();
			case A_UINT: return  evalU();
			case A_INT: return  evalI();
			case A_LONG: return  evalL();
			case A_FLOAT: return  evalF();
			case A_DOUBLE: return  evalD();
			case A_TIME: return  evalT();
			default: return 0;
		}
		return 0;
	}
Esempio n. 2
0
	uint32_t readT(){
		switch (type){
			case A_BYTE: return  evalB();
			case A_UINT: return  evalU();
			case A_INT: return  evalI();
			case A_LONG: return  evalL();
			case A_FLOAT: return  evalF();
			case A_DOUBLE: return  evalD();
			case A_TIME: return  evalT();
			case A_STRING: return 0;
			case BAD_TYPE: return 0;
		}
		return 0;
	}
Esempio n. 3
0
void Sw05::encrypt(CharmList & pk, CharmListStr & wPrime, GT & M, int n, CharmList & CT)
{
    G1 g;
    G1 g1;
    G2 g2;
    CharmListG2 t;
    ZR s;
    GT Eprime = group.init(GT_t);
    G1 Eprimeprime;
    int wPrimeLen = 0;
    ZR loopVar;
    string loopVarStr;
    G2 evalTVar;
    CharmListG2 E;
    
    g = pk[0].getG1();
    g1 = pk[1].getG1();
    g2 = pk[2].getG2();
    t = pk[3].getListG2();
    s = group.random(ZR_t);
    Eprime = group.mul(M, group.exp(group.pair(g1, g2), s));
    Eprimeprime = group.exp(g, s);
    wPrimeLen = wPrime.length();
    for (int i = 0; i < wPrimeLen; i++)
    {
        loopVar = group.hashListToZR(wPrime[i]);
        loopVarStr = wPrime[i];
        evalTVar = evalT(pk, n, loopVar);
        E[loopVarStr] = group.exp(evalTVar, s);
    }
    CT.insert(0, wPrime);
    CT.insert(1, Eprime);
    CT.insert(2, Eprimeprime);
    CT.insert(3, E);
    return;
}
Esempio n. 4
0
void Sw05::extract(ZR & mk, CharmListStr & w, CharmList & pk, int dParam, int n, CharmListZR & blindingFactorDBlinded, ZR & bf0, CharmList & skBlinded)
{
    CharmListStr wBlinded;
    G1 g;
    G1 g1;
    G2 g2;
    CharmListG2 t;
    int lenw = 0;
    string loopVar1;
    CharmListZR wHash;
    ZR r;
    CharmListZR q;
    CharmListZR shares;
    int wHashLen = 0;
    ZR loopVar2;
    string loopVar2Str;
    G2 evalTVar;
    CharmListG2 D;
    CharmListG1 d;
    CharmListG1 dBlinded;
    CharmListG2 DBlinded;
    bf0 = group.random(ZR_t);
    wBlinded = w;
    
    g = pk[0].getG1();
    g1 = pk[1].getG1();
    g2 = pk[2].getG2();
    t = pk[3].getListG2();
    lenw = wBlinded.length();
    for (int i = 0; i < lenw; i++)
    {
        loopVar1 = wBlinded[i];
        wHash[i] = group.hashListToZR(loopVar1);
    }
    r = group.random(ZR_t);
    q[0] = mk;
    for (int i = 1; i < dParam; i++)
    {
        q.insert(i, group.random(ZR_t));
    }
    shares = util.genSharesForX(group, mk, q, wHash);
    wHashLen = wHash.length();
    for (int i = 0; i < wHashLen; i++)
    {
        loopVar2 = wHash[i];
        loopVar2Str = wBlinded[i];
        evalTVar = evalT(pk, n, loopVar2);
        D[loopVar2Str] = group.mul(group.exp(g2, shares[i]), group.exp(evalTVar, r));
        d[loopVar2Str] = group.exp(g, r);
    }
    CharmListStr d_keys = d.strkeys();
    int d_len = d_keys.length();
    for (int y_var = 0; y_var < d_len; y_var++)
    {
        string y = d_keys[y_var];
        dBlinded[y] = group.exp(d[y], group.div(1, bf0));
    }
    CharmListStr D_keys = D.strkeys();
    int D_len = D_keys.length();
    for (int y_var = 0; y_var < D_len; y_var++)
    {
        string y = D_keys[y_var];
        blindingFactorDBlinded.insert(y, group.random(ZR_t));
        DBlinded[y] = group.exp(D[y], group.div(1, blindingFactorDBlinded[y]));
    }
    skBlinded.insert(0, wBlinded);
    skBlinded.insert(1, DBlinded);
    skBlinded.insert(2, dBlinded);
    return;
}