2011-04-19 16:43:21 +08:00
|
|
|
new sjcl.test.TestCase("SRP known-answer (RFC 5054) tests", function (cb) {
|
|
|
|
if (!sjcl.keyexchange.srp) {
|
|
|
|
this.unimplemented();
|
|
|
|
cb && cb();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2011-04-19 20:14:28 +08:00
|
|
|
var i, kat = sjcl.test.vector.srp, tv, N, g, v, x;
|
2011-04-19 16:43:21 +08:00
|
|
|
|
|
|
|
for (i=0; i<kat.length; i++) {
|
|
|
|
tv = kat[i];
|
2011-04-19 20:14:28 +08:00
|
|
|
N = sjcl.keyexchange.srp.knownGroup(tv.known_group_size).N;
|
|
|
|
g = sjcl.keyexchange.srp.knownGroup(tv.known_group_size).g;
|
|
|
|
tv.s = sjcl.codec.hex.toBits(tv.s);
|
|
|
|
x = sjcl.keyexchange.srp.makeX(tv.I, tv.P, tv.s);
|
|
|
|
this.require(sjcl.codec.hex.fromBits(x).toUpperCase() === tv.x, "srpx #"+i);
|
|
|
|
|
|
|
|
v = sjcl.keyexchange.srp.makeVerifier(tv.I, tv.P, tv.s, N, g);
|
|
|
|
this.require(v.equals(new sjcl.bn(tv.v)), "srpv #"+i);
|
2011-04-19 16:43:21 +08:00
|
|
|
}
|
|
|
|
cb && cb();
|
|
|
|
});
|