public void accept(messC2 m, BigInteger p) { String c = m.getA(); if (balist[c] > 2) { Console.WriteLine("\nCLIENT {0} BLOCKED !", c); rep = null; } else { messC1 c1 = clist[c]; messL l = new messL(c, m.getQ(), c1.getV(), DateTime.Now); alist.Add(l); BigInteger R = m.getQ().modPow(c1.getyi(), p); //Console.WriteLine("\nRi: " + R); rep = new messS1(R, c1.getUk(), c1.getproof()); } }
private messS1 sendrequest(cserver cs, messC2 m) { cs.accept(m,p); return cs.reply(); }
public void retreive(String pass, bool legal) { BigInteger gp = gengp(pass); BigInteger x= genx(); BigInteger Q= genQ(x,gp); List<messS1> rec = new List<messS1>(); int n = slist.Length; for (int i = 0; i < n; i++) { messC2 m = new messC2(name, Q); messS1 reply=sendrequest(slist[i], m); if (reply == null) { Console.WriteLine("\n{0}: Abort !\n", name); return; } else rec.Add(reply); } BigInteger Kmrec= genKrec(x,rec); BigInteger proof = rec[0].getproof(); byte[] Ukrec= rec[0].getUk(); if (verify(gp,Kmrec,proof) == true) { Console.WriteLine("\n{0}: Km retreived successfuly !\n",name); BigInteger U= decryptU(Kmrec,Ukrec); BigInteger Qu=new BigInteger(rsa.createSig(Q, U, nrsa)); messC3 mc = new messC3(Q, Qu); for (int i = 0; i < slist.Length; i++) if (legal == true) sendconfirm(slist[i], mc, nrsa); else sendconfirmFake(slist[i], mc, nrsa); } else Console.WriteLine("\n{0}: Abort !\n",name); }