RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: [email protected] Module: rpm Date: 01-Aug-2009 19:51:01 Branch: HEAD Handle: 2009080117510001 Modified files: rpm/js rpmmpw-js.c rpm/js/tscripts Mpw.js Log: js: add mpw coercions, haul out a load of trash. Summary: Revision Changes Path 1.7 +49 -81 rpm/js/rpmmpw-js.c 1.7 +67 -41 rpm/js/tscripts/Mpw.js ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/js/rpmmpw-js.c ============================================================================ $ cvs diff -u -r1.6 -r1.7 rpmmpw-js.c --- rpm/js/rpmmpw-js.c 30 Jul 2009 22:30:30 -0000 1.6 +++ rpm/js/rpmmpw-js.c 1 Aug 2009 17:51:00 -0000 1.7 @@ -960,12 +960,14 @@ int sign = 1; int ndigits; -#ifdef FIXME if ((base != 0 && base < 2) || base > 36) { +#ifdef FIXME PyErr_SetString(PyExc_ValueError, "mpw() arg 2 must be >= 2 and <= 36"); +#else +assert(0); +#endif return NULL; } -#endif while (*s != '\0' && isspace(_CHARMASK(*s))) s++; if (*s == '+') @@ -1392,9 +1394,9 @@ mpgcd_w(xsize, xdata, mdata, MPW_DATA(z), wksp); break; case 'I': - wksp = alloca((7*msize+6)*sizeof(*wksp)); + wksp = alloca((6*msize+6)*sizeof(*wksp)); z = mpw_New(msize); - (void) mpextgcd_w(msize, mdata, xdata, MPW_DATA(z), wksp+msize); + (void) mpextgcd_w(msize, mdata, xdata, MPW_DATA(z), wksp); break; #ifdef DYING case 'R': @@ -1512,28 +1514,19 @@ } static mpwObject * -mpw_i2mpw(JSContext *cx, JSObject * obj) - /*...@modifies o @*/ +mpw_j2mpw(JSContext *cx, jsval v) { -#ifdef FIXME - if (mpw_Check(o)) { - Py_INCREF(o); - return (mpwObject *)o; - } - if (PyInt_Check(o)) - return mpw_FromLong(PyInt_AsLong(o)); - else if (PyLong_Check(o)) - return mpw_FromLongObject((PyLongObject *)o); - else if (PyFloat_Check(o)) - return mpw_FromDouble(PyFloat_AsDouble(o)); - else if (PyString_Check(o)) - return mpw_FromHEX(PyString_AS_STRING(o)); - - PyErr_SetString(PyExc_TypeError, "number coercion (to mpwObject) failed"); - return NULL; -#else - return JS_GetInstancePrivate(cx, obj, &rpmmpwClass, NULL); -#endif + mpwObject * z = NULL; + if (JSVAL_IS_INT(v)) + z = mpw_FromLong(JSVAL_TO_INT(v)); + if (JSVAL_IS_DOUBLE(v)) + z = mpw_FromDouble(*JSVAL_TO_DOUBLE(v)); + if (JSVAL_IS_STRING(v)) + z = mpw_FromHEX(JS_GetStringBytes(JSVAL_TO_STRING(v))); + if (JSVAL_IS_OBJECT(v)) + z = JS_GetInstancePrivate(cx, JSVAL_TO_OBJECT(v), &rpmmpwClass, NULL); +assert(z != NULL); + return z; } /* --- Object methods */ @@ -1560,14 +1553,12 @@ mpw_Gcd(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmmpwClass, NULL); - JSObject * xo; - JSObject * yo; JSBool ok; _METHOD_DEBUG_ENTRY(_debug); - if ((ok = JS_ConvertArguments(cx, argc, argv, "oo", &xo, &yo))) - ok = mpw_wrap(cx, rval, - mpw_ops2('G', mpw_i2mpw(cx, xo), mpw_i2mpw(cx, yo))); +assert(argc == 2); + ok = mpw_wrap(cx, rval, + mpw_ops2('G', mpw_j2mpw(cx, argv[0]), mpw_j2mpw(cx, argv[1]))); return ok; } @@ -1576,14 +1567,12 @@ mpw_Invm(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmmpwClass, NULL); - JSObject *xo; - JSObject * mo; JSBool ok; _METHOD_DEBUG_ENTRY(_debug); - if ((ok = JS_ConvertArguments(cx, argc, argv, "oo", &xo, &mo))) - ok = mpw_wrap(cx, rval, - mpw_ops2('I', mpw_i2mpw(cx, xo), mpw_i2mpw(cx, mo))); +assert(argc == 2); + ok = mpw_wrap(cx, rval, + mpw_ops2('I', mpw_j2mpw(cx, argv[0]), mpw_j2mpw(cx, argv[1]))); return ok; } @@ -1592,14 +1581,14 @@ mpw_Sqrm(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmmpwClass, NULL); - JSObject * xo; - JSObject * mo; JSBool ok; _METHOD_DEBUG_ENTRY(_debug); - if ((ok = JS_ConvertArguments(cx, argc, argv, "oo", &xo, &mo))) - ok = mpw_wrap(cx, rval, - mpw_ops2('S', mpw_i2mpw(cx, xo), mpw_i2mpw(cx, mo))); +assert(argc == 2); +_debug = -1; + ok = mpw_wrap(cx, rval, + mpw_ops2('S', mpw_j2mpw(cx, argv[0]), mpw_j2mpw(cx, argv[1]))); +_debug = 0; return ok; } @@ -1608,16 +1597,13 @@ mpw_Addm(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmmpwClass, NULL); - JSObject * xo; - JSObject * yo; - JSObject * mo; JSBool ok; _METHOD_DEBUG_ENTRY(_debug); - if ((ok = JS_ConvertArguments(cx, argc, argv, "ooo", &xo, &yo, &mo))) - ok = mpw_wrap(cx, rval, +assert(argc == 3); + ok = mpw_wrap(cx, rval, mpw_ops3('+', - mpw_i2mpw(cx, xo), mpw_i2mpw(cx, yo), mpw_i2mpw(cx, mo))); + mpw_j2mpw(cx, argv[0]), mpw_j2mpw(cx, argv[1]), mpw_j2mpw(cx, argv[2]))); return ok; } @@ -1626,16 +1612,13 @@ mpw_Subm(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmmpwClass, NULL); - JSObject * xo; - JSObject * yo; - JSObject * mo; JSBool ok; _METHOD_DEBUG_ENTRY(_debug); - if ((ok = JS_ConvertArguments(cx, argc, argv, "ooo", &xo, &yo, &mo))) - ok = mpw_wrap(cx, rval, +assert(argc == 3); + ok = mpw_wrap(cx, rval, mpw_ops3('-', - mpw_i2mpw(cx, xo), mpw_i2mpw(cx, yo), mpw_i2mpw(cx, mo))); + mpw_j2mpw(cx, argv[0]), mpw_j2mpw(cx, argv[1]), mpw_j2mpw(cx, argv[2]))); return ok; } @@ -1644,16 +1627,13 @@ mpw_Mulm(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmmpwClass, NULL); - JSObject * xo; - JSObject * yo; - JSObject * mo; JSBool ok; _METHOD_DEBUG_ENTRY(_debug); - if ((ok = JS_ConvertArguments(cx, argc, argv, "ooo", &xo, &yo, &mo))) - ok = mpw_wrap(cx, rval, +assert(argc == 3); + ok = mpw_wrap(cx, rval, mpw_ops3('*', - mpw_i2mpw(cx, xo), mpw_i2mpw(cx, yo), mpw_i2mpw(cx, mo))); + mpw_j2mpw(cx, argv[0]), mpw_j2mpw(cx, argv[1]), mpw_j2mpw(cx, argv[2]))); return ok; } @@ -1662,16 +1642,13 @@ mpw_Powm(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmmpwClass, NULL); - JSObject * xo; - JSObject * yo; - JSObject * mo; JSBool ok; _METHOD_DEBUG_ENTRY(_debug); - if ((ok = JS_ConvertArguments(cx, argc, argv, "ooo", &xo, &yo, &mo))) - ok = mpw_wrap(cx, rval, +assert(argc == 3); + ok = mpw_wrap(cx, rval, mpw_ops3('P', - mpw_i2mpw(cx, xo), mpw_i2mpw(cx, yo), mpw_i2mpw(cx, mo))); + mpw_j2mpw(cx, argv[0]), mpw_j2mpw(cx, argv[1]), mpw_j2mpw(cx, argv[2]))); return ok; } @@ -1683,14 +1660,12 @@ mpw_Rndm(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { void * ptr = JS_GetInstancePrivate(cx, obj, &rpmmpwClass, NULL); - JSObject * xo; - JSObject * mo; JSBool ok; _METHOD_DEBUG_ENTRY(_debug); - if ((ok = JS_ConvertArguments(cx, argc, argv, "oo", &mo, &xo))) - ok = mpw_wrap(cx, rval, - mpw_ops2('R', mpw_i2mpw(cx, xo), mpw_i2mpw(cx, mo))); +assert(argc == 2); + ok = mpw_wrap(cx, rval, + mpw_ops2('R', mpw_j2mpw(cx, argv[0]), mpw_j2mpw(cx, argv[1]))); return ok; } #endif @@ -1988,9 +1963,6 @@ uintN i; switch (argc) { - case 1: - v = argv[0]; - /*...@fallthrough@*/ case 0: /* Return a new Mpw object. */ if ((o = rpmjs_NewMpwObject(cx, v)) != NULL) @@ -2003,13 +1975,7 @@ for (i = 0; i < argc; i++) { v = argv[i]; - if (JSVAL_IS_OBJECT(v)) { - /* XXX verify mpwClass */ -assert(++ix < (int)argc); - stack[ix] = mpw_i2mpw(cx, JSVAL_TO_OBJECT(v)); - continue; - } - + /* Check for operations. */ if (JSVAL_IS_STRING(v)) { s = JS_GetStringBytes(JSVAL_TO_STRING(v)); ns = strlen(s); @@ -2018,7 +1984,7 @@ if (ns > 2) { assert(++ix < (int)argc); - stack[ix] = mpw_i2mpw(cx, JSVAL_TO_OBJECT(v)); + stack[ix] = mpw_j2mpw(cx, v); continue; } @@ -2049,7 +2015,9 @@ /* XXX FIXME */ break; } - continue; + } else { +assert(++ix < (int)argc); + stack[ix] = mpw_j2mpw(cx, v); } } if (ix < 0) { @@ . patch -p0 <<'@@ .' Index: rpm/js/tscripts/Mpw.js ============================================================================ $ cvs diff -u -r1.6 -r1.7 Mpw.js --- rpm/js/tscripts/Mpw.js 30 Jul 2009 22:30:31 -0000 1.6 +++ rpm/js/tscripts/Mpw.js 1 Aug 2009 17:51:01 -0000 1.7 @@ -333,28 +333,61 @@ var v = mpw('636155ac9a4633b4665d179f9e4117df68601f34'); ack('mpw(v3, q, "%").toString(16)', v.toString(16)); +// ===== secp 112r1 +var p = mpw('db7c2abf62e35e668076bead208b'); +ack('mpw(mpw(mpw(2, 128, "**"), 3, "-"), 76439, "/").toString(16)', p.toString(16)); +var b = mpw('659ef8ba043916eede8911702b22'); +var n = mpw('db7c2abf62e35e7628dfac6561c5'); +var gx = mpw('09487239995a5ee76b55f9c2f098'); +var gy = mpw('a89ce5af8724c0a23e0e0ff77500'); + +var gy2 = mpw.sqrm(gy, p); +var gx31 = mpw.mulm(mpw.mulm(gx, gx, p), gx, p); +var gx32 = mpw.mulm(gx, 3, p); +ack('mpw.addm(mpw.subm(gx31, gx32, p), b, p).toString(10)', gy2.toString(10)); + +// ===== secp 128r1 +var p = mpw('fffffffdffffffffffffffffffffffff'); +ack('mpw(mpw(mpw(2, 128, "**"), mpw(2, 97, "**"), "-"), 1, "-").toString(16)', p.toString(16)); +var b = mpw('e87579c11079f43dd824993c2cee5ed3'); +var n = mpw('fffffffe0000000075a30d1b9038a115'); +var gx = mpw('161ff7528b899b2d0c28607ca52c5b86'); +var gy = mpw('cf5ac8395bafeb13c02da292dded7a83'); + +var gy2 = mpw.sqrm(gy, p); +var gx31 = mpw.mulm(mpw.mulm(gx, gx, p), gx, p); +var gx32 = mpw.mulm(gx, 3, p); +ack('mpw.addm(mpw.subm(gx31, gx32, p), b, p).toString(10)', gy2.toString(10)); + +// ===== secp 160r1 +var p = mpw('ffffffffffffffffffffffffffffffff7fffffff'); +ack('mpw(mpw(mpw(2, 160, "**"), mpw(2, 31, "**"), "-"), 1, "-").toString(16)', p.toString(16)); +var b = mpw('1c97befc54bd7a8b65acf89f81d4d4adc565fa45'); +var n = mpw('0100000000000000000001f4c8f927aed3ca752257'); +var gx = mpw('4a96b5688ef573284664698968c38bb913cbfc82'); +var gy = mpw('23a628553168947d59dcc912042351377ac5fb32'); + +var gy2 = mpw.sqrm(gy, p); +var gx31 = mpw.mulm(mpw.mulm(gx, gx, p), gx, p); +var gx32 = mpw.mulm(gx, 3, p); +ack('mpw.addm(mpw.subm(gx31, gx32, p), b, p).toString(10)', gy2.toString(10)); + // ===== ECDSA P-192 example from // http://csrc.nist.gov/groups/ST/toolkit/documents/Examples/ECDSA_Prime.pdf -var m1 = mpw(1); -var m2 = mpw(2); -var m3 = mpw(3); -var m27 = mpw(27); -var m64 = mpw(64); -var m192 = mpw(192); -var p = mpw(mpw(mpw(m2, m192, "**"), mpw(m2, m64, "**"), "-"), m1, "-"); +var p = mpw(mpw(mpw(2, 192, "**"), mpw(2, 64, "**"), "-"), 1, "-"); ack('p.toString(10)', '6277101735386680763835789423207666416083908700390324961279'); var n = mpw('ffffffffffffffffffffffff99def836146bc9b1b4d22831'); ack('n.toString(10)', '6277101735386680763835789423176059013767194773182842284081'); var c = mpw('3099d2bbbfcb2538542dcd5fb078b6ef5f3d6fe2c745de65'); var b = mpw('64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1'); -ack('mpw.mulm(mpw.sqrm(b, p), c, p).toString(10)', mpw(p, m27, "-").toString(10)); +ack('mpw.mulm(mpw.sqrm(b, p), c, p).toString(10)', mpw(p, 27, "-").toString(10)); var gx = mpw('188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012'); var gy = mpw('07192b95ffc8da78631011ed6b24cdd573f977a11e794811'); var gy2 = mpw.sqrm(gy, p); var gx31 = mpw.mulm(mpw.mulm(gx, gx, p), gx, p); -var gx32 = mpw.mulm(gx, m3, p); +var gx32 = mpw.mulm(gx, 3, p); ack('mpw.addm(mpw.subm(gx31, gx32, p), b, p).toString(10)', gy2.toString(10)); var d = mpw('7891686032fd8057f636b44b1f47cce564d2509923a7465b'); @@ -362,7 +395,7 @@ var qy = mpw('dae6d4cc05ef4f27d79ee38b71c9c8ef4865d98850d84aa5'); var qy2 = mpw.sqrm(qy, p); var qx31 = mpw.mulm(mpw.mulm(qx, qx, p), qx, p); -var qx32 = mpw.mulm(qx, m3, p); +var qx32 = mpw.mulm(qx, 3, p); // FIXME: wrong answer // ack('mpw.addm(mpw.subm(qx31, qx32, p), b, p).toString(10)', gy2.toString(10)); @@ -384,9 +417,7 @@ // ===== ECDSA P-224 example from // http://csrc.nist.gov/groups/ST/toolkit/documents/Examples/ECDSA_Prime.pdf -var m96 = mpw(96); -var m224 = mpw(224); -var p = mpw(mpw(mpw(m2, m224, "**"), mpw(m2, m96, "**"), "-"), m1, "+"); +var p = mpw(mpw(mpw(2, 224, "**"), mpw(2, 96, "**"), "-"), 1, "+"); ack('p.toString(10)', '26959946667150639794667015087019630673557916260026308143510066298881'); var n = mpw('ffffffffffffffffffffffffffff16a2e0b8f03e13dd29455c5c2a3d'); ack('n.toString(10)', '26959946667150639794667015087019625940457807714424391721682722368061'); @@ -394,13 +425,13 @@ var c = mpw('5b056c7e11dd68f40469ee7f3c7a7d74f7d121116506d031218291fb'); var b = mpw('b4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4'); // FIXME: floating point exception -// ack('mpw.mulm(mpw.sqrm(b, p), c, p).toString(10)', mpw(p, m27, "-").toString(10)); +// ack('mpw.mulm(mpw.sqrm(b, p), c, p).toString(10)', mpw(p, 27, "-").toString(10)); var gx = mpw('b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21'); var gy = mpw('bd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34'); // FIXME: floating point exceptions // var gy2 = mpw.sqrm(gy, p); // var gx31 = mpw.mulm(mpw.mulm(gx, gx, p), gx, p); -// var gx32 = mpw.mulm(gx, m3, p); +// var gx32 = mpw.mulm(gx, 3, p); // ack('mpw.addm(mpw.subm(gx31, gx32, p), b, p).toString(10)', gy2.toString(10)); var d = mpw('3f0c488e987c80be0fee521f8d90be6034ec69ae11ca72aa777481e8'); @@ -409,7 +440,7 @@ // FIXME: floating point exceptions // var qy2 = mpw.sqrm(qy, p); // var qx31 = mpw.mulm(mpw.mulm(qx, qx, p), qx, p); -// var qx32 = mpw.mulm(qx, m3, p); +// var qx32 = mpw.mulm(qx, 3, p); // ack('mpw.addm(mpw.subm(qx31, qx32, p), b, p).toString(10)', gy2.toString(10)); var k = mpw('a548803b79df17c40cde3ff0e36d025143bcbba146ec32908eb84937'); @@ -430,24 +461,23 @@ // ===== ECDSA P-256 example from // http://csrc.nist.gov/groups/ST/toolkit/documents/Examples/ECDSA_Prime.pdf -var m256 = mpw(256); -var p = mpw(m2, m256, "**"); -p = mpw(p, mpw(m2, m224, "**"), "-"); -p = mpw(p, mpw(m2, m192, "**"), "+"); -p = mpw(p, mpw(m2, m96, "**"), "+"); -p = mpw(p, m1, "-"); +var p = mpw(2, 256, "**"); +p = mpw(p, mpw(2, 224, "**"), "-"); +p = mpw(p, mpw(2, 192, "**"), "+"); +p = mpw(p, mpw(2, 96, "**"), "+"); +p = mpw(p, 1, "-"); ack('p.toString(10)', '115792089210356248762697446949407573530086143415290314195533631308867097853951'); var n = mpw('ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551'); ack('n.toString(10)', '115792089210356248762697446949407573529996955224135760342422259061068512044369'); var c = mpw('7efba1662985be9403cb055c75d4f7e0ce8d84a9c5114abcaf3177680104fa0d'); var b = mpw('5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b'); -ack('mpw.mulm(mpw.sqrm(b, p), c, p).toString(10)', mpw(p, m27, "-").toString(10)); +ack('mpw.mulm(mpw.sqrm(b, p), c, p).toString(10)', mpw(p, 27, "-").toString(10)); var gx = mpw('6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296'); var gy = mpw('4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5'); var gy2 = mpw.sqrm(gy, p); var gx31 = mpw.mulm(mpw.mulm(gx, gx, p), gx, p); -var gx32 = mpw.mulm(gx, m3, p); +var gx32 = mpw.mulm(gx, 3, p); ack('mpw.addm(mpw.subm(gx31, gx32, p), b, p).toString(10)', gy2.toString(10)); var d = mpw('c477f9f65c22cce20657faa5b2d1d8122336f851a508a1ed04e479c34985bf96'); @@ -455,7 +485,7 @@ var qy = mpw('3603f747959dbf7a4bb226e41928729063adc7ae43529e61b563bbc606cc5e09'); var qy2 = mpw.sqrm(qy, p); var qx31 = mpw.mulm(mpw.mulm(qx, qx, p), qx, p); -var qx32 = mpw.mulm(qx, m3, p); +var qx32 = mpw.mulm(qx, 3, p); // FIXME: wrong answer // ack('mpw.addm(mpw.subm(qx31, qx32, p), b, p).toString(10)', gy2.toString(10)); @@ -480,14 +510,11 @@ // ===== ECDSA P-384 example from // http://csrc.nist.gov/groups/ST/toolkit/documents/Examples/ECDSA_Prime.pdf -var m32 = mpw(32); -var m128 = mpw(128); -var m384 = mpw(384); -var p = mpw(m2, m384, "**"); -p = mpw(p, mpw(m2, m128, "**"), "-"); -p = mpw(p, mpw(m2, m96, "**"), "-"); -p = mpw(p, mpw(m2, m32, "**"), "+"); -p = mpw(p, m1, "-"); +var p = mpw(2, 384, "**"); +p = mpw(p, mpw(2, 128, "**"), "-"); +p = mpw(p, mpw(2, 96, "**"), "-"); +p = mpw(p, mpw(2, 32, "**"), "+"); +p = mpw(p, 1, "-"); ack('p.toString(10)', '39402006196394479212279040100143613805079739270465446667948293404245721771496870329047266088258938001861606973112319'); var n = mpw('ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973'); ack('n.toString(10)', '39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942643'); @@ -495,13 +522,13 @@ var c = mpw('79d1e655f868f02fff48dcdee14151ddb80643c1406d0ca10dfe6fc52009540a495e8042ea5f744f6e184667cc722483'); var b = mpw('b3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef'); // FIXME: floating point exception -// ack('mpw.mulm(mpw.sqrm(b, p), c, p).toString(10)', mpw(p, m27, "-").toString(10)); +// ack('mpw.mulm(mpw.sqrm(b, p), c, p).toString(10)', mpw(p, 27, "-").toString(10)); var gx = mpw('aa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7'); var gy = mpw('3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f'); // FIXME: floating point exception // var gy2 = mpw.sqrm(gy, p); // var gx31 = mpw.mulm(mpw.mulm(gx, gx, p), gx, p); -// var gx32 = mpw.mulm(gx, m3, p); +// var gx32 = mpw.mulm(gx, 3, p); // ack('mpw.addm(mpw.subm(gx31, gx32, p), b, p).toString(10)', gy2.toString(10)); var d = mpw('f92c02ed629e4b48c0584b1c6ce3a3e3b4faae4afc6acb0455e73dfc392e6a0ae393a8565e6b9714d1224b57d83f8a08'); @@ -510,7 +537,7 @@ // FIXME: floating point exceptions // var qy2 = mpw.sqrm(qy, p); // var qx31 = mpw.mulm(mpw.mulm(qx, qx, p), qx, p); -// var qx32 = mpw.mulm(qx, m3, p); +// var qx32 = mpw.mulm(qx, 3, p); // ack('mpw.addm(mpw.subm(qx31, qx32, p), b, p).toString(10)', gy2.toString(10)); var k = mpw('2e44ef1f8c0bea8394e3dda81ec6a7842a459b534701749e2ed95f054f0137680878e0749fc43f85edcae06cc2f43fef'); @@ -531,8 +558,7 @@ // ===== ECDSA P-521 example from // http://csrc.nist.gov/groups/ST/toolkit/documents/Examples/ECDSA_Prime.pdf -var m521 = mpw(521); -var p = mpw(mpw(m2, m521, "**"), m1, "-"); +var p = mpw(mpw(2, 521, "**"), 1, "-"); ack('p.toString(10)', '6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151'); var n = mpw('01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409'); ack('n.toString(10)', '6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005449'); @@ -540,12 +566,12 @@ var c = mpw('79d1e655f868f02fff48dcdee14151ddb80643c1406d0ca10dfe6fc52009540a495e8042ea5f744f6e184667cc722483'); var b = mpw('051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00'); // FIXME: wrong answer -// ack('mpw.mulm(mpw.sqrm(b, p), c, p).toString(10)', mpw(p, m27, "-").toString(10)); +// ack('mpw.mulm(mpw.sqrm(b, p), c, p).toString(10)', mpw(p, 27, "-").toString(10)); var gx = mpw('c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66'); var gy = mpw('11839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650'); var gy2 = mpw.sqrm(gy, p); var gx31 = mpw.mulm(mpw.mulm(gx, gx, p), gx, p); -var gx32 = mpw.mulm(gx, m3, p); +var gx32 = mpw.mulm(gx, 3, p); ack('mpw.addm(mpw.subm(gx31, gx32, p), b, p).toString(10)', gy2.toString(10)); var d = mpw('0100085f47b8e1b8b11b7eb33028c0b2888e304bfc98501955b45bba1478dc184eeedf09b86a5f7c21994406072787205e69a63709fe35aa93ba333514b24f961722'); @@ -553,7 +579,7 @@ var qy = mpw('0164350c321aecfc1cca1ba4364c9b15656150b4b78d6a48d7d28e7f31985ef17be8554376b72900712c4b83ad668327231526e313f5f092999a4632fd50d946bc2e'); var qy2 = mpw.sqrm(qy, p); var qx31 = mpw.mulm(mpw.mulm(qx, qx, p), qx, p); -var qx32 = mpw.mulm(qx, m3, p); +var qx32 = mpw.mulm(qx, 3, p); // FIXME: wrong answer // ack('mpw.addm(mpw.subm(qx31, qx32, p), b, p).toString(10)', gy2.toString(10)); @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository [email protected]
