PageRenderTime 45ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 0ms

/js/lib/Socket.IO-node/support/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/RSAKeyTest.as

http://github.com/onedayitwillmake/RealtimeMultiplayerNodeJs
ActionScript | 92 lines | 73 code | 6 blank | 13 comment | 0 complexity | 488777744fa411d9dc90cb833290bfbd MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1, MPL-2.0-no-copyleft-exception, BSD-3-Clause
  1. /**
  2. * RSAKeyTest
  3. *
  4. * A test class for RSAKey
  5. * Copyright (c) 2007 Henri Torgemane
  6. *
  7. * See LICENSE.txt for full license information.
  8. */
  9. package com.hurlant.crypto.tests
  10. {
  11. import com.hurlant.crypto.rsa.RSAKey;
  12. import flash.utils.ByteArray;
  13. import com.hurlant.util.Hex;
  14. import com.hurlant.util.der.PEM;
  15. public class RSAKeyTest extends TestCase
  16. {
  17. public function RSAKeyTest(h:ITestHarness)
  18. {
  19. super(h, "RSA Testing");
  20. runTest(testSmoke,"RSA smoke test");
  21. runTest(testGenerate, "RSA Key Generation test");
  22. runTest(testPEM, "RSA Private Key PEM parsing");
  23. runTest(testPEM2, "RSA Public Key PEM parsing");
  24. h.endTestCase();
  25. }
  26. public function testSmoke():void {
  27. var N:String ="C4E3F7212602E1E396C0B6623CF11D26204ACE3E7D26685E037AD2507DCE82FC" +
  28. "28F2D5F8A67FC3AFAB89A6D818D1F4C28CFA548418BD9F8E7426789A67E73E41";
  29. var E:String = "10001";
  30. var D:String = "7cd1745aec69096129b1f42da52ac9eae0afebbe0bc2ec89253598dcf454960e" +
  31. "3e5e4ec9f8c87202b986601dd167253ee3fb3fa047e14f1dfd5ccd37e931b29d";
  32. var P:String = "f0e4dd1eac5622bd3932860fc749bbc48662edabdf3d2826059acc0251ac0d3b";
  33. var Q:String = "d13cb38fbcd06ee9bca330b4000b3dae5dae12b27e5173e4d888c325cda61ab3";
  34. var DMP1:String = "b3d5571197fc31b0eb6b4153b425e24c033b054d22b9c8282254fe69d8c8c593";
  35. var DMQ1:String = "968ffe89e50d7b72585a79b65cfdb9c1da0963cceb56c3759e57334de5a0ac3f";
  36. var IQMP:String = "d9bc4f420e93adad9f007d0e5744c2fe051c9ed9d3c9b65f439a18e13d6e3908";
  37. // create a key.
  38. var rsa:RSAKey = RSAKey.parsePrivateKey(N,E,D, P,Q,DMP1,DMQ1,IQMP);
  39. var txt:String = "hello";
  40. var src:ByteArray = Hex.toArray(Hex.fromString(txt));
  41. var dst:ByteArray = new ByteArray;
  42. var dst2:ByteArray = new ByteArray;
  43. rsa.encrypt(src, dst, src.length);
  44. rsa.decrypt(dst, dst2, dst.length);
  45. var txt2:String = Hex.toString(Hex.fromArray(dst2));
  46. assert("rsa encrypt+decrypt", txt==txt2);
  47. }
  48. public function testGenerate():void {
  49. var rsa:RSAKey = RSAKey.generate(256, "10001");
  50. // same lame smoke test here.
  51. var txt:String = "hello";
  52. var src:ByteArray = Hex.toArray(Hex.fromString(txt));
  53. var dst:ByteArray = new ByteArray;
  54. var dst2:ByteArray = new ByteArray;
  55. rsa.encrypt(src, dst, src.length);
  56. rsa.decrypt(dst, dst2, dst.length);
  57. var txt2:String = Hex.toString(Hex.fromArray(dst2));
  58. assert("rsa encrypt+decrypt", txt==txt2);
  59. }
  60. public function testPEM():void {
  61. var pem:String = "-----BEGIN RSA PRIVATE KEY-----\n" +
  62. "MGQCAQACEQDJG3bkuB9Ie7jOldQTVdzPAgMBAAECEQCOGqcPhP8t8mX8cb4cQEaR\n" +
  63. "AgkA5WTYuAGmH0cCCQDgbrto0i7qOQIINYr5btGrtccCCQCYy4qX4JDEMQIJAJll\n" +
  64. "OnLVtCWk\n" +
  65. "-----END RSA PRIVATE KEY-----";
  66. var rsa:RSAKey = PEM.readRSAPrivateKey(pem);
  67. //trace(rsa.dump());
  68. // obligatory use
  69. var txt:String = "hello";
  70. var src:ByteArray = Hex.toArray(Hex.fromString(txt));
  71. var dst:ByteArray = new ByteArray;
  72. var dst2:ByteArray = new ByteArray;
  73. rsa.encrypt(src, dst, src.length);
  74. rsa.decrypt(dst, dst2, dst.length);
  75. var txt2:String = Hex.toString(Hex.fromArray(dst2));
  76. assert("rsa encrypt+decrypt", txt==txt2);
  77. }
  78. public function testPEM2():void {
  79. var pem:String = "-----BEGIN PUBLIC KEY-----\n" +
  80. "MCwwDQYJKoZIhvcNAQEBBQADGwAwGAIRAMkbduS4H0h7uM6V1BNV3M8CAwEAAQ==\n" +
  81. "-----END PUBLIC KEY-----";
  82. var rsa:RSAKey = PEM.readRSAPublicKey(pem);
  83. //trace(rsa.dump());
  84. }
  85. }
  86. }