rocket-js 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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
- }