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.
- data/Rakefile +5 -52
- data/spec/ruby/spec_helper.rb +2 -1
- metadata +7 -129
- data/src/vendor/web-socket-js/FABridge.js +0 -604
- data/src/vendor/web-socket-js/README.txt +0 -109
- data/src/vendor/web-socket-js/WebSocketMain.swf +0 -0
- data/src/vendor/web-socket-js/WebSocketMainInsecure.zip +0 -0
- data/src/vendor/web-socket-js/flash-src/WebSocket.as +0 -473
- data/src/vendor/web-socket-js/flash-src/WebSocketMain.as +0 -88
- data/src/vendor/web-socket-js/flash-src/WebSocketMainInsecure.as +0 -19
- data/src/vendor/web-socket-js/flash-src/WebSocketStateEvent.as +0 -32
- data/src/vendor/web-socket-js/flash-src/bridge/FABridge.as +0 -943
- data/src/vendor/web-socket-js/flash-src/build.sh +0 -10
- data/src/vendor/web-socket-js/flash-src/com/adobe/net/proxies/RFC2817Socket.as +0 -204
- data/src/vendor/web-socket-js/flash-src/com/gsolo/encryption/MD5.as +0 -375
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/Crypto.as +0 -287
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/cert/MozillaRootCertificates.as +0 -3235
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/cert/X509Certificate.as +0 -218
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/cert/X509CertificateCollection.as +0 -57
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/HMAC.as +0 -82
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/IHMAC.as +0 -27
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/IHash.as +0 -21
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/MAC.as +0 -137
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/MD2.as +0 -124
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/MD5.as +0 -204
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/SHA1.as +0 -106
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/SHA224.as +0 -28
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/SHA256.as +0 -115
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/SHABase.as +0 -71
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/prng/ARC4.as +0 -90
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/prng/IPRNG.as +0 -20
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/prng/Random.as +0 -119
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/prng/TLSPRF.as +0 -142
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/rsa/RSAKey.as +0 -339
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/AESKey.as +0 -2797
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/BlowFishKey.as +0 -375
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/CBCMode.as +0 -55
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/CFB8Mode.as +0 -61
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/CFBMode.as +0 -64
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/CTRMode.as +0 -58
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/DESKey.as +0 -365
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/ECBMode.as +0 -86
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/ICipher.as +0 -21
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/IMode.as +0 -15
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/IPad.as +0 -32
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/IStreamCipher.as +0 -21
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/ISymmetricKey.as +0 -35
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/IVMode.as +0 -110
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/NullPad.as +0 -34
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/OFBMode.as +0 -52
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/PKCS5.as +0 -44
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/SSLPad.as +0 -44
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/SimpleIVMode.as +0 -60
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/TLSPad.as +0 -42
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/TripleDESKey.as +0 -88
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/XTeaKey.as +0 -94
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/aeskey.pl +0 -29
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/dump.txt +0 -2304
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/AESKeyTest.as +0 -1220
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/ARC4Test.as +0 -58
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/BigIntegerTest.as +0 -39
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/BlowFishKeyTest.as +0 -148
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/CBCModeTest.as +0 -160
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/CFB8ModeTest.as +0 -71
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/CFBModeTest.as +0 -98
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/CTRModeTest.as +0 -109
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/DESKeyTest.as +0 -112
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/ECBModeTest.as +0 -151
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/HMACTest.as +0 -184
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/ITestHarness.as +0 -20
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/MD2Test.as +0 -56
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/MD5Test.as +0 -58
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/OFBModeTest.as +0 -101
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/RSAKeyTest.as +0 -92
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/SHA1Test.as +0 -198
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/SHA224Test.as +0 -58
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/SHA256Test.as +0 -60
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/TLSPRFTest.as +0 -51
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/TestCase.as +0 -42
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/TripleDESKeyTest.as +0 -59
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/XTeaKeyTest.as +0 -66
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/BulkCiphers.as +0 -102
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/CipherSuites.as +0 -117
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/IConnectionState.as +0 -14
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/ISecurityParameters.as +0 -29
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/KeyExchanges.as +0 -24
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/MACs.as +0 -38
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/SSLConnectionState.as +0 -171
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/SSLEvent.as +0 -26
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/SSLSecurityParameters.as +0 -340
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSConfig.as +0 -70
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSConnectionState.as +0 -151
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSEngine.as +0 -895
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSError.as +0 -39
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSEvent.as +0 -27
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSSecurityParameters.as +0 -197
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSSocket.as +0 -370
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSSocketEvent.as +0 -26
- data/src/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSTest.as +0 -180
- data/src/vendor/web-socket-js/flash-src/com/hurlant/math/BarrettReduction.as +0 -90
- data/src/vendor/web-socket-js/flash-src/com/hurlant/math/BigInteger.as +0 -1543
- data/src/vendor/web-socket-js/flash-src/com/hurlant/math/ClassicReduction.as +0 -35
- data/src/vendor/web-socket-js/flash-src/com/hurlant/math/IReduction.as +0 -11
- data/src/vendor/web-socket-js/flash-src/com/hurlant/math/MontgomeryReduction.as +0 -85
- data/src/vendor/web-socket-js/flash-src/com/hurlant/math/NullReduction.as +0 -34
- data/src/vendor/web-socket-js/flash-src/com/hurlant/math/bi_internal.as +0 -11
- data/src/vendor/web-socket-js/flash-src/com/hurlant/util/ArrayUtil.as +0 -25
- data/src/vendor/web-socket-js/flash-src/com/hurlant/util/Base64.as +0 -189
- data/src/vendor/web-socket-js/flash-src/com/hurlant/util/Hex.as +0 -66
- data/src/vendor/web-socket-js/flash-src/com/hurlant/util/Memory.as +0 -28
- data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/ByteString.as +0 -43
- data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/DER.as +0 -210
- data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/IAsn1Type.as +0 -21
- data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/Integer.as +0 -44
- data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/OID.as +0 -35
- data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/ObjectIdentifier.as +0 -112
- data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/PEM.as +0 -118
- data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/PrintableString.as +0 -49
- data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/Sequence.as +0 -90
- data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/Set.as +0 -27
- data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/Type.as +0 -94
- data/src/vendor/web-socket-js/flash-src/com/hurlant/util/der/UTCTime.as +0 -60
- data/src/vendor/web-socket-js/sample.html +0 -76
- data/src/vendor/web-socket-js/swfobject.js +0 -4
- data/src/vendor/web-socket-js/web_socket.js +0 -388
@@ -1,10 +0,0 @@
|
|
1
|
-
#!/bin/sh
|
2
|
-
|
3
|
-
# You need Flex 4 SDK:
|
4
|
-
# http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4
|
5
|
-
|
6
|
-
mxmlc -static-link-runtime-shared-libraries -output=../WebSocketMain.swf WebSocketMain.as &&
|
7
|
-
mxmlc -static-link-runtime-shared-libraries -output=../WebSocketMainInsecure.swf WebSocketMainInsecure.as &&
|
8
|
-
cd .. &&
|
9
|
-
zip WebSocketMainInsecure.zip WebSocketMainInsecure.swf &&
|
10
|
-
rm WebSocketMainInsecure.swf
|
@@ -1,204 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
Adobe Systems Incorporated(r) Source Code License Agreement
|
3
|
-
Copyright(c) 2005 Adobe Systems Incorporated. All rights reserved.
|
4
|
-
|
5
|
-
Please read this Source Code License Agreement carefully before using
|
6
|
-
the source code.
|
7
|
-
|
8
|
-
Adobe Systems Incorporated grants to you a perpetual, worldwide, non-exclusive,
|
9
|
-
no-charge, royalty-free, irrevocable copyright license, to reproduce,
|
10
|
-
prepare derivative works of, publicly display, publicly perform, and
|
11
|
-
distribute this source code and such derivative works in source or
|
12
|
-
object code form without any attribution requirements.
|
13
|
-
|
14
|
-
The name "Adobe Systems Incorporated" must not be used to endorse or promote products
|
15
|
-
derived from the source code without prior written permission.
|
16
|
-
|
17
|
-
You agree to indemnify, hold harmless and defend Adobe Systems Incorporated from and
|
18
|
-
against any loss, damage, claims or lawsuits, including attorney's
|
19
|
-
fees that arise or result from your use or distribution of the source
|
20
|
-
code.
|
21
|
-
|
22
|
-
THIS SOURCE CODE IS PROVIDED "AS IS" AND "WITH ALL FAULTS", WITHOUT
|
23
|
-
ANY TECHNICAL SUPPORT OR ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
|
24
|
-
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
25
|
-
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ALSO, THERE IS NO WARRANTY OF
|
26
|
-
NON-INFRINGEMENT, TITLE OR QUIET ENJOYMENT. IN NO EVENT SHALL MACROMEDIA
|
27
|
-
OR ITS SUPPLIERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
28
|
-
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
29
|
-
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
30
|
-
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
31
|
-
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
32
|
-
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOURCE CODE, EVEN IF
|
33
|
-
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
34
|
-
*/
|
35
|
-
package com.adobe.net.proxies
|
36
|
-
{
|
37
|
-
import flash.events.Event;
|
38
|
-
import flash.events.IOErrorEvent;
|
39
|
-
import flash.events.ProgressEvent;
|
40
|
-
import flash.net.Socket;
|
41
|
-
|
42
|
-
/**
|
43
|
-
* This class allows TCP socket connections through HTTP proxies in accordance with
|
44
|
-
* RFC 2817:
|
45
|
-
*
|
46
|
-
* ftp://ftp.rfc-editor.org/in-notes/rfc2817.txt
|
47
|
-
*
|
48
|
-
* It can also be used to make direct connections to a destination, as well. If you
|
49
|
-
* pass the host and port into the constructor, no proxy will be used. You can also
|
50
|
-
* call connect, passing in the host and the port, and if you didn't set the proxy
|
51
|
-
* info, a direct connection will be made. A proxy is only used after you have called
|
52
|
-
* the setProxyInfo function.
|
53
|
-
*
|
54
|
-
* The connection to and negotiation with the proxy is completely hidden. All the
|
55
|
-
* same events are thrown whether you are using a proxy or not, and the data you
|
56
|
-
* receive from the target server will look exact as it would if you were connected
|
57
|
-
* to it directly rather than through a proxy.
|
58
|
-
*
|
59
|
-
* @author Christian Cantrell
|
60
|
-
*
|
61
|
-
**/
|
62
|
-
public class RFC2817Socket
|
63
|
-
extends Socket
|
64
|
-
{
|
65
|
-
private var proxyHost:String = null;
|
66
|
-
private var host:String = null;
|
67
|
-
private var proxyPort:int = 0;
|
68
|
-
private var port:int = 0;
|
69
|
-
private var deferredEventHandlers:Object = new Object();
|
70
|
-
private var buffer:String = new String();
|
71
|
-
|
72
|
-
/**
|
73
|
-
* Construct a new RFC2817Socket object. If you pass in the host and the port,
|
74
|
-
* no proxy will be used. If you want to use a proxy, instantiate with no
|
75
|
-
* arguments, call setProxyInfo, then call connect.
|
76
|
-
**/
|
77
|
-
public function RFC2817Socket(host:String = null, port:int = 0)
|
78
|
-
{
|
79
|
-
if (host != null && port != 0)
|
80
|
-
{
|
81
|
-
super(host, port);
|
82
|
-
}
|
83
|
-
}
|
84
|
-
|
85
|
-
/**
|
86
|
-
* Set the proxy host and port number. Your connection will only proxied if
|
87
|
-
* this function has been called.
|
88
|
-
**/
|
89
|
-
public function setProxyInfo(host:String, port:int):void
|
90
|
-
{
|
91
|
-
this.proxyHost = host;
|
92
|
-
this.proxyPort = port;
|
93
|
-
|
94
|
-
var deferredSocketDataHandler:Object = this.deferredEventHandlers[ProgressEvent.SOCKET_DATA];
|
95
|
-
var deferredConnectHandler:Object = this.deferredEventHandlers[Event.CONNECT];
|
96
|
-
|
97
|
-
if (deferredSocketDataHandler != null)
|
98
|
-
{
|
99
|
-
super.removeEventListener(ProgressEvent.SOCKET_DATA, deferredSocketDataHandler.listener, deferredSocketDataHandler.useCapture);
|
100
|
-
}
|
101
|
-
|
102
|
-
if (deferredConnectHandler != null)
|
103
|
-
{
|
104
|
-
super.removeEventListener(Event.CONNECT, deferredConnectHandler.listener, deferredConnectHandler.useCapture);
|
105
|
-
}
|
106
|
-
}
|
107
|
-
|
108
|
-
/**
|
109
|
-
* Connect to the specified host over the specified port. If you want your
|
110
|
-
* connection proxied, call the setProxyInfo function first.
|
111
|
-
**/
|
112
|
-
public override function connect(host:String, port:int):void
|
113
|
-
{
|
114
|
-
if (this.proxyHost == null)
|
115
|
-
{
|
116
|
-
this.redirectConnectEvent();
|
117
|
-
this.redirectSocketDataEvent();
|
118
|
-
super.connect(host, port);
|
119
|
-
}
|
120
|
-
else
|
121
|
-
{
|
122
|
-
this.host = host;
|
123
|
-
this.port = port;
|
124
|
-
super.addEventListener(Event.CONNECT, this.onConnect);
|
125
|
-
super.addEventListener(ProgressEvent.SOCKET_DATA, this.onSocketData);
|
126
|
-
super.connect(this.proxyHost, this.proxyPort);
|
127
|
-
}
|
128
|
-
}
|
129
|
-
|
130
|
-
private function onConnect(event:Event):void
|
131
|
-
{
|
132
|
-
this.writeUTFBytes("CONNECT "+this.host+":"+this.port+" HTTP/1.1\n\n");
|
133
|
-
this.flush();
|
134
|
-
this.redirectConnectEvent();
|
135
|
-
}
|
136
|
-
|
137
|
-
private function onSocketData(event:ProgressEvent):void
|
138
|
-
{
|
139
|
-
while (this.bytesAvailable != 0)
|
140
|
-
{
|
141
|
-
this.buffer += this.readUTFBytes(1);
|
142
|
-
if (this.buffer.search(/\r?\n\r?\n$/) != -1)
|
143
|
-
{
|
144
|
-
this.checkResponse(event);
|
145
|
-
break;
|
146
|
-
}
|
147
|
-
}
|
148
|
-
}
|
149
|
-
|
150
|
-
private function checkResponse(event:ProgressEvent):void
|
151
|
-
{
|
152
|
-
var responseCode:String = this.buffer.substr(this.buffer.indexOf(" ")+1, 3);
|
153
|
-
|
154
|
-
if (responseCode.search(/^2/) == -1)
|
155
|
-
{
|
156
|
-
var ioError:IOErrorEvent = new IOErrorEvent(IOErrorEvent.IO_ERROR);
|
157
|
-
ioError.text = "Error connecting to the proxy ["+this.proxyHost+"] on port ["+this.proxyPort+"]: " + this.buffer;
|
158
|
-
this.dispatchEvent(ioError);
|
159
|
-
}
|
160
|
-
else
|
161
|
-
{
|
162
|
-
this.redirectSocketDataEvent();
|
163
|
-
this.dispatchEvent(new Event(Event.CONNECT));
|
164
|
-
if (this.bytesAvailable > 0)
|
165
|
-
{
|
166
|
-
this.dispatchEvent(event);
|
167
|
-
}
|
168
|
-
}
|
169
|
-
this.buffer = null;
|
170
|
-
}
|
171
|
-
|
172
|
-
private function redirectConnectEvent():void
|
173
|
-
{
|
174
|
-
super.removeEventListener(Event.CONNECT, onConnect);
|
175
|
-
var deferredEventHandler:Object = this.deferredEventHandlers[Event.CONNECT];
|
176
|
-
if (deferredEventHandler != null)
|
177
|
-
{
|
178
|
-
super.addEventListener(Event.CONNECT, deferredEventHandler.listener, deferredEventHandler.useCapture, deferredEventHandler.priority, deferredEventHandler.useWeakReference);
|
179
|
-
}
|
180
|
-
}
|
181
|
-
|
182
|
-
private function redirectSocketDataEvent():void
|
183
|
-
{
|
184
|
-
super.removeEventListener(ProgressEvent.SOCKET_DATA, onSocketData);
|
185
|
-
var deferredEventHandler:Object = this.deferredEventHandlers[ProgressEvent.SOCKET_DATA];
|
186
|
-
if (deferredEventHandler != null)
|
187
|
-
{
|
188
|
-
super.addEventListener(ProgressEvent.SOCKET_DATA, deferredEventHandler.listener, deferredEventHandler.useCapture, deferredEventHandler.priority, deferredEventHandler.useWeakReference);
|
189
|
-
}
|
190
|
-
}
|
191
|
-
|
192
|
-
public override function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int=0.0, useWeakReference:Boolean=false):void
|
193
|
-
{
|
194
|
-
if (type == Event.CONNECT || type == ProgressEvent.SOCKET_DATA)
|
195
|
-
{
|
196
|
-
this.deferredEventHandlers[type] = {listener:listener,useCapture:useCapture, priority:priority, useWeakReference:useWeakReference};
|
197
|
-
}
|
198
|
-
else
|
199
|
-
{
|
200
|
-
super.addEventListener(type, listener, useCapture, priority, useWeakReference);
|
201
|
-
}
|
202
|
-
}
|
203
|
-
}
|
204
|
-
}
|
@@ -1,375 +0,0 @@
|
|
1
|
-
package com.gsolo.encryption {
|
2
|
-
public class MD5 {
|
3
|
-
/*
|
4
|
-
* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
|
5
|
-
* Digest Algorithm, as defined in RFC 1321.
|
6
|
-
* Version 2.2-alpha Copyright (C) Paul Johnston 1999 - 2005
|
7
|
-
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
|
8
|
-
* Distributed under the BSD License
|
9
|
-
* See http://pajhome.org.uk/crypt/md5 for more info.
|
10
|
-
*
|
11
|
-
* Converted to AS3 By Geoffrey Williams
|
12
|
-
*/
|
13
|
-
|
14
|
-
/*
|
15
|
-
* Configurable variables. You may need to tweak these to be compatible with
|
16
|
-
* the server-side, but the defaults work in most cases.
|
17
|
-
*/
|
18
|
-
|
19
|
-
public static const HEX_FORMAT_LOWERCASE:uint = 0;
|
20
|
-
public static const HEX_FORMAT_UPPERCASE:uint = 1;
|
21
|
-
|
22
|
-
public static const BASE64_PAD_CHARACTER_DEFAULT_COMPLIANCE:String = "";
|
23
|
-
public static const BASE64_PAD_CHARACTER_RFC_COMPLIANCE:String = "=";
|
24
|
-
|
25
|
-
public static var hexcase:uint = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
|
26
|
-
public static var b64pad:String = ""; /* base-64 pad character. "=" for strict RFC compliance */
|
27
|
-
|
28
|
-
public static function encrypt (string:String):String {
|
29
|
-
return hex_md5 (string);
|
30
|
-
}
|
31
|
-
|
32
|
-
/*
|
33
|
-
* These are the functions you'll usually want to call
|
34
|
-
* They take string arguments and return either hex or base-64 encoded strings
|
35
|
-
*/
|
36
|
-
public static function hex_md5 (string:String):String {
|
37
|
-
return rstr2hex (rstr_md5 (str2rstr_utf8 (string)));
|
38
|
-
}
|
39
|
-
|
40
|
-
public static function b64_md5 (string:String):String {
|
41
|
-
return rstr2b64 (rstr_md5 (str2rstr_utf8 (string)));
|
42
|
-
}
|
43
|
-
|
44
|
-
public static function any_md5 (string:String, encoding:String):String {
|
45
|
-
return rstr2any (rstr_md5 (str2rstr_utf8 (string)), encoding);
|
46
|
-
}
|
47
|
-
public static function hex_hmac_md5 (key:String, data:String):String {
|
48
|
-
return rstr2hex (rstr_hmac_md5 (str2rstr_utf8 (key), str2rstr_utf8 (data)));
|
49
|
-
}
|
50
|
-
public static function b64_hmac_md5 (key:String, data:String):String {
|
51
|
-
return rstr2b64 (rstr_hmac_md5 (str2rstr_utf8 (key), str2rstr_utf8 (data)));
|
52
|
-
}
|
53
|
-
public static function any_hmac_md5 (key:String, data:String, encoding:String):String {
|
54
|
-
return rstr2any(rstr_hmac_md5(str2rstr_utf8(key), str2rstr_utf8(data)), encoding);
|
55
|
-
}
|
56
|
-
|
57
|
-
/*
|
58
|
-
* Perform a simple self-test to see if the VM is working
|
59
|
-
*/
|
60
|
-
public static function md5_vm_test ():Boolean {
|
61
|
-
return hex_md5 ("abc") == "900150983cd24fb0d6963f7d28e17f72";
|
62
|
-
}
|
63
|
-
|
64
|
-
/*
|
65
|
-
* Calculate the MD5 of a raw string
|
66
|
-
*/
|
67
|
-
public static function rstr_md5 (string:String):String {
|
68
|
-
return binl2rstr (binl_md5 (rstr2binl (string), string.length * 8));
|
69
|
-
}
|
70
|
-
|
71
|
-
/*
|
72
|
-
* Calculate the HMAC-MD5, of a key and some data (raw strings)
|
73
|
-
*/
|
74
|
-
public static function rstr_hmac_md5 (key:String, data:String):String {
|
75
|
-
var bkey:Array = rstr2binl (key);
|
76
|
-
if (bkey.length > 16) bkey = binl_md5 (bkey, key.length * 8);
|
77
|
-
|
78
|
-
var ipad:Array = new Array(16), opad:Array = new Array(16);
|
79
|
-
for(var i:Number = 0; i < 16; i++) {
|
80
|
-
ipad[i] = bkey[i] ^ 0x36363636;
|
81
|
-
opad[i] = bkey[i] ^ 0x5C5C5C5C;
|
82
|
-
}
|
83
|
-
|
84
|
-
var hash:Array = binl_md5 (ipad.concat (rstr2binl (data)), 512 + data.length * 8);
|
85
|
-
return binl2rstr (binl_md5 (opad.concat (hash), 512 + 128));
|
86
|
-
}
|
87
|
-
|
88
|
-
/*
|
89
|
-
* Convert a raw string to a hex string
|
90
|
-
*/
|
91
|
-
public static function rstr2hex (input:String):String {
|
92
|
-
var hex_tab:String = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
|
93
|
-
var output:String = "";
|
94
|
-
var x:Number;
|
95
|
-
for(var i:Number = 0; i < input.length; i++) {
|
96
|
-
x = input.charCodeAt(i);
|
97
|
-
output += hex_tab.charAt((x >>> 4) & 0x0F)
|
98
|
-
+ hex_tab.charAt( x & 0x0F);
|
99
|
-
}
|
100
|
-
return output;
|
101
|
-
}
|
102
|
-
|
103
|
-
/*
|
104
|
-
* Convert a raw string to a base-64 string
|
105
|
-
*/
|
106
|
-
public static function rstr2b64 (input:String):String {
|
107
|
-
var tab:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
108
|
-
var output:String = "";
|
109
|
-
var len:Number = input.length;
|
110
|
-
for(var i:Number = 0; i < len; i += 3) {
|
111
|
-
var triplet:Number = (input.charCodeAt(i) << 16)
|
112
|
-
| (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
|
113
|
-
| (i + 2 < len ? input.charCodeAt(i+2) : 0);
|
114
|
-
for(var j:Number = 0; j < 4; j++) {
|
115
|
-
if(i * 8 + j * 6 > input.length * 8) output += b64pad;
|
116
|
-
else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);
|
117
|
-
}
|
118
|
-
}
|
119
|
-
return output;
|
120
|
-
}
|
121
|
-
|
122
|
-
/*
|
123
|
-
* Convert a raw string to an arbitrary string encoding
|
124
|
-
*/
|
125
|
-
public static function rstr2any(input:String, encoding:String):String {
|
126
|
-
var divisor:Number = encoding.length;
|
127
|
-
var remainders:Array = [];
|
128
|
-
var i:Number, q:Number, x:Number, quotient:Array;
|
129
|
-
|
130
|
-
/* Convert to an array of 16-bit big-endian values, forming the dividend */
|
131
|
-
var dividend:Array = new Array(input.length / 2);
|
132
|
-
for(i = 0; i < dividend.length; i++) {
|
133
|
-
dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);
|
134
|
-
}
|
135
|
-
|
136
|
-
/*
|
137
|
-
* Repeatedly perform a long division. The binary array forms the dividend,
|
138
|
-
* the length of the encoding is the divisor. Once computed, the quotient
|
139
|
-
* forms the dividend for the next step. We stop when the dividend is zero.
|
140
|
-
* All remainders are stored for later use.
|
141
|
-
*/
|
142
|
-
while(dividend.length > 0) {
|
143
|
-
quotient = [];
|
144
|
-
x = 0;
|
145
|
-
for(i = 0; i < dividend.length; i++) {
|
146
|
-
x = (x << 16) + dividend[i];
|
147
|
-
q = Math.floor(x / divisor);
|
148
|
-
x -= q * divisor;
|
149
|
-
if(quotient.length > 0 || q > 0)
|
150
|
-
quotient[quotient.length] = q;
|
151
|
-
}
|
152
|
-
remainders[remainders.length] = x;
|
153
|
-
dividend = quotient;
|
154
|
-
}
|
155
|
-
|
156
|
-
/* Convert the remainders to the output string */
|
157
|
-
var output:String = "";
|
158
|
-
for(i = remainders.length - 1; i >= 0; i--)
|
159
|
-
output += encoding.charAt (remainders[i]);
|
160
|
-
|
161
|
-
return output;
|
162
|
-
}
|
163
|
-
|
164
|
-
/*
|
165
|
-
* Encode a string as utf-8.
|
166
|
-
* For efficiency, this assumes the input is valid utf-16.
|
167
|
-
*/
|
168
|
-
public static function str2rstr_utf8 (input:String):String {
|
169
|
-
var output:String = "";
|
170
|
-
var i:Number = -1;
|
171
|
-
var x:Number, y:Number;
|
172
|
-
|
173
|
-
while(++i < input.length) {
|
174
|
-
/* Decode utf-16 surrogate pairs */
|
175
|
-
x = input.charCodeAt(i);
|
176
|
-
y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;
|
177
|
-
if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {
|
178
|
-
x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
|
179
|
-
i++;
|
180
|
-
}
|
181
|
-
|
182
|
-
/* Encode output as utf-8 */
|
183
|
-
if(x <= 0x7F)
|
184
|
-
output += String.fromCharCode(x);
|
185
|
-
else if(x <= 0x7FF)
|
186
|
-
output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),
|
187
|
-
0x80 | ( x & 0x3F));
|
188
|
-
else if(x <= 0xFFFF)
|
189
|
-
output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),
|
190
|
-
0x80 | ((x >>> 6 ) & 0x3F),
|
191
|
-
0x80 | ( x & 0x3F));
|
192
|
-
else if(x <= 0x1FFFFF)
|
193
|
-
output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),
|
194
|
-
0x80 | ((x >>> 12) & 0x3F),
|
195
|
-
0x80 | ((x >>> 6 ) & 0x3F),
|
196
|
-
0x80 | ( x & 0x3F));
|
197
|
-
}
|
198
|
-
return output;
|
199
|
-
}
|
200
|
-
|
201
|
-
/*
|
202
|
-
* Encode a string as utf-16
|
203
|
-
*/
|
204
|
-
public static function str2rstr_utf16le (input:String):String {
|
205
|
-
var output:String = "";
|
206
|
-
for(var i:Number = 0; i < input.length; i++)
|
207
|
-
output += String.fromCharCode( input.charCodeAt(i) & 0xFF,
|
208
|
-
(input.charCodeAt(i) >>> 8) & 0xFF);
|
209
|
-
return output;
|
210
|
-
}
|
211
|
-
|
212
|
-
public static function str2rstr_utf16be (input:String):String {
|
213
|
-
var output:String = "";
|
214
|
-
for(var i:Number = 0; i < input.length; i++)
|
215
|
-
output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,
|
216
|
-
input.charCodeAt(i) & 0xFF);
|
217
|
-
return output;
|
218
|
-
}
|
219
|
-
|
220
|
-
/*
|
221
|
-
* Convert a raw string to an array of little-endian words
|
222
|
-
* Characters >255 have their high-byte silently ignored.
|
223
|
-
*/
|
224
|
-
public static function rstr2binl (input:String):Array {
|
225
|
-
var output:Array = new Array(input.length >> 2);
|
226
|
-
for(var i:Number = 0; i < output.length; i++)
|
227
|
-
output[i] = 0;
|
228
|
-
for(i = 0; i < input.length * 8; i += 8)
|
229
|
-
output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (i%32);
|
230
|
-
return output;
|
231
|
-
}
|
232
|
-
|
233
|
-
/*
|
234
|
-
* Convert an array of little-endian words to a string
|
235
|
-
*/
|
236
|
-
public static function binl2rstr (input:Array):String {
|
237
|
-
var output:String = "";
|
238
|
-
for(var i:Number = 0; i < input.length * 32; i += 8)
|
239
|
-
output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
|
240
|
-
return output;
|
241
|
-
}
|
242
|
-
|
243
|
-
/*
|
244
|
-
* Calculate the MD5 of an array of little-endian words, and a bit length.
|
245
|
-
*/
|
246
|
-
public static function binl_md5 (x:Array, len:Number):Array {
|
247
|
-
/* append padding */
|
248
|
-
x[len >> 5] |= 0x80 << ((len) % 32);
|
249
|
-
x[(((len + 64) >>> 9) << 4) + 14] = len;
|
250
|
-
|
251
|
-
var a:Number = 1732584193;
|
252
|
-
var b:Number = -271733879;
|
253
|
-
var c:Number = -1732584194;
|
254
|
-
var d:Number = 271733878;
|
255
|
-
|
256
|
-
for(var i:Number = 0; i < x.length; i += 16) {
|
257
|
-
var olda:Number = a;
|
258
|
-
var oldb:Number = b;
|
259
|
-
var oldc:Number = c;
|
260
|
-
var oldd:Number = d;
|
261
|
-
|
262
|
-
a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
|
263
|
-
d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
|
264
|
-
c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
|
265
|
-
b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
|
266
|
-
a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
|
267
|
-
d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
|
268
|
-
c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
|
269
|
-
b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
|
270
|
-
a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
|
271
|
-
d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
|
272
|
-
c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
|
273
|
-
b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
|
274
|
-
a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
|
275
|
-
d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
|
276
|
-
c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
|
277
|
-
b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
|
278
|
-
|
279
|
-
a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
|
280
|
-
d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
|
281
|
-
c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
|
282
|
-
b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
|
283
|
-
a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
|
284
|
-
d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
|
285
|
-
c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
|
286
|
-
b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
|
287
|
-
a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
|
288
|
-
d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
|
289
|
-
c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
|
290
|
-
b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
|
291
|
-
a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
|
292
|
-
d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
|
293
|
-
c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
|
294
|
-
b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
|
295
|
-
|
296
|
-
a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
|
297
|
-
d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
|
298
|
-
c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
|
299
|
-
b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
|
300
|
-
a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
|
301
|
-
d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
|
302
|
-
c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
|
303
|
-
b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
|
304
|
-
a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
|
305
|
-
d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
|
306
|
-
c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
|
307
|
-
b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
|
308
|
-
a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
|
309
|
-
d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
|
310
|
-
c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
|
311
|
-
b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
|
312
|
-
|
313
|
-
a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
|
314
|
-
d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
|
315
|
-
c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
|
316
|
-
b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
|
317
|
-
a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
|
318
|
-
d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
|
319
|
-
c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
|
320
|
-
b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
|
321
|
-
a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
|
322
|
-
d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
|
323
|
-
c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
|
324
|
-
b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
|
325
|
-
a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
|
326
|
-
d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
|
327
|
-
c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
|
328
|
-
b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
|
329
|
-
|
330
|
-
a = safe_add(a, olda);
|
331
|
-
b = safe_add(b, oldb);
|
332
|
-
c = safe_add(c, oldc);
|
333
|
-
d = safe_add(d, oldd);
|
334
|
-
}
|
335
|
-
return [a, b, c, d];
|
336
|
-
}
|
337
|
-
|
338
|
-
/*
|
339
|
-
* These functions implement the four basic operations the algorithm uses.
|
340
|
-
*/
|
341
|
-
public static function md5_cmn (q:Number, a:Number, b:Number, x:Number, s:Number, t:Number):Number {
|
342
|
-
return safe_add (bit_rol (safe_add (safe_add (a, q), safe_add(x, t)), s), b);
|
343
|
-
}
|
344
|
-
public static function md5_ff (a:Number, b:Number, c:Number, d:Number, x:Number, s:Number, t:Number):Number {
|
345
|
-
return md5_cmn ((b & c) | ((~b) & d), a, b, x, s, t);
|
346
|
-
}
|
347
|
-
public static function md5_gg (a:Number, b:Number, c:Number, d:Number, x:Number, s:Number, t:Number):Number {
|
348
|
-
return md5_cmn ((b & d) | (c & (~d)), a, b, x, s, t);
|
349
|
-
}
|
350
|
-
public static function md5_hh (a:Number, b:Number, c:Number, d:Number, x:Number, s:Number, t:Number):Number {
|
351
|
-
return md5_cmn (b ^ c ^ d, a, b, x, s, t);
|
352
|
-
}
|
353
|
-
public static function md5_ii (a:Number, b:Number, c:Number, d:Number, x:Number, s:Number, t:Number):Number {
|
354
|
-
return md5_cmn (c ^ (b | (~d)), a, b, x, s, t);
|
355
|
-
}
|
356
|
-
|
357
|
-
/*
|
358
|
-
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
|
359
|
-
* to work around bugs in some JS interpreters.
|
360
|
-
*/
|
361
|
-
public static function safe_add (x:Number, y:Number):Number {
|
362
|
-
var lsw:Number = (x & 0xFFFF) + (y & 0xFFFF);
|
363
|
-
var msw:Number = (x >> 16) + (y >> 16) + (lsw >> 16);
|
364
|
-
return (msw << 16) | (lsw & 0xFFFF);
|
365
|
-
}
|
366
|
-
|
367
|
-
/*
|
368
|
-
* Bitwise rotate a 32-bit number to the left.
|
369
|
-
*/
|
370
|
-
public static function bit_rol (num:Number, cnt:Number):Number {
|
371
|
-
return (num << cnt) | (num >>> (32 - cnt));
|
372
|
-
}
|
373
|
-
|
374
|
-
}
|
375
|
-
}
|