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: 05-Aug-2009 04:31:40 Branch: HEAD Handle: 2009080502314000 Modified files: rpm/js/tscripts Mpw.js Log: - js: add RSA test vectors. Summary: Revision Changes Path 1.16 +281 -76 rpm/js/tscripts/Mpw.js ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/js/tscripts/Mpw.js ============================================================================ $ cvs diff -u -r1.15 -r1.16 Mpw.js --- rpm/js/tscripts/Mpw.js 4 Aug 2009 19:54:35 -0000 1.15 +++ rpm/js/tscripts/Mpw.js 5 Aug 2009 02:31:40 -0000 1.16 @@ -193,7 +193,7 @@ this.n = mpw(this.p, this.q, "*"); this.phi = mpw(this.pm1, this.qm1, "*"); -//ack('mpw(this.e, this.phi, "gcd").toString(10)', '1'); +// ack('mpw(this.e, this.phi, "gcd").toString(10)', '1'); this.d = mpw(this.e, this.phi, "invm"); // ack('mpw(this.e, this.d, "*", this.phi, "%").toString(10)', '1'); @@ -220,27 +220,26 @@ this.qm1 = mpw(this.q, 1, "-"); this.d = mpw(d); this.e = mpw(e); - this.dP = mpw(dP); - this.dQ = mpw(dQ); this.n = mpw(this.p, this.q, "*"); - this.lambda = mpw(this.pm1, this.qm1, "*"); + this.lambda = mpw(this.p, 1, "-", this.q, 1, "-", "*"); // ack('mpw(this.n, this.lambda, "gcd").toString(10)', '1'); // ack('mpw(this.e, this.lambda, "gcd").toString(10)', '1'); // this.d = mpw(this.e, this.lambda, "invm"); -// ack('mpw(this.e, this.lambda, "invm").toString(16)', this.d.toString(16)); +// ack('mpw(this.e, this.lambda, "invm").toString(16)', d.toString(16)); -// ack('mpw(this.e, this.d, "*", this.lambda, "%").toString(10)', '1'); -// ack('mpw(this.e, this.dP, this.pm1, "mulm").toString(10)', '1'); -// ack('mpw(this.e, this.dQ, this.qm1, "mulm").toString(10)', '1'); - -// this.dP = mpw(this.e, this.pm1, "invm"); -// ack('mpw(this.e, this.pm1, "invm").toString(16)', this.dP.toString(16)); -// ack('mpw(this.e, this.dP, "*", this.pm1, "%").toString(10)', '1'); -// this.dQ = mpw(this.e, this.qm1, "invm"); -// ack('mpw(this.e, this.qm1, "invm").toString(16)', this.dQ.toString(16)); -// ack('mpw(this.e, this.dQ, "*", this.qm1, "%").toString(10)', '1'); +// ack('mpw(this.e, this.d, this.lambda, "mulm").toString(10)', '1'); + + this.dP = mpw(this.e, this.p, 1, "-", "invm"); + ack('mpw(this.e, this.p, 1, "-", "invm").toString(16)', dP.toString(16)); + ack('mpw(this.e, this.dP, this.p, 1, "-", "mulm").toString(10)', '1'); + ack('mpw(this.e, this.dP, "*", this.p, 1, "-", "%").toString(10)', '1'); + + this.dQ = mpw(this.e, this.q, 1, "-", "invm"); + ack('mpw(this.e, this.q, 1, "-", "invm").toString(16)', dQ.toString(16)); + ack('mpw(this.e, this.dQ, this.q, 1, "-", "mulm").toString(10)', '1'); + ack('mpw(this.e, this.dQ, "*", this.q, 1, "-", "%").toString(10)', '1'); this.qInv = mpw(this.q, this.p, "invm"); ack('this.qInv.toString(16)', qInv.toString(16)); @@ -286,51 +285,200 @@ ack('rsa.hm.toString(10)', hm.toString(10)); ack('rsa.s.toString(10)', s.toString(10)); +// ====== RSA using PKCS #1 v1.5 examples from +// http://www.wigiwigi.com/index.php?title=RSA_in_32bits + +// ===== Encryption +rsa.n = mpw( + 'a9e167983f39d55ff2a093415ea6798985c8355d9a915bfb1d01da197026170f'+ + 'bda522d035856d7a986614415ccfb7b7083b09c991b81969376df9651e7bd9a9'+ + '3324a37f3bbbaf460186363432cb07035952fc858b3104b8cc18081448e64f1c'+ + 'fb5d60c4e05c1f53d37f53d86901f105f87a70d1be83c65f38cf1c2caa6aa7eb'); +rsa.e = 0x10001; +rsa.d = mpw( + '67cd484c9a0d8f98c21b65ff22839c6df0a6061dbceda7038894f21c6b0f8b35'+ + 'de0e827830cbe7ba6a56ad77c6eb517970790aa0f4fe45e0a9b2f419da8798d6'+ + '308474e4fc596cc1c677dca991d07c30a0a2c5085e217143fc0d073df0fa6d14'+ + '9e4e63f01758791c4b981c3d3db01bdffa253ba3c02c9805f61009d887db0319'); + +var PS = '257f48fd1f1793b7e5e02306f2d3228f5c95adf5f31566729f132aa12009'+ + 'e3fc9b2b475cd6944ef191e3f59545e671e474b555799fe3756099f044964038'+ + 'b16b2148e9a2f9c6f44bb5c52e3c6c8061cf694145fafdb24402ad1819eacedf'+ + '4a36c6e4d2cd8fc1d62e5a1268f496'; +var D = '4e636af98e40f3adcfccb698f4e80b9f'; + +// em = 00 || 02 || PS || 00 || D +var em = mpw('00' + '02' + PS + '00' + D); +var c = mpw( + '3d2ab25b1eb667a40f504cc4d778ec399a899c8790edecef062cd739492c9ce5'+ + '8b92b9ecf32af4aac7a61eaec346449891f49a722378e008eff0b0a8dbc6e621'+ + 'edc90cec64cf34c640f5b36c48ee9322808af8f4a0212b28715c76f3cb99ac7e'+ + '609787adce055839829e0142c44b676d218111ffe69f9d41424e177cba3a435b'); + +ack('mpw(em, rsa.e, rsa.n, "powm").toString(16)', c.toString(16)); +ack('mpw( c, rsa.d, rsa.n, "powm").toString(16)', em.toString(16)); + +// ===== Signing +rsa.n = mpw( + 'E08973398DD8F5F5E88776397F4EB005BB5383DE0FB7ABDC7DC775290D052E6D'+ + '12DFA68626D4D26FAA5829FC97ECFA82510F3080BEB1509E4644F12CBBD832CF'+ + 'C6686F07D9B060ACBEEE34096A13F5F7050593DF5EBA3556D961FF197FC981E6'+ + 'F86CEA874070EFAC6D2C749F2DFA553AB9997702A648528C4EF357385774575F'); +rsa.e = 0x10001; +rsa.d = mpw( + '00A403C327477634346CA686B57949014B2E8AD2C862B2C7D748096A8B91F736'+ + 'F275D6E8CD15906027314735644D95CD6763CEB49F56AC2F376E1CEE0EBF282D'+ + 'F439906F34D86E085BD5656AD841F313D72D395EFE33CBFF29E4030B3D05A28F'+ + 'B7F18EA27637B07957D32F2BDE8706227D04665EC91BAF8B1AC3EC9144AB7F21'); + +var M = 'abc'; +var PS = 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'+ + 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'+ + 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'; +var asn1 = '3021300906052B0E03021A05000414'; +var hm = 'A9993E364706816ABA3E25717850C26C9CD0D89D'; +var T = asn1 + hm; + +// eb = 00 || 01 || PS || 00 || T +var eb = mpw('00' + '01' + PS + '00' + T); +var c = mpw( + '60AD5A78FB4A4030EC542C8974CD15F55384E836554CEDD9A322D5F4135C6267'+ + 'A9D20970C54E6651070B0144D43844C899320DD8FA7819F7EBC6A7715287332E'+ + 'C8675C136183B3F8A1F81EF969418267130A756FDBB2C71D9A667446E34E0EAD'+ + '9CF31BFB66F816F319D0B7E430A5F2891553986E003720261C7E9022C0D9F11F'); + +ack('mpw(eb, rsa.d, rsa.n, "powm").toString(16)', c.toString(16)); +ack('mpw( c, rsa.e, rsa.n, "powm").toString(16)', eb.toString(16)); + delete rsa; -// ===== RSAES-OAEP example from +// ===== RSAES-OAEP examples from // ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1-vec.zip +// var n = mpw( +// 'a8b3b284af8eb50b387034a860f146c4919f318763cd6c5598c8ae4811a1e0ab'+ +// 'c4c7e0b082d693a5e7fced675cf4668512772c0cbc64a742c6c630f533c8cc72'+ +// 'f62ae833c40bf25842e984bb78bdbf97c0107d55bdb662f5c4e0fab9845cb514'+ +// '8ef7392dd3aaff93ae1e6b667bb3d4247616d4f5ba10d4cfd226de88d39f16fb'); +// var e = 0x10001; +// var d = mpw( +// '53339cfdb79fc8466a655c7316aca85c55fd8f6dd898fdaf119517ef4f52e8fd'+ +// '8e258df93fee180fa0e4ab29693cd83b152a553d4ac4d1812b8b9fa5af0e7f55'+ +// 'fe7304df41570926f3311f15c4d65a732c483116ee3d3d2d0af3549ad9bf7cbf'+ +// 'b78ad884f84d5beb04724dc7369b31def37d0cf539e9cfcdd3de653729ead5d1'); +// var p = mpw( +// 'd32737e7267ffe1341b2d5c0d150a81b586fb3132bed2f8d5262864a9cb9f30a'+ +// 'f38be448598d413a172efb802c21acf1c11c520c2f26a471dcad212eac7ca39d'); +// var q = mpw( +// 'cc8853d1d54da630fac004f471f281c7b8982d8224a490edbeb33d3e3d5cc93c'+ +// '4765703d1dd791642f1f116a0dd852be2419b2af72bfe9a030e860b0288b5d77'); +// var dP = mpw( +// '0e12bf1718e9cef5599ba1c3882fe8046a90874eefce8f2ccc20e4f2741fb0a3'+ +// '3a3848aec9c9305fbecbd2d76819967d4671acc6431e4037968db37878e695c1'); +// var dQ = mpw( +// '95297b0f95a2fa67d00707d609dfd4fc05c89dafc2ef6d6ea55bec771ea33373'+ +// '4d9251e79082ecda866efef13c459e1a631386b7e354c899f5f112ca85d71583'); +// var qInv = mpw( +// '4f456c502493bdc0ed2ab756a3a6ed4d67352a697d4216e93212b127a63d5411'+ +// 'ce6fa98d5dbefd73263e3728142743818166ed7dd63687dd2a8ca1d2f4fbd8e1'); +// var m = mpw('6628194e12073db03ba94cda9ef9532397d50dba79b987004afefe34'); +// var h = mpw('8176326046e571e18464d875262420772782ac3a'); +// var seed = mpw('18b776ea21069d69776a33e96bad48e1dda0a5ef'); +// var s = mpw( +// '354fe67b4a126d5d35fe36c777791a3f7ba13def484e2d3908aff722fad468fb'+ +// '21696de95d0be911c2d3174f8afcc201035f7b6d8e69402de5451618c21a535f'+ +// 'a9d7bfc5b8dd9fc243f8cf927db31322d6e881eaa91a996170e657a05a266426'+ +// 'd98c88003f8477c1227094a0d9fa1e8c4024309ce1ecccb5210035d47ac72e8a'); + +//================= var n = mpw( - 'a8b3b284af8eb50b387034a860f146c4919f318763cd6c5598c8ae4811a1e0ab'+ - 'c4c7e0b082d693a5e7fced675cf4668512772c0cbc64a742c6c630f533c8cc72'+ - 'f62ae833c40bf25842e984bb78bdbf97c0107d55bdb662f5c4e0fab9845cb514'+ - '8ef7392dd3aaff93ae1e6b667bb3d4247616d4f5ba10d4cfd226de88d39f16fb'); -var e = 0x10001; + 'bbf82f090682ce9c2338ac2b9da871f7368d07eed41043a440d6b6f07454f51f'+ + 'b8dfbaaf035c02ab61ea48ceeb6fcd4876ed520d60e1ec4619719d8a5b8b807f'+ + 'afb8e0a3dfc737723ee6b4b7d93a2584ee6a649d060953748834b2454598394e'+ + 'e0aab12d7b61a51f527a9a41f6c1687fe2537298ca2a8f5946f8e5fd091dbdcb'); +var e = 0x11; var d = mpw( - '53339cfdb79fc8466a655c7316aca85c55fd8f6dd898fdaf119517ef4f52e8fd'+ - '8e258df93fee180fa0e4ab29693cd83b152a553d4ac4d1812b8b9fa5af0e7f55'+ - 'fe7304df41570926f3311f15c4d65a732c483116ee3d3d2d0af3549ad9bf7cbf'+ - 'b78ad884f84d5beb04724dc7369b31def37d0cf539e9cfcdd3de653729ead5d1'); + 'a5dafc5341faf289c4b988db30c1cdf83f31251e0668b42784813801579641b2'+ + '9410b3c7998d6bc465745e5c392669d6870da2c082a939e37fdcb82ec93edac9'+ + '7ff3ad5950accfbc111c76f1a9529444e56aaf68c56c092cd38dc3bef5d20a93'+ + '9926ed4f74a13eddfbe1a1cecc4894af9428c2b7b8883fe4463a4bc85b1cb3c1'); var p = mpw( - 'd32737e7267ffe1341b2d5c0d150a81b586fb3132bed2f8d5262864a9cb9f30a'+ - 'f38be448598d413a172efb802c21acf1c11c520c2f26a471dcad212eac7ca39d'); + 'eecfae81b1b9b3c908810b10a1b5600199eb9f44aef4fda493b81a9e3d84f632'+ + '124ef0236e5d1e3b7e28fae7aa040a2d5b252176459d1f397541ba2a58fb6599'); var q = mpw( - 'cc8853d1d54da630fac004f471f281c7b8982d8224a490edbeb33d3e3d5cc93c'+ - '4765703d1dd791642f1f116a0dd852be2419b2af72bfe9a030e860b0288b5d77'); + 'c97fb1f027f453f6341233eaaad1d9353f6c42d08866b1d05a0f2035028b9d86'+ + '9840b41666b42e92ea0da3b43204b5cfce3352524d0416a5a441e700af461503'); var dP = mpw( - '0e12bf1718e9cef5599ba1c3882fe8046a90874eefce8f2ccc20e4f2741fb0a3'+ - '3a3848aec9c9305fbecbd2d76819967d4671acc6431e4037968db37878e695c1'); + '54494ca63eba0337e4e24023fcd69a5aeb07dddc0183a4d0ac9b54b051f2b13e'+ + 'd9490975eab77414ff59c1f7692e9a2e202b38fc910a474174adc93c1f67c981'); var dQ = mpw( - '95297b0f95a2fa67d00707d609dfd4fc05c89dafc2ef6d6ea55bec771ea33373'+ - '4d9251e79082ecda866efef13c459e1a631386b7e354c899f5f112ca85d71583'); + '471e0290ff0af0750351b7f878864ca961adbd3a8a7e991c5c0556a94c3146a7'+ + 'f9803f8f6f8ae342e931fd8ae47a220d1b99a495849807fe39f9245a9836da3d'); var qInv = mpw( - '4f456c502493bdc0ed2ab756a3a6ed4d67352a697d4216e93212b127a63d5411'+ - 'ce6fa98d5dbefd73263e3728142743818166ed7dd63687dd2a8ca1d2f4fbd8e1'); + 'b06c4fdabb6301198d265bdbae9423b380f271f73453885093077fcd39e2119f'+ + 'c98632154f5883b167a967bf402b4e9e2e0f9656e698ea3666edfb25798039f7'); +var msg = mpw('d436e99569fd32a7c8a05bbc90d32c49'); +var lhash = mpw('da39a3ee5e6b4b0d3255bfef95601890afd80709'); +var db = mpw( + 'da39a3ee5e6b4b0d3255bfef95601890afd80709000000000000000000000000'+ + '0000000000000000000000000000000000000000000000000000000000000000'+ + '000000000000000000000000000000000000000000000000000001d436e99569'+ + 'fd32a7c8a05bbc90d32c49'); +var seed = mpw('aafd12f659cae63489b479e5076ddec2f06cb58f'); + +var em = mpw( + '00eb7a19ace9e3006350e329504b45e2ca82310b26dcd87d5c68f1eea8f55267'+ + 'c31b2e8bb4251f84d7e0b2c04626f5aff93edcfb25c9c2b3ff8ae10e839a2ddb'+ + '4cdcfe4ff47728b4a1b7c1362baad29ab48d2869d5024121435811591be392f9'+ + '82fb3e87d095aeb40448db972f3ac14f7bc275195281ce32d2f1b76d4d353e2d'); +var c = mpw( + '1253e04dc0a5397bb44a7ab87e9bf2a039a33d1e996fc82a94ccd30074c95df7'+ + '63722017069e5268da5d1c0b4f872cf653c11df82314a67968dfeae28def04bb'+ + '6d84b1c31d654a1970e5783bd6eb96a024c2ca2f4a90fe9f2ef5c9c140e5bb48'+ + 'da9536ad8700c84fc9130adea74e558d51a74ddf85d8b50de96838d6063e0955'); +var cmodp = mpw( + 'de63d4723566faa759bfe408821dd52572ec92854ddf87a2b664d44daa37ca34'+ + '6a05203d82ff2de8e36cec1d34f98eb605e2a7d26de7af369ce4ecae14e35633'); +var cmodq = mpw( + 'a2d924ded9c36d623ed9a65b5d862cfbec8b199c64279c5414e641196ef1c93c'+ + '507a9b5213881aad05b4ccfa028ac1ec61420974bf1625836b0b7d05fbb75336'); +var m1 = mpw( + '896ca26cd7e4871c7fc968a8edea11e271824f0e0365521794f1e9e943b4a44b'+ + '57c9e395a1467478f526496b4bb91f1cbaea900ffc602cf0c6636eba84fc9ff7'); +var m2 = mpw( + '4ebb227585f0c1312dca19e0b541db1499fbf14e270e698e239a8c27a96cda9a'+ + '740974de937b5c9c93ead9462c6575021a23d46499dc9f6b35897559608f19be'); +var h = mpw( + '012b2b24150e76e159bd8ddb4276e07bfac188e08d6047cf0efb8ae2aebdf251'+ + 'c40ebc23dcfd4a34424394ada92cfcbe1b2effbb60fdfb03359a95368d980925'); +var m = mpw( + '00eb7a19ace9e3006350e329504b45e2ca82310b26dcd87d5c68f1eea8f55267'+ + 'c31b2e8bb4251f84d7e0b2c04626f5aff93edcfb25c9c2b3ff8ae10e839a2ddb'+ + '4cdcfe4ff47728b4a1b7c1362baad29ab48d2869d5024121435811591be392f9'+ + '82fb3e87d095aeb40448db972f3ac14f7bc275195281ce32d2f1b76d4d353e2d'); -var hm = 31229978; -var s = mpw( - '354fe67b4a126d5d35fe36c777791a3f7ba13def484e2d3908aff722fad468fb'+ - '21696de95d0be911c2d3174f8afcc201035f7b6d8e69402de5451618c21a535f'+ - 'a9d7bfc5b8dd9fc243f8cf927db31322d6e881eaa91a996170e657a05a266426'+ - 'd98c88003f8477c1227094a0d9fa1e8c4024309ce1ecccb5210035d47ac72e8a'); - -// print("===== RSAES-OAEP"); +print("===== RSAES-OAEP"); var rsa = new RSA(p, q, e); ack('rsa.n.toString(16)', n.toString(16)); ack('rsa.e.toString(10)', e.toString(10)); ack('rsa.d.toString(16)', d.toString(16)); ack('rsa.p.toString(16)', p.toString(16)); ack('rsa.q.toString(16)', q.toString(16)); + +ack('mpw(em, rsa.e, rsa.n, "powm").toString(16)', c.toString(16)); +ack('mpw( c, rsa.d, rsa.n, "powm").toString(16)', em.toString(16)); + +ack('mpw(c, rsa.p, "%").toString(16)', cmodp.toString(16)); +ack('mpw(c, rsa.q, "%").toString(16)', cmodq.toString(16)); + +// ack('mpw(c, rsa.dP, rsa.p, "powm").toString(16)', m1.toString(16)); +// ack('mpw(cmodp, rsa.dP, rsa.p, "powm").toString(16)', m1.toString(16)); +// ack('mpw(c, rsa.dQ, rsa.q, "powm").toString(16)', m2.toString(16)); +// ack('mpw(cmodq, rsa.dQ, rsa.q, "powm").toString(16)', m2.toString(16)); + +// ack('mpw(m1, m2, "-", rsa.qInv, "*", rsa.p, "%").toString(16)', h.toString(16)); + +ack('mpw(m2, rsa.q, h, "*", "+").toString(16)', em.toString(16)); + delete rsa; print("===== RSAES-OAEP 2.1"); @@ -347,6 +495,8 @@ ack('rsa.qInv.toString(16)', qInv.toString(16)); // ack('rsa.verify(hm, rsa.sign(hm))', true); +ack('mpw(em, rsa.e, rsa.n, "powm").toString(16)', c.toString(16)); +ack('mpw( c, rsa.d, rsa.n, "powm").toString(16)', em.toString(16)); // ack('rsa.phi.toString(10)', phi.toString(10)); // ack('rsa.hm.toString(10)', hm.toString(10)); @@ -356,51 +506,105 @@ // ===== RSASSA-PSS example from // ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1-vec.zip +// var n = mpw( +// 'a56e4a0e701017589a5187dc7ea841d156f2ec0e36ad52a44dfeb1e61f7ad991'+ +// 'd8c51056ffedb162b4c0f283a12a88a394dff526ab7291cbb307ceabfce0b1df'+ +// 'd5cd9508096d5b2b8b6df5d671ef6377c0921cb23c270a70e2598e6ff89d19f1'+ +// '05acc2d3f0cb35f29280e1386b6f64c4ef22e1e1f20d0ce8cffb2249bd9a2137'); +// var e = 0x10001; +// var d = mpw( +// '33a5042a90b27d4f5451ca9bbbd0b44771a101af884340aef9885f2a4bbe92e8'+ +// '94a724ac3c568c8f97853ad07c0266c8c6a3ca0929f1e8f11231884429fc4d9a'+ +// 'e55fee896a10ce707c3ed7e734e44727a39574501a532683109c2abacaba283c'+ +// '31b4bd2f53c3ee37e352cee34f9e503bd80c0622ad79c6dcee883547c6a3b325'); +// var p = mpw( +// 'e7e8942720a877517273a356053ea2a1bc0c94aa72d55c6e86296b2dfc967948'+ +// 'c0a72cbccca7eacb35706e09a1df55a1535bd9b3cc34160b3b6dcd3eda8e6443'); +// var q = mpw( +// 'b69dca1cf7d4d7ec81e75b90fcca874abcde123fd2700180aa90479b6e48de8d'+ +// '67ed24f9f19d85ba275874f542cd20dc723e6963364a1f9425452b269a6799fd'); +// var dP = mpw( +// '28fa13938655be1f8a159cbaca5a72ea190c30089e19cd274a556f36c4f6e19f'+ +// '554b34c077790427bbdd8dd3ede2448328f385d81b30e8e43b2fffa027861979'); +// var dQ = mpw( +// '1a8b38f398fa712049898d7fb79ee0a77668791299cdfa09efc0e507acb21ed7'+ +// '4301ef5bfd48be455eaeb6e1678255827580a8e4e8e14151d1510a82a3f2e729'); +// var qInv = mpw( +// '27156aba4126d24a81f3a528cbfb27f56886f840a9f6e86e17a44b94fe931958'+ +// '4b8e22fdde1e5a2e3bd8aa5ba8d8584194eb2190acf832b847f13a3d24a79f4d'); +// var hm = 31229978; +// var s = mpw( +// '9074308fb598e9701b2294388e52f971faac2b60a5145af185df5287b5ed2887'+ +// 'e57ce7fd44dc8634e407c8e0e4360bc226f3ec227f9d9e54638e8d31f5051215'+ +// 'df6ebb9c2f9579aa77598a38f914b5b9c1bd83c4e2f9f382a0d0aa3542ffee65'+ +// '984a601bc69eb28deb27dca12c82c2d4c3f66cd500f1ff2b994d8a4e30cbb33c'); + +//================= var n = mpw( - 'a56e4a0e701017589a5187dc7ea841d156f2ec0e36ad52a44dfeb1e61f7ad991'+ - 'd8c51056ffedb162b4c0f283a12a88a394dff526ab7291cbb307ceabfce0b1df'+ - 'd5cd9508096d5b2b8b6df5d671ef6377c0921cb23c270a70e2598e6ff89d19f1'+ - '05acc2d3f0cb35f29280e1386b6f64c4ef22e1e1f20d0ce8cffb2249bd9a2137'); + 'a2ba40ee07e3b2bd2f02ce227f36a195024486e49c19cb41bbbdfbba98b22b0e'+ + '577c2eeaffa20d883a76e65e394c69d4b3c05a1e8fadda27edb2a42bc000fe88'+ + '8b9b32c22d15add0cd76b3e7936e19955b220dd17d4ea904b1ec102b2e4de775'+ + '1222aa99151024c7cb41cc5ea21d00eeb41f7c800834d2c6e06bce3bce7ea9a5'); var e = 0x10001; var d = mpw( - '33a5042a90b27d4f5451ca9bbbd0b44771a101af884340aef9885f2a4bbe92e8'+ - '94a724ac3c568c8f97853ad07c0266c8c6a3ca0929f1e8f11231884429fc4d9a'+ - 'e55fee896a10ce707c3ed7e734e44727a39574501a532683109c2abacaba283c'+ - '31b4bd2f53c3ee37e352cee34f9e503bd80c0622ad79c6dcee883547c6a3b325'); + '50e2c3e38d886110288dfc68a9533e7e12e27d2aa56d2cdb3fb6efa990bcff29'+ + 'e1d2987fb711962860e7391b1ce01ebadb9e812d2fbdfaf25df4ae26110a6d7a'+ + '26f0b810f54875e17dd5c9fb6d641761245b81e79f8c88f0e55a6dcd5f133abd'+ + '35f8f4ec80adf1bf86277a582894cb6ebcd2162f1c7534f1f4947b129151b71'); var p = mpw( - 'e7e8942720a877517273a356053ea2a1bc0c94aa72d55c6e86296b2dfc967948'+ - 'c0a72cbccca7eacb35706e09a1df55a1535bd9b3cc34160b3b6dcd3eda8e6443'); + 'd17f655bf27c8b16d35462c905cc04a26f37e2a67fa9c0ce0dced472394a0df7'+ + '43fe7f929e378efdb368eddff453cf007af6d948e0ade757371f8a711e278f6b'); var q = mpw( - 'b69dca1cf7d4d7ec81e75b90fcca874abcde123fd2700180aa90479b6e48de8d'+ - '67ed24f9f19d85ba275874f542cd20dc723e6963364a1f9425452b269a6799fd'); + 'c6d92b6fee7414d1358ce1546fb62987530b90bd15e0f14963a5e2635adb6934'+ + '7ec0c01b2ab1763fd8ac1a592fb22757463a982425bb97a3a437c5bf86d03f2f'); var dP = mpw( - '28fa13938655be1f8a159cbaca5a72ea190c30089e19cd274a556f36c4f6e19f'+ - '554b34c077790427bbdd8dd3ede2448328f385d81b30e8e43b2fffa027861979'); - + '9d0dbf83e5ce9e4b1754dcd5cd05bcb7b55f1508330ea49f14d4e889550f8256'+ + 'cb5f806dff34b17ada44208853577d08e4262890acf752461cea05547601bc4f'); var dQ = mpw( - '1a8b38f398fa712049898d7fb79ee0a77668791299cdfa09efc0e507acb21ed7'+ - '4301ef5bfd48be455eaeb6e1678255827580a8e4e8e14151d1510a82a3f2e729'); - + '1291a524c6b7c059e90e46dc83b2171eb3fa98818fd179b6c8bf6cecaa476303'+ + 'abf283fe05769cfc495788fe5b1ddfde9e884a3cd5e936b7e955ebf97eb563b1'); var qInv = mpw( - '27156aba4126d24a81f3a528cbfb27f56886f840a9f6e86e17a44b94fe931958'+ - '4b8e22fdde1e5a2e3bd8aa5ba8d8584194eb2190acf832b847f13a3d24a79f4d'); - - -var hm = 31229978; -var s = mpw( - '9074308fb598e9701b2294388e52f971faac2b60a5145af185df5287b5ed2887'+ - 'e57ce7fd44dc8634e407c8e0e4360bc226f3ec227f9d9e54638e8d31f5051215'+ - 'df6ebb9c2f9579aa77598a38f914b5b9c1bd83c4e2f9f382a0d0aa3542ffee65'+ - '984a601bc69eb28deb27dca12c82c2d4c3f66cd500f1ff2b994d8a4e30cbb33c'); + 'a63f1da38b950c9ad1c67ce0d677ec2914cd7d40062df42a67eb198a176f9742'+ + 'aac7c5fea14f2297662b84812c4defc49a8025ab4382286be4c03788dd01d69f'); +var msg = mpw( + '859eef2fd78aca00308bdc471193bf55bf9d78db8f8a672b484634f3c9c26e64'+ + '78ae10260fe0dd8c082e53a5293af2173cd50c6d5d354febf78b26021c25c027'+ + '12e78cd4694c9f469777e451e7f8e9e04cd3739c6bbfedae487fb55644e9ca74'+ + 'ff77a53cb729802f6ed4a5ffa8ba159890fc'); +var mhash = mpw('37b66ae0445843353d47ecb0b4fd14c110e62d6a'); +var salt = mpw('e3b5d5d002c1bce50c2b65ef88a188d83bce7e61'); +var em = mpw( + '66e4672e836ad121ba244bed6576b867d9a447c28a6e66a5b87dee7fbc7e65af'+ + '5057f86fae8984d9ba7f969ad6fe02a4d75f7445fefdd85b6d3a477c28d24ba1'+ + 'e3756f792dd1dce8ca94440ecb5279ecd3183a311fc896da1cb39311af37ea4a'+ + '75e24bdbfd5c1da0de7cecdf1a896f9d8bc816d97cd7a2c43bad546fbe8cfebc'); +var c = mpw( + '8daa627d3de7595d63056c7ec659e54406f10610128baae821c8b2a0f3936d54'+ + 'dc3bdce46689f6b7951bb18e840542769718d5715d210d85efbb596192032c42'+ + 'be4c29972c856275eb6d5a45f05f51876fc6743deddd28caec9bb30ea99e02c3'+ + '488269604fe497f74ccd7c7fca1671897123cbd30def5d54a2b5536ad90a747e'); +var cmodp = mpw( + '3e4f9f1d6075fe401607694fee634b4115d42d06d6d627987204610da92a8e1a'+ + '2056fb78fe627fea87e6622eb6fa0461e398153ed978e56add8df1f5a6c31c19'); +var cmodq = mpw( + '25710bf7a5d3c479bc36e783b2be445281d0c7ac5c3a9fcacd94f45e7a183c55'+ + '2d931040c6f7b3bcd1a0e43ae22322dfe71e1b3af7cab021f6915178f9744199'); print("===== RSASSA-PSS"); var rsa = new RSA(p, q, e); ack('rsa.n.toString(16)', n.toString(16)); ack('rsa.e.toString(10)', e.toString(10)); -// FIXME wrong answer -// ack('rsa.d.toString(16)', d.toString(16)); +ack('rsa.d.toString(16)', d.toString(16)); ack('rsa.p.toString(16)', p.toString(16)); ack('rsa.q.toString(16)', q.toString(16)); + +// ack('rsa.verify(hm, rsa.sign(hm))', true); +ack('mpw(em, rsa.d, rsa.n, "powm").toString(16)', c.toString(16)); +ack('mpw( c, rsa.e, rsa.n, "powm").toString(16)', em.toString(16)); + +ack('mpw(c, rsa.p, "%").toString(16)', cmodp.toString(16)); +ack('mpw(c, rsa.q, "%").toString(16)', cmodq.toString(16)); + delete rsa; print("===== RSASSA-PSS 2.1"); @@ -416,10 +620,11 @@ ack('rsa.qInv.toString(16)', qInv.toString(16)); // ack('rsa.verify(hm, rsa.sign(hm))', true); +ack('mpw(em, rsa.d, rsa.n, "powm").toString(16)', c.toString(16)); +ack('mpw( c, rsa.e, rsa.n, "powm").toString(16)', em.toString(16)); -// ack('rsa.phi.toString(16)', phi.toString(16)); -// ack('rsa.hm.toString(16)', hm.toString(16)); -// ack('rsa.s.toString(16)', s.toString(16)); +ack('mpw(c, rsa.p, "%").toString(16)', cmodp.toString(16)); +ack('mpw(c, rsa.q, "%").toString(16)', cmodq.toString(16)); delete rsa; @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository [email protected]
