rocket-js 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. data/Rakefile +5 -52
  2. data/spec/ruby/spec_helper.rb +2 -1
  3. metadata +7 -129
  4. data/src/vendor/web-socket-js/FABridge.js +0 -604
  5. data/src/vendor/web-socket-js/README.txt +0 -109
  6. data/src/vendor/web-socket-js/WebSocketMain.swf +0 -0
  7. data/src/vendor/web-socket-js/WebSocketMainInsecure.zip +0 -0
  8. data/src/vendor/web-socket-js/flash-src/WebSocket.as +0 -473
  9. data/src/vendor/web-socket-js/flash-src/WebSocketMain.as +0 -88
  10. data/src/vendor/web-socket-js/flash-src/WebSocketMainInsecure.as +0 -19
  11. data/src/vendor/web-socket-js/flash-src/WebSocketStateEvent.as +0 -32
  12. data/src/vendor/web-socket-js/flash-src/bridge/FABridge.as +0 -943
  13. data/src/vendor/web-socket-js/flash-src/build.sh +0 -10
  14. data/src/vendor/web-socket-js/flash-src/com/adobe/net/proxies/RFC2817Socket.as +0 -204
  15. data/src/vendor/web-socket-js/flash-src/com/gsolo/encryption/MD5.as +0 -375
  16. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/Crypto.as +0 -287
  17. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/cert/MozillaRootCertificates.as +0 -3235
  18. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/cert/X509Certificate.as +0 -218
  19. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/cert/X509CertificateCollection.as +0 -57
  20. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/HMAC.as +0 -82
  21. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/IHMAC.as +0 -27
  22. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/IHash.as +0 -21
  23. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/MAC.as +0 -137
  24. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/MD2.as +0 -124
  25. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/MD5.as +0 -204
  26. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/SHA1.as +0 -106
  27. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/SHA224.as +0 -28
  28. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/SHA256.as +0 -115
  29. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/SHABase.as +0 -71
  30. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/prng/ARC4.as +0 -90
  31. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/prng/IPRNG.as +0 -20
  32. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/prng/Random.as +0 -119
  33. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/prng/TLSPRF.as +0 -142
  34. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/rsa/RSAKey.as +0 -339
  35. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/AESKey.as +0 -2797
  36. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/BlowFishKey.as +0 -375
  37. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/CBCMode.as +0 -55
  38. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/CFB8Mode.as +0 -61
  39. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/CFBMode.as +0 -64
  40. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/CTRMode.as +0 -58
  41. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/DESKey.as +0 -365
  42. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/ECBMode.as +0 -86
  43. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/ICipher.as +0 -21
  44. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/IMode.as +0 -15
  45. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/IPad.as +0 -32
  46. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/IStreamCipher.as +0 -21
  47. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/ISymmetricKey.as +0 -35
  48. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/IVMode.as +0 -110
  49. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/NullPad.as +0 -34
  50. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/OFBMode.as +0 -52
  51. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/PKCS5.as +0 -44
  52. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/SSLPad.as +0 -44
  53. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/SimpleIVMode.as +0 -60
  54. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/TLSPad.as +0 -42
  55. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/TripleDESKey.as +0 -88
  56. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/XTeaKey.as +0 -94
  57. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/aeskey.pl +0 -29
  58. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/dump.txt +0 -2304
  59. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/AESKeyTest.as +0 -1220
  60. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/ARC4Test.as +0 -58
  61. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/BigIntegerTest.as +0 -39
  62. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/BlowFishKeyTest.as +0 -148
  63. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/CBCModeTest.as +0 -160
  64. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/CFB8ModeTest.as +0 -71
  65. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/CFBModeTest.as +0 -98
  66. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/CTRModeTest.as +0 -109
  67. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/DESKeyTest.as +0 -112
  68. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/ECBModeTest.as +0 -151
  69. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/HMACTest.as +0 -184
  70. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/ITestHarness.as +0 -20
  71. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/MD2Test.as +0 -56
  72. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/MD5Test.as +0 -58
  73. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/OFBModeTest.as +0 -101
  74. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/RSAKeyTest.as +0 -92
  75. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/SHA1Test.as +0 -198
  76. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/SHA224Test.as +0 -58
  77. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/SHA256Test.as +0 -60
  78. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/TLSPRFTest.as +0 -51
  79. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/TestCase.as +0 -42
  80. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/TripleDESKeyTest.as +0 -59
  81. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/XTeaKeyTest.as +0 -66
  82. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/BulkCiphers.as +0 -102
  83. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/CipherSuites.as +0 -117
  84. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/IConnectionState.as +0 -14
  85. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/ISecurityParameters.as +0 -29
  86. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/KeyExchanges.as +0 -24
  87. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/MACs.as +0 -38
  88. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/SSLConnectionState.as +0 -171
  89. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/SSLEvent.as +0 -26
  90. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/SSLSecurityParameters.as +0 -340
  91. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSConfig.as +0 -70
  92. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSConnectionState.as +0 -151
  93. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSEngine.as +0 -895
  94. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSError.as +0 -39
  95. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSEvent.as +0 -27
  96. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSSecurityParameters.as +0 -197
  97. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSSocket.as +0 -370
  98. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSSocketEvent.as +0 -26
  99. data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSTest.as +0 -180
  100. data/src/vendor/web-socket-js/flash-src/com/hurlant/math/BarrettReduction.as +0 -90
  101. data/src/vendor/web-socket-js/flash-src/com/hurlant/math/BigInteger.as +0 -1543
  102. data/src/vendor/web-socket-js/flash-src/com/hurlant/math/ClassicReduction.as +0 -35
  103. data/src/vendor/web-socket-js/flash-src/com/hurlant/math/IReduction.as +0 -11
  104. data/src/vendor/web-socket-js/flash-src/com/hurlant/math/MontgomeryReduction.as +0 -85
  105. data/src/vendor/web-socket-js/flash-src/com/hurlant/math/NullReduction.as +0 -34
  106. data/src/vendor/web-socket-js/flash-src/com/hurlant/math/bi_internal.as +0 -11
  107. data/src/vendor/web-socket-js/flash-src/com/hurlant/util/ArrayUtil.as +0 -25
  108. data/src/vendor/web-socket-js/flash-src/com/hurlant/util/Base64.as +0 -189
  109. data/src/vendor/web-socket-js/flash-src/com/hurlant/util/Hex.as +0 -66
  110. data/src/vendor/web-socket-js/flash-src/com/hurlant/util/Memory.as +0 -28
  111. data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/ByteString.as +0 -43
  112. data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/DER.as +0 -210
  113. data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/IAsn1Type.as +0 -21
  114. data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/Integer.as +0 -44
  115. data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/OID.as +0 -35
  116. data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/ObjectIdentifier.as +0 -112
  117. data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/PEM.as +0 -118
  118. data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/PrintableString.as +0 -49
  119. data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/Sequence.as +0 -90
  120. data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/Set.as +0 -27
  121. data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/Type.as +0 -94
  122. data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/UTCTime.as +0 -60
  123. data/src/vendor/web-socket-js/sample.html +0 -76
  124. data/src/vendor/web-socket-js/swfobject.js +0 -4
  125. data/src/vendor/web-socket-js/web_socket.js +0 -388
@@ -1,64 +0,0 @@
1
- /**
2
- * CFBMode
3
- *
4
- * An ActionScript 3 implementation of the CFB confidentiality mode
5
- * Copyright (c) 2007 Henri Torgemane
6
- *
7
- * See LICENSE.txt for full license information.
8
- */
9
- package com.hurlant.crypto.symmetric
10
- {
11
- import flash.utils.ByteArray;
12
-
13
- /**
14
- * This is the "full" CFB.
15
- * CFB1 and CFB8 are hiding somewhere else.
16
- *
17
- * Note: The constructor accepts an optional padding argument, but ignores it otherwise.
18
- */
19
- public class CFBMode extends IVMode implements IMode
20
- {
21
-
22
- public function CFBMode(key:ISymmetricKey, padding:IPad = null) {
23
- super(key,null);
24
- }
25
-
26
- public function encrypt(src:ByteArray):void
27
- {
28
- var l:uint = src.length;
29
- var vector:ByteArray = getIV4e();
30
- for (var i:uint=0;i<src.length;i+=blockSize) {
31
- key.encrypt(vector);
32
- var chunk:uint = (i+blockSize<l)?blockSize:l-i;
33
- for (var j:uint=0;j<chunk;j++) {
34
- src[i+j] ^= vector[j];
35
- }
36
- vector.position=0;
37
- vector.writeBytes(src, i, chunk);
38
- }
39
- }
40
-
41
- public function decrypt(src:ByteArray):void
42
- {
43
- var l:uint = src.length;
44
- var vector:ByteArray = getIV4d();
45
- var tmp:ByteArray = new ByteArray;
46
- for (var i:uint=0;i<src.length;i+=blockSize) {
47
- key.encrypt(vector);
48
- var chunk:uint = (i+blockSize<l)?blockSize:l-i;
49
- tmp.position=0;
50
- tmp.writeBytes(src, i, chunk);
51
- for (var j:uint=0;j<chunk;j++) {
52
- src[i+j] ^= vector[j];
53
- }
54
- vector.position=0;
55
- vector.writeBytes(tmp);
56
- }
57
- }
58
-
59
- public function toString():String {
60
- return key.toString()+"-cfb";
61
- }
62
-
63
- }
64
- }
@@ -1,58 +0,0 @@
1
- /**
2
- * CTRMode
3
- *
4
- * An ActionScript 3 implementation of the counter confidentiality mode
5
- * Copyright (c) 2007 Henri Torgemane
6
- *
7
- * See LICENSE.txt for full license information.
8
- */
9
- package com.hurlant.crypto.symmetric
10
- {
11
- import flash.utils.ByteArray;
12
-
13
- public class CTRMode extends IVMode implements IMode
14
- {
15
-
16
- public function CTRMode(key:ISymmetricKey, padding:IPad = null) {
17
- super(key, padding);
18
- }
19
-
20
- public function encrypt(src:ByteArray):void
21
- {
22
- padding.pad(src);
23
- var vector:ByteArray = getIV4e();
24
- core(src, vector);
25
- }
26
-
27
- public function decrypt(src:ByteArray):void
28
- {
29
- var vector:ByteArray = getIV4d();
30
- core(src, vector);
31
- padding.unpad(src);
32
- }
33
-
34
- private function core(src:ByteArray, iv:ByteArray):void {
35
- var X:ByteArray = new ByteArray;
36
- var Xenc:ByteArray = new ByteArray;
37
- X.writeBytes(iv);
38
- for (var i:uint=0;i<src.length;i+=blockSize) {
39
- Xenc.position=0;
40
- Xenc.writeBytes(X);
41
- key.encrypt(Xenc);
42
- for (var j:uint=0;j<blockSize;j++) {
43
- src[i+j] ^= Xenc[j];
44
- }
45
-
46
- for (j=blockSize-1;j>=0;--j) {
47
- X[j]++;
48
- if (X[j]!=0)
49
- break;
50
- }
51
- }
52
- }
53
- public function toString():String {
54
- return key.toString()+"-ctr";
55
- }
56
-
57
- }
58
- }
@@ -1,365 +0,0 @@
1
- /**
2
- * DESKey
3
- *
4
- * An Actionscript 3 implementation of the Data Encryption Standard (DES)
5
- * Copyright (c) 2007 Henri Torgemane
6
- *
7
- * Derived from:
8
- * The Bouncy Castle Crypto package,
9
- * Copyright (c) 2000-2004 The Legion Of The Bouncy Castle
10
- * (http://www.bouncycastle.org)
11
- *
12
- * See LICENSE.txt for full license information.
13
- */
14
- package com.hurlant.crypto.symmetric
15
- {
16
- import flash.utils.ByteArray;
17
- import com.hurlant.util.Hex;
18
- import com.hurlant.util.Memory;
19
-
20
- public class DESKey implements ISymmetricKey
21
- {
22
- /**
23
- * what follows is mainly taken from "Applied Cryptography", by Bruce
24
- * Schneier, however it also bears great resemblance to Richard
25
- * Outerbridge's D3DES...
26
- */
27
-
28
- private static const Df_Key:Array = [ 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32,
29
- 0x10, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67 ];
30
-
31
- private static const bytebit:Array = [ 128, 64, 32, 16, 8, 4, 2, 1 ];
32
-
33
- private static const bigbyte:Array = [ 0x800000, 0x400000, 0x200000, 0x100000, 0x80000, 0x40000, 0x20000, 0x10000, 0x8000,
34
- 0x4000, 0x2000, 0x1000, 0x800, 0x400, 0x200, 0x100, 0x80, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x1 ];
35
-
36
- /*
37
- * Use the key schedule specified in the Standard (ANSI X3.92-1981).
38
- */
39
-
40
- private static const pc1:Array = [ 56, 48, 40, 32, 24, 16, 8, 0, 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2,
41
- 59, 51, 43, 35, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 60, 52, 44, 36, 28, 20, 12,
42
- 4, 27, 19, 11, 3 ];
43
-
44
- private static const totrot:Array = [ 1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28 ];
45
-
46
- private static const pc2:Array = [ 13, 16, 10, 23, 0, 4, 2, 27, 14, 5, 20, 9, 22, 18, 11, 3, 25, 7, 15, 6, 26, 19, 12, 1, 40,
47
- 51, 30, 36, 46, 54, 29, 39, 50, 44, 32, 47, 43, 48, 38, 55, 33, 52, 45, 41, 49, 35, 28, 31 ];
48
-
49
- private static const SP1:Array = [ 0x01010400, 0x00000000, 0x00010000, 0x01010404, 0x01010004, 0x00010404, 0x00000004,
50
- 0x00010000, 0x00000400, 0x01010400, 0x01010404, 0x00000400, 0x01000404, 0x01010004, 0x01000000, 0x00000004,
51
- 0x00000404, 0x01000400, 0x01000400, 0x00010400, 0x00010400, 0x01010000, 0x01010000, 0x01000404, 0x00010004,
52
- 0x01000004, 0x01000004, 0x00010004, 0x00000000, 0x00000404, 0x00010404, 0x01000000, 0x00010000, 0x01010404,
53
- 0x00000004, 0x01010000, 0x01010400, 0x01000000, 0x01000000, 0x00000400, 0x01010004, 0x00010000, 0x00010400,
54
- 0x01000004, 0x00000400, 0x00000004, 0x01000404, 0x00010404, 0x01010404, 0x00010004, 0x01010000, 0x01000404,
55
- 0x01000004, 0x00000404, 0x00010404, 0x01010400, 0x00000404, 0x01000400, 0x01000400, 0x00000000, 0x00010004,
56
- 0x00010400, 0x00000000, 0x01010004 ];
57
-
58
- private static const SP2:Array = [ 0x80108020, 0x80008000, 0x00008000, 0x00108020, 0x00100000, 0x00000020, 0x80100020,
59
- 0x80008020, 0x80000020, 0x80108020, 0x80108000, 0x80000000, 0x80008000, 0x00100000, 0x00000020, 0x80100020,
60
- 0x00108000, 0x00100020, 0x80008020, 0x00000000, 0x80000000, 0x00008000, 0x00108020, 0x80100000, 0x00100020,
61
- 0x80000020, 0x00000000, 0x00108000, 0x00008020, 0x80108000, 0x80100000, 0x00008020, 0x00000000, 0x00108020,
62
- 0x80100020, 0x00100000, 0x80008020, 0x80100000, 0x80108000, 0x00008000, 0x80100000, 0x80008000, 0x00000020,
63
- 0x80108020, 0x00108020, 0x00000020, 0x00008000, 0x80000000, 0x00008020, 0x80108000, 0x00100000, 0x80000020,
64
- 0x00100020, 0x80008020, 0x80000020, 0x00100020, 0x00108000, 0x00000000, 0x80008000, 0x00008020, 0x80000000,
65
- 0x80100020, 0x80108020, 0x00108000 ];
66
-
67
- private static const SP3:Array = [ 0x00000208, 0x08020200, 0x00000000, 0x08020008, 0x08000200, 0x00000000, 0x00020208,
68
- 0x08000200, 0x00020008, 0x08000008, 0x08000008, 0x00020000, 0x08020208, 0x00020008, 0x08020000, 0x00000208,
69
- 0x08000000, 0x00000008, 0x08020200, 0x00000200, 0x00020200, 0x08020000, 0x08020008, 0x00020208, 0x08000208,
70
- 0x00020200, 0x00020000, 0x08000208, 0x00000008, 0x08020208, 0x00000200, 0x08000000, 0x08020200, 0x08000000,
71
- 0x00020008, 0x00000208, 0x00020000, 0x08020200, 0x08000200, 0x00000000, 0x00000200, 0x00020008, 0x08020208,
72
- 0x08000200, 0x08000008, 0x00000200, 0x00000000, 0x08020008, 0x08000208, 0x00020000, 0x08000000, 0x08020208,
73
- 0x00000008, 0x00020208, 0x00020200, 0x08000008, 0x08020000, 0x08000208, 0x00000208, 0x08020000, 0x00020208,
74
- 0x00000008, 0x08020008, 0x00020200 ];
75
-
76
- private static const SP4:Array = [ 0x00802001, 0x00002081, 0x00002081, 0x00000080, 0x00802080, 0x00800081, 0x00800001,
77
- 0x00002001, 0x00000000, 0x00802000, 0x00802000, 0x00802081, 0x00000081, 0x00000000, 0x00800080, 0x00800001,
78
- 0x00000001, 0x00002000, 0x00800000, 0x00802001, 0x00000080, 0x00800000, 0x00002001, 0x00002080, 0x00800081,
79
- 0x00000001, 0x00002080, 0x00800080, 0x00002000, 0x00802080, 0x00802081, 0x00000081, 0x00800080, 0x00800001,
80
- 0x00802000, 0x00802081, 0x00000081, 0x00000000, 0x00000000, 0x00802000, 0x00002080, 0x00800080, 0x00800081,
81
- 0x00000001, 0x00802001, 0x00002081, 0x00002081, 0x00000080, 0x00802081, 0x00000081, 0x00000001, 0x00002000,
82
- 0x00800001, 0x00002001, 0x00802080, 0x00800081, 0x00002001, 0x00002080, 0x00800000, 0x00802001, 0x00000080,
83
- 0x00800000, 0x00002000, 0x00802080 ];
84
-
85
- private static const SP5:Array = [ 0x00000100, 0x02080100, 0x02080000, 0x42000100, 0x00080000, 0x00000100, 0x40000000,
86
- 0x02080000, 0x40080100, 0x00080000, 0x02000100, 0x40080100, 0x42000100, 0x42080000, 0x00080100, 0x40000000,
87
- 0x02000000, 0x40080000, 0x40080000, 0x00000000, 0x40000100, 0x42080100, 0x42080100, 0x02000100, 0x42080000,
88
- 0x40000100, 0x00000000, 0x42000000, 0x02080100, 0x02000000, 0x42000000, 0x00080100, 0x00080000, 0x42000100,
89
- 0x00000100, 0x02000000, 0x40000000, 0x02080000, 0x42000100, 0x40080100, 0x02000100, 0x40000000, 0x42080000,
90
- 0x02080100, 0x40080100, 0x00000100, 0x02000000, 0x42080000, 0x42080100, 0x00080100, 0x42000000, 0x42080100,
91
- 0x02080000, 0x00000000, 0x40080000, 0x42000000, 0x00080100, 0x02000100, 0x40000100, 0x00080000, 0x00000000,
92
- 0x40080000, 0x02080100, 0x40000100 ];
93
-
94
- private static const SP6:Array = [ 0x20000010, 0x20400000, 0x00004000, 0x20404010, 0x20400000, 0x00000010, 0x20404010,
95
- 0x00400000, 0x20004000, 0x00404010, 0x00400000, 0x20000010, 0x00400010, 0x20004000, 0x20000000, 0x00004010,
96
- 0x00000000, 0x00400010, 0x20004010, 0x00004000, 0x00404000, 0x20004010, 0x00000010, 0x20400010, 0x20400010,
97
- 0x00000000, 0x00404010, 0x20404000, 0x00004010, 0x00404000, 0x20404000, 0x20000000, 0x20004000, 0x00000010,
98
- 0x20400010, 0x00404000, 0x20404010, 0x00400000, 0x00004010, 0x20000010, 0x00400000, 0x20004000, 0x20000000,
99
- 0x00004010, 0x20000010, 0x20404010, 0x00404000, 0x20400000, 0x00404010, 0x20404000, 0x00000000, 0x20400010,
100
- 0x00000010, 0x00004000, 0x20400000, 0x00404010, 0x00004000, 0x00400010, 0x20004010, 0x00000000, 0x20404000,
101
- 0x20000000, 0x00400010, 0x20004010 ];
102
-
103
- private static const SP7:Array = [ 0x00200000, 0x04200002, 0x04000802, 0x00000000, 0x00000800, 0x04000802, 0x00200802,
104
- 0x04200800, 0x04200802, 0x00200000, 0x00000000, 0x04000002, 0x00000002, 0x04000000, 0x04200002, 0x00000802,
105
- 0x04000800, 0x00200802, 0x00200002, 0x04000800, 0x04000002, 0x04200000, 0x04200800, 0x00200002, 0x04200000,
106
- 0x00000800, 0x00000802, 0x04200802, 0x00200800, 0x00000002, 0x04000000, 0x00200800, 0x04000000, 0x00200800,
107
- 0x00200000, 0x04000802, 0x04000802, 0x04200002, 0x04200002, 0x00000002, 0x00200002, 0x04000000, 0x04000800,
108
- 0x00200000, 0x04200800, 0x00000802, 0x00200802, 0x04200800, 0x00000802, 0x04000002, 0x04200802, 0x04200000,
109
- 0x00200800, 0x00000000, 0x00000002, 0x04200802, 0x00000000, 0x00200802, 0x04200000, 0x00000800, 0x04000002,
110
- 0x04000800, 0x00000800, 0x00200002 ];
111
-
112
- private static const SP8:Array = [ 0x10001040, 0x00001000, 0x00040000, 0x10041040, 0x10000000, 0x10001040, 0x00000040,
113
- 0x10000000, 0x00040040, 0x10040000, 0x10041040, 0x00041000, 0x10041000, 0x00041040, 0x00001000, 0x00000040,
114
- 0x10040000, 0x10000040, 0x10001000, 0x00001040, 0x00041000, 0x00040040, 0x10040040, 0x10041000, 0x00001040,
115
- 0x00000000, 0x00000000, 0x10040040, 0x10000040, 0x10001000, 0x00041040, 0x00040000, 0x00041040, 0x00040000,
116
- 0x10041000, 0x00001000, 0x00000040, 0x10040040, 0x00001000, 0x00041040, 0x10001000, 0x00000040, 0x10000040,
117
- 0x10040000, 0x10040040, 0x10000000, 0x00040000, 0x10001040, 0x00000000, 0x10041040, 0x00040040, 0x10000040,
118
- 0x10040000, 0x10001000, 0x10001040, 0x00000000, 0x10041040, 0x00041000, 0x00041000, 0x00001040, 0x00001040,
119
- 0x00040040, 0x10000000, 0x10041000 ];
120
-
121
-
122
- protected var key:ByteArray;
123
- protected var encKey:Array;
124
- protected var decKey:Array;
125
-
126
-
127
- public function DESKey(key:ByteArray) {
128
- this.key = key;
129
- this.encKey = generateWorkingKey(true, key, 0);
130
- this.decKey = generateWorkingKey(false, key, 0);
131
- }
132
-
133
- public function getBlockSize():uint
134
- {
135
- return 8;
136
- }
137
-
138
- public function decrypt(block:ByteArray, index:uint=0):void
139
- {
140
- desFunc(decKey, block, index, block, index);
141
- }
142
-
143
- public function dispose():void
144
- {
145
- var i:uint=0;
146
- for (i=0;i<encKey.length;i++) { encKey[i]=0; }
147
- for (i=0;i<decKey.length;i++) { decKey[i]=0; }
148
- encKey=null;
149
- decKey=null;
150
- for (i=0;i<key.length;i++) { key[i]=0; }
151
- key.length = 0;
152
- key = null;
153
- Memory.gc();
154
- }
155
-
156
- public function encrypt(block:ByteArray, index:uint=0):void
157
- {
158
- desFunc(encKey, block, index, block, index);
159
- }
160
-
161
-
162
- /**
163
- * generate an integer based working key based on our secret key and what we
164
- * processing we are planning to do.
165
- *
166
- * Acknowledgements for this routine go to James Gillogly & Phil Karn.
167
- */
168
- protected function generateWorkingKey(encrypting:Boolean, key:ByteArray, off:uint):Array
169
- {
170
- //int[] newKey = new int[32];
171
- var newKey:Array = [];
172
- //boolean[] pc1m = new boolean[56], pcr = new boolean[56];
173
- var pc1m:ByteArray = new ByteArray;
174
- var pcr:ByteArray = new ByteArray;
175
-
176
- var l:uint;
177
-
178
- for (var j:uint = 0; j < 56; j++)
179
- {
180
- l = pc1[j];
181
-
182
- pc1m[j] = ((key[off + (l >>> 3)] & bytebit[l & 07]) != 0);
183
- }
184
-
185
- for (var i:uint = 0; i < 16; i++)
186
- {
187
- var m:uint;
188
- var n:uint;
189
-
190
- if (encrypting)
191
- {
192
- m = i << 1;
193
- }
194
- else
195
- {
196
- m = (15 - i) << 1;
197
- }
198
-
199
- n = m + 1;
200
- newKey[m] = newKey[n] = 0;
201
-
202
- for (j = 0; j < 28; j++)
203
- {
204
- l = j + totrot[i];
205
- if (l < 28)
206
- {
207
- pcr[j] = pc1m[l];
208
- }
209
- else
210
- {
211
- pcr[j] = pc1m[l - 28];
212
- }
213
- }
214
-
215
- for (j = 28; j < 56; j++)
216
- {
217
- l = j + totrot[i];
218
- if (l < 56)
219
- {
220
- pcr[j] = pc1m[l];
221
- }
222
- else
223
- {
224
- pcr[j] = pc1m[l - 28];
225
- }
226
- }
227
-
228
- for (j = 0; j < 24; j++)
229
- {
230
- if (pcr[pc2[j]])
231
- {
232
- newKey[m] |= bigbyte[j];
233
- }
234
-
235
- if (pcr[pc2[j + 24]])
236
- {
237
- newKey[n] |= bigbyte[j];
238
- }
239
- }
240
- }
241
-
242
- //
243
- // store the processed key
244
- //
245
- for (i = 0; i != 32; i += 2)
246
- {
247
- var i1:uint;
248
- var i2:uint;
249
-
250
- i1 = newKey[i];
251
- i2 = newKey[i + 1];
252
-
253
- newKey[i] = ((i1 & 0x00fc0000) << 6) | ((i1 & 0x00000fc0) << 10) | ((i2 & 0x00fc0000) >>> 10)
254
- | ((i2 & 0x00000fc0) >>> 6);
255
-
256
- newKey[i + 1] = ((i1 & 0x0003f000) << 12) | ((i1 & 0x0000003f) << 16) | ((i2 & 0x0003f000) >>> 4)
257
- | (i2 & 0x0000003f);
258
- }
259
- return newKey;
260
- }
261
-
262
- /**
263
- * the DES engine.
264
- */
265
- protected function desFunc(wKey:Array, inp:ByteArray, inOff:uint, out:ByteArray, outOff:uint):void
266
- {
267
- var work:uint;
268
- var right:uint;
269
- var left:uint;
270
-
271
- left = (inp[inOff + 0] & 0xff) << 24;
272
- left |= (inp[inOff + 1] & 0xff) << 16;
273
- left |= (inp[inOff + 2] & 0xff) << 8;
274
- left |= (inp[inOff + 3] & 0xff);
275
-
276
- right = (inp[inOff + 4] & 0xff) << 24;
277
- right |= (inp[inOff + 5] & 0xff) << 16;
278
- right |= (inp[inOff + 6] & 0xff) << 8;
279
- right |= (inp[inOff + 7] & 0xff);
280
-
281
- work = ((left >>> 4) ^ right) & 0x0f0f0f0f;
282
- right ^= work;
283
- left ^= (work << 4);
284
- work = ((left >>> 16) ^ right) & 0x0000ffff;
285
- right ^= work;
286
- left ^= (work << 16);
287
- work = ((right >>> 2) ^ left) & 0x33333333;
288
- left ^= work;
289
- right ^= (work << 2);
290
- work = ((right >>> 8) ^ left) & 0x00ff00ff;
291
- left ^= work;
292
- right ^= (work << 8);
293
- right = ((right << 1) | ((right >>> 31) & 1)) & 0xffffffff;
294
- work = (left ^ right) & 0xaaaaaaaa;
295
- left ^= work;
296
- right ^= work;
297
- left = ((left << 1) | ((left >>> 31) & 1)) & 0xffffffff;
298
-
299
- for (var round:uint = 0; round < 8; round++)
300
- {
301
- var fval:uint;
302
-
303
- work = (right << 28) | (right >>> 4);
304
- work ^= wKey[round * 4 + 0];
305
- fval = SP7[work & 0x3f];
306
- fval |= SP5[(work >>> 8) & 0x3f];
307
- fval |= SP3[(work >>> 16) & 0x3f];
308
- fval |= SP1[(work >>> 24) & 0x3f];
309
- work = right ^ wKey[round * 4 + 1];
310
- fval |= SP8[work & 0x3f];
311
- fval |= SP6[(work >>> 8) & 0x3f];
312
- fval |= SP4[(work >>> 16) & 0x3f];
313
- fval |= SP2[(work >>> 24) & 0x3f];
314
- left ^= fval;
315
- work = (left << 28) | (left >>> 4);
316
- work ^= wKey[round * 4 + 2];
317
- fval = SP7[work & 0x3f];
318
- fval |= SP5[(work >>> 8) & 0x3f];
319
- fval |= SP3[(work >>> 16) & 0x3f];
320
- fval |= SP1[(work >>> 24) & 0x3f];
321
- work = left ^ wKey[round * 4 + 3];
322
- fval |= SP8[work & 0x3f];
323
- fval |= SP6[(work >>> 8) & 0x3f];
324
- fval |= SP4[(work >>> 16) & 0x3f];
325
- fval |= SP2[(work >>> 24) & 0x3f];
326
- right ^= fval;
327
- }
328
-
329
- right = (right << 31) | (right >>> 1);
330
- work = (left ^ right) & 0xaaaaaaaa;
331
- left ^= work;
332
- right ^= work;
333
- left = (left << 31) | (left >>> 1);
334
- work = ((left >>> 8) ^ right) & 0x00ff00ff;
335
- right ^= work;
336
- left ^= (work << 8);
337
- work = ((left >>> 2) ^ right) & 0x33333333;
338
- right ^= work;
339
- left ^= (work << 2);
340
- work = ((right >>> 16) ^ left) & 0x0000ffff;
341
- left ^= work;
342
- right ^= (work << 16);
343
- work = ((right >>> 4) ^ left) & 0x0f0f0f0f;
344
- left ^= work;
345
- right ^= (work << 4);
346
-
347
- out[outOff + 0] = ((right >>> 24) & 0xff);
348
- out[outOff + 1] = ((right >>> 16) & 0xff);
349
- out[outOff + 2] = ((right >>> 8) & 0xff);
350
- out[outOff + 3] = (right & 0xff);
351
- out[outOff + 4] = ((left >>> 24) & 0xff);
352
- out[outOff + 5] = ((left >>> 16) & 0xff);
353
- out[outOff + 6] = ((left >>> 8) & 0xff);
354
- out[outOff + 7] = (left & 0xff);
355
- }
356
-
357
-
358
- public function toString():String {
359
- return "des";
360
- }
361
-
362
-
363
-
364
- }
365
- }