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.
- 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,118 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PEM
|
|
3
|
-
*
|
|
4
|
-
* A class to parse some PEM stuff.
|
|
5
|
-
* Copyright (c) 2007 Henri Torgemane
|
|
6
|
-
*
|
|
7
|
-
* See LICENSE.txt for full license information.
|
|
8
|
-
*/
|
|
9
|
-
package com.hurlant.util.der
|
|
10
|
-
{
|
|
11
|
-
import com.hurlant.crypto.rsa.RSAKey;
|
|
12
|
-
import com.hurlant.math.BigInteger;
|
|
13
|
-
import com.hurlant.util.Base64;
|
|
14
|
-
|
|
15
|
-
import flash.utils.ByteArray;
|
|
16
|
-
import com.hurlant.util.Hex;
|
|
17
|
-
|
|
18
|
-
public class PEM
|
|
19
|
-
{
|
|
20
|
-
private static const RSA_PRIVATE_KEY_HEADER:String = "-----BEGIN RSA PRIVATE KEY-----";
|
|
21
|
-
private static const RSA_PRIVATE_KEY_FOOTER:String = "-----END RSA PRIVATE KEY-----";
|
|
22
|
-
private static const RSA_PUBLIC_KEY_HEADER:String = "-----BEGIN PUBLIC KEY-----";
|
|
23
|
-
private static const RSA_PUBLIC_KEY_FOOTER:String = "-----END PUBLIC KEY-----";
|
|
24
|
-
private static const CERTIFICATE_HEADER:String = "-----BEGIN CERTIFICATE-----";
|
|
25
|
-
private static const CERTIFICATE_FOOTER:String = "-----END CERTIFICATE-----";
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
*
|
|
31
|
-
* Read a structure encoded according to
|
|
32
|
-
* ftp://ftp.rsasecurity.com/pub/pkcs/ascii/pkcs-1v2.asc
|
|
33
|
-
* section 11.1.2
|
|
34
|
-
*
|
|
35
|
-
* @param str
|
|
36
|
-
* @return
|
|
37
|
-
*
|
|
38
|
-
*/
|
|
39
|
-
public static function readRSAPrivateKey(str:String):RSAKey {
|
|
40
|
-
var der:ByteArray = extractBinary(RSA_PRIVATE_KEY_HEADER, RSA_PRIVATE_KEY_FOOTER, str);
|
|
41
|
-
if (der==null) return null;
|
|
42
|
-
var obj:* = DER.parse(der);
|
|
43
|
-
if (obj is Array) {
|
|
44
|
-
var arr:Array = obj as Array;
|
|
45
|
-
// arr[0] is Version. should be 0. should be checked. shoulda woulda coulda.
|
|
46
|
-
return new RSAKey(
|
|
47
|
-
arr[1], // N
|
|
48
|
-
arr[2].valueOf(), // E
|
|
49
|
-
arr[3], // D
|
|
50
|
-
arr[4], // P
|
|
51
|
-
arr[5], // Q
|
|
52
|
-
arr[6], // DMP1
|
|
53
|
-
arr[7], // DMQ1
|
|
54
|
-
arr[8]); // IQMP
|
|
55
|
-
} else {
|
|
56
|
-
// dunno
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Read a structure encoded according to some spec somewhere
|
|
64
|
-
* Also, follows some chunk from
|
|
65
|
-
* ftp://ftp.rsasecurity.com/pub/pkcs/ascii/pkcs-1v2.asc
|
|
66
|
-
* section 11.1
|
|
67
|
-
*
|
|
68
|
-
* @param str
|
|
69
|
-
* @return
|
|
70
|
-
*
|
|
71
|
-
*/
|
|
72
|
-
public static function readRSAPublicKey(str:String):RSAKey {
|
|
73
|
-
var der:ByteArray = extractBinary(RSA_PUBLIC_KEY_HEADER, RSA_PUBLIC_KEY_FOOTER, str);
|
|
74
|
-
if (der==null) return null;
|
|
75
|
-
var obj:* = DER.parse(der);
|
|
76
|
-
if (obj is Array) {
|
|
77
|
-
var arr:Array = obj as Array;
|
|
78
|
-
// arr[0] = [ <some crap that means "rsaEncryption">, null ]; ( apparently, that's an X-509 Algorithm Identifier.
|
|
79
|
-
if (arr[0][0].toString()!=OID.RSA_ENCRYPTION) {
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
// arr[1] is a ByteArray begging to be parsed as DER
|
|
83
|
-
arr[1].position = 1; // there's a 0x00 byte up front. find out why later. like, read a spec.
|
|
84
|
-
obj = DER.parse(arr[1]);
|
|
85
|
-
if (obj is Array) {
|
|
86
|
-
arr = obj as Array;
|
|
87
|
-
// arr[0] = modulus
|
|
88
|
-
// arr[1] = public expt.
|
|
89
|
-
return new RSAKey(arr[0], arr[1]);
|
|
90
|
-
} else {
|
|
91
|
-
return null;
|
|
92
|
-
}
|
|
93
|
-
} else {
|
|
94
|
-
// dunno
|
|
95
|
-
return null;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
public static function readCertIntoArray(str:String):ByteArray {
|
|
100
|
-
var tmp:ByteArray = extractBinary(CERTIFICATE_HEADER, CERTIFICATE_FOOTER, str);
|
|
101
|
-
return tmp;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
private static function extractBinary(header:String, footer:String, str:String):ByteArray {
|
|
105
|
-
var i:int = str.indexOf(header);
|
|
106
|
-
if (i==-1) return null;
|
|
107
|
-
i += header.length;
|
|
108
|
-
var j:int = str.indexOf(footer);
|
|
109
|
-
if (j==-1) return null;
|
|
110
|
-
var b64:String = str.substring(i, j);
|
|
111
|
-
// remove whitesapces.
|
|
112
|
-
b64 = b64.replace(/\s/mg, '');
|
|
113
|
-
// decode
|
|
114
|
-
return Base64.decodeToByteArray(b64);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PrintableString
|
|
3
|
-
*
|
|
4
|
-
* An ASN1 type for a PrintableString, held within a String
|
|
5
|
-
* Copyright (c) 2007 Henri Torgemane
|
|
6
|
-
*
|
|
7
|
-
* See LICENSE.txt for full license information.
|
|
8
|
-
*/
|
|
9
|
-
package com.hurlant.util.der
|
|
10
|
-
{
|
|
11
|
-
import flash.utils.ByteArray;
|
|
12
|
-
|
|
13
|
-
public class PrintableString implements IAsn1Type
|
|
14
|
-
{
|
|
15
|
-
protected var type:uint;
|
|
16
|
-
protected var len:uint;
|
|
17
|
-
protected var str:String;
|
|
18
|
-
|
|
19
|
-
public function PrintableString(type:uint, length:uint) {
|
|
20
|
-
this.type = type;
|
|
21
|
-
this.len = length;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
public function getLength():uint
|
|
25
|
-
{
|
|
26
|
-
return len;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
public function getType():uint
|
|
30
|
-
{
|
|
31
|
-
return type;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
public function setString(s:String):void {
|
|
35
|
-
str = s;
|
|
36
|
-
}
|
|
37
|
-
public function getString():String {
|
|
38
|
-
return str;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
public function toString():String {
|
|
42
|
-
return DER.indent+str;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
public function toDER():ByteArray {
|
|
46
|
-
return null; // XXX not implemented
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sequence
|
|
3
|
-
*
|
|
4
|
-
* An ASN1 type for a Sequence, implemented as an Array
|
|
5
|
-
* Copyright (c) 2007 Henri Torgemane
|
|
6
|
-
*
|
|
7
|
-
* See LICENSE.txt for full license information.
|
|
8
|
-
*/
|
|
9
|
-
package com.hurlant.util.der
|
|
10
|
-
{
|
|
11
|
-
import flash.utils.ByteArray;
|
|
12
|
-
|
|
13
|
-
public dynamic class Sequence extends Array implements IAsn1Type
|
|
14
|
-
{
|
|
15
|
-
protected var type:uint;
|
|
16
|
-
protected var len:uint;
|
|
17
|
-
|
|
18
|
-
public function Sequence(type:uint = 0x30, length:uint = 0x00) {
|
|
19
|
-
this.type = type;
|
|
20
|
-
this.len = length;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
public function getLength():uint
|
|
24
|
-
{
|
|
25
|
-
return len;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
public function getType():uint
|
|
29
|
-
{
|
|
30
|
-
return type;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public function toDER():ByteArray {
|
|
34
|
-
var tmp:ByteArray = new ByteArray;
|
|
35
|
-
for (var i:int=0;i<length;i++) {
|
|
36
|
-
var e:IAsn1Type = this[i];
|
|
37
|
-
if (e == null) { // XXX Arguably, I could have a der.Null class instead
|
|
38
|
-
tmp.writeByte(0x05);
|
|
39
|
-
tmp.writeByte(0x00);
|
|
40
|
-
} else {
|
|
41
|
-
tmp.writeBytes(e.toDER());
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return DER.wrapDER(type, tmp);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
public function toString():String {
|
|
48
|
-
var s:String = DER.indent;
|
|
49
|
-
DER.indent += " ";
|
|
50
|
-
var t:String = "";
|
|
51
|
-
for (var i:int=0;i<length;i++) {
|
|
52
|
-
if (this[i]==null) continue;
|
|
53
|
-
var found:Boolean = false;
|
|
54
|
-
for (var key:String in this) {
|
|
55
|
-
if ( (i.toString()!=key) && this[i]==this[key]) {
|
|
56
|
-
t += key+": "+this[i]+"\n";
|
|
57
|
-
found = true;
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
if (!found) t+=this[i]+"\n";
|
|
62
|
-
}
|
|
63
|
-
// var t:String = join("\n");
|
|
64
|
-
DER.indent= s;
|
|
65
|
-
return DER.indent+"Sequence["+type+"]["+len+"][\n"+t+"\n"+s+"]";
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/////////
|
|
69
|
-
|
|
70
|
-
public function findAttributeValue(oid:String):IAsn1Type {
|
|
71
|
-
for each (var set:* in this) {
|
|
72
|
-
if (set is Set) {
|
|
73
|
-
var child:* = set[0];
|
|
74
|
-
if (child is Sequence) {
|
|
75
|
-
var tmp:* = child[0];
|
|
76
|
-
if (tmp is ObjectIdentifier) {
|
|
77
|
-
var id:ObjectIdentifier = tmp as ObjectIdentifier;
|
|
78
|
-
if (id.toString()==oid) {
|
|
79
|
-
return child[1] as IAsn1Type;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return null;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Set
|
|
3
|
-
*
|
|
4
|
-
* An ASN1 type for an Set, that extends a Sequence
|
|
5
|
-
* Copyright (c) 2007 Henri Torgemane
|
|
6
|
-
*
|
|
7
|
-
* See LICENSE.txt for full license information.
|
|
8
|
-
*/
|
|
9
|
-
package com.hurlant.util.der
|
|
10
|
-
{
|
|
11
|
-
public dynamic class Set extends Sequence implements IAsn1Type
|
|
12
|
-
{
|
|
13
|
-
public function Set(type:uint = 0x31, length:uint = 0x00) {
|
|
14
|
-
super(type, length);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
public override function toString():String {
|
|
19
|
-
var s:String = DER.indent;
|
|
20
|
-
DER.indent += " ";
|
|
21
|
-
var t:String = join("\n");
|
|
22
|
-
DER.indent= s;
|
|
23
|
-
return DER.indent+"Set["+type+"]["+len+"][\n"+t+"\n"+s+"]";
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type
|
|
3
|
-
*
|
|
4
|
-
* A few Asn-1 structures
|
|
5
|
-
* Copyright (c) 2007 Henri Torgemane
|
|
6
|
-
*
|
|
7
|
-
* See LICENSE.txt for full license information.
|
|
8
|
-
*/
|
|
9
|
-
package com.hurlant.util.der
|
|
10
|
-
{
|
|
11
|
-
import com.hurlant.util.Hex;
|
|
12
|
-
|
|
13
|
-
public class Type
|
|
14
|
-
{
|
|
15
|
-
public static const TLS_CERT:Array = [
|
|
16
|
-
{name:"signedCertificate", extract:true, value: [
|
|
17
|
-
{name:"versionHolder", optional:true, value: [
|
|
18
|
-
{name:"version"}
|
|
19
|
-
], defaultValue: function():Sequence{
|
|
20
|
-
var s:Sequence = new Sequence(0, 0);
|
|
21
|
-
var v:Integer = new Integer(2,1, Hex.toArray("00"));
|
|
22
|
-
s.push(v);
|
|
23
|
-
s.version = v;
|
|
24
|
-
return s;
|
|
25
|
-
}()
|
|
26
|
-
},
|
|
27
|
-
{name:"serialNumber"},
|
|
28
|
-
{name:"signature", value: [
|
|
29
|
-
{name:"algorithmId"}
|
|
30
|
-
]},
|
|
31
|
-
{name:"issuer", extract:true, value: [
|
|
32
|
-
{name:"type"},
|
|
33
|
-
{name:"value"}
|
|
34
|
-
]},
|
|
35
|
-
{name:"validity", value: [
|
|
36
|
-
{name:"notBefore"},
|
|
37
|
-
{name:"notAfter"}
|
|
38
|
-
]},
|
|
39
|
-
{name:"subject", extract:true, value: [
|
|
40
|
-
]},
|
|
41
|
-
{name:"subjectPublicKeyInfo", value: [
|
|
42
|
-
{name:"algorithm", value: [
|
|
43
|
-
{name:"algorithmId"}
|
|
44
|
-
]},
|
|
45
|
-
{name:"subjectPublicKey"}
|
|
46
|
-
]},
|
|
47
|
-
{name:"extensions", value: [
|
|
48
|
-
]}
|
|
49
|
-
]},
|
|
50
|
-
{name:"algorithmIdentifier",value:[
|
|
51
|
-
{name:"algorithmId"}
|
|
52
|
-
]},
|
|
53
|
-
{name:"encrypted", value:null}
|
|
54
|
-
];
|
|
55
|
-
public static const CERTIFICATE:Array = [
|
|
56
|
-
{name:"tbsCertificate", value:[
|
|
57
|
-
{name:"tag0", value:[
|
|
58
|
-
{name:"version"}
|
|
59
|
-
]},
|
|
60
|
-
{name:"serialNumber"},
|
|
61
|
-
{name:"signature"},
|
|
62
|
-
{name:"issuer", value:[
|
|
63
|
-
{name:"type"},
|
|
64
|
-
{name:"value"}
|
|
65
|
-
]},
|
|
66
|
-
{name:"validity", value:[
|
|
67
|
-
{name:"notBefore"},
|
|
68
|
-
{name:"notAfter"}
|
|
69
|
-
]},
|
|
70
|
-
{name:"subject"},
|
|
71
|
-
{name:"subjectPublicKeyInfo", value:[
|
|
72
|
-
{name:"algorithm"},
|
|
73
|
-
{name:"subjectPublicKey"}
|
|
74
|
-
]},
|
|
75
|
-
{name:"issuerUniqueID"},
|
|
76
|
-
{name:"subjectUniqueID"},
|
|
77
|
-
{name:"extensions"}
|
|
78
|
-
]},
|
|
79
|
-
{name:"signatureAlgorithm"},
|
|
80
|
-
{name:"signatureValue"}
|
|
81
|
-
];
|
|
82
|
-
public static const RSA_PUBLIC_KEY:Array = [
|
|
83
|
-
{name:"modulus"},
|
|
84
|
-
{name:"publicExponent"}
|
|
85
|
-
];
|
|
86
|
-
public static const RSA_SIGNATURE:Array = [
|
|
87
|
-
{name:"algorithm", value:[
|
|
88
|
-
{name:"algorithmId"}
|
|
89
|
-
]},
|
|
90
|
-
{name:"hash"}
|
|
91
|
-
];
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* UTCTime
|
|
3
|
-
*
|
|
4
|
-
* An ASN1 type for UTCTime, represented as a Date
|
|
5
|
-
* Copyright (c) 2007 Henri Torgemane
|
|
6
|
-
*
|
|
7
|
-
* See LICENSE.txt for full license information.
|
|
8
|
-
*/
|
|
9
|
-
package com.hurlant.util.der
|
|
10
|
-
{
|
|
11
|
-
import flash.utils.ByteArray;
|
|
12
|
-
|
|
13
|
-
public class UTCTime implements IAsn1Type
|
|
14
|
-
{
|
|
15
|
-
protected var type:uint;
|
|
16
|
-
protected var len:uint;
|
|
17
|
-
public var date:Date;
|
|
18
|
-
|
|
19
|
-
public function UTCTime(type:uint, len:uint)
|
|
20
|
-
{
|
|
21
|
-
this.type = type;
|
|
22
|
-
this.len = len;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
public function getLength():uint
|
|
26
|
-
{
|
|
27
|
-
return len;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
public function getType():uint
|
|
31
|
-
{
|
|
32
|
-
return type;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
public function setUTCTime(str:String):void {
|
|
36
|
-
|
|
37
|
-
var year:uint = parseInt(str.substr(0, 2));
|
|
38
|
-
if (year<50) {
|
|
39
|
-
year+=2000;
|
|
40
|
-
} else {
|
|
41
|
-
year+=1900;
|
|
42
|
-
}
|
|
43
|
-
var month:uint = parseInt(str.substr(2,2));
|
|
44
|
-
var day:uint = parseInt(str.substr(4,2));
|
|
45
|
-
var hour:uint = parseInt(str.substr(6,2));
|
|
46
|
-
var minute:uint = parseInt(str.substr(8,2));
|
|
47
|
-
// XXX this could be off by up to a day. parse the rest. someday.
|
|
48
|
-
date = new Date(year, month-1, day, hour, minute);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
public function toString():String {
|
|
53
|
-
return DER.indent+"UTCTime["+type+"]["+len+"]["+date+"]";
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
public function toDER():ByteArray {
|
|
57
|
-
return null // XXX not implemented
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
Lincense: Public Domain
|
|
3
|
-
-->
|
|
4
|
-
|
|
5
|
-
<html><head>
|
|
6
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
7
|
-
<title>Sample of web_socket.js</title>
|
|
8
|
-
|
|
9
|
-
<!-- Include these three JS files: -->
|
|
10
|
-
<script type="text/javascript" src="swfobject.js"></script>
|
|
11
|
-
<script type="text/javascript" src="FABridge.js"></script>
|
|
12
|
-
<script type="text/javascript" src="web_socket.js"></script>
|
|
13
|
-
|
|
14
|
-
<script type="text/javascript">
|
|
15
|
-
|
|
16
|
-
// Set URL of your WebSocketMain.swf here:
|
|
17
|
-
WEB_SOCKET_SWF_LOCATION = "WebSocketMain.swf";
|
|
18
|
-
// Set this to dump debug message from Flash to console.log:
|
|
19
|
-
WEB_SOCKET_DEBUG = true;
|
|
20
|
-
|
|
21
|
-
// Everything below is the same as using standard WebSocket.
|
|
22
|
-
|
|
23
|
-
var ws;
|
|
24
|
-
|
|
25
|
-
function init() {
|
|
26
|
-
|
|
27
|
-
// Connect to Web Socket.
|
|
28
|
-
// Change host/port here to your own Web Socket server.
|
|
29
|
-
ws = new WebSocket("ws://localhost:10081/");
|
|
30
|
-
|
|
31
|
-
// Set event handlers.
|
|
32
|
-
ws.onopen = function() {
|
|
33
|
-
output("onopen");
|
|
34
|
-
};
|
|
35
|
-
ws.onmessage = function(e) {
|
|
36
|
-
// e.data contains received string.
|
|
37
|
-
output("onmessage: " + e.data);
|
|
38
|
-
};
|
|
39
|
-
ws.onclose = function() {
|
|
40
|
-
output("onclose");
|
|
41
|
-
};
|
|
42
|
-
ws.onerror = function() {
|
|
43
|
-
output("onerror");
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
function onSubmit() {
|
|
49
|
-
var input = document.getElementById("input");
|
|
50
|
-
// You can send message to the Web Socket using ws.send.
|
|
51
|
-
ws.send(input.value);
|
|
52
|
-
output("send: " + input.value);
|
|
53
|
-
input.value = "";
|
|
54
|
-
input.focus();
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function onCloseClick() {
|
|
58
|
-
ws.close();
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function output(str) {
|
|
62
|
-
var log = document.getElementById("log");
|
|
63
|
-
var escaped = str.replace(/&/, "&").replace(/</, "<").
|
|
64
|
-
replace(/>/, ">").replace(/"/, """); // "
|
|
65
|
-
log.innerHTML = escaped + "<br>" + log.innerHTML;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
</script>
|
|
69
|
-
</head><body onload="init();">
|
|
70
|
-
<form onsubmit="onSubmit(); return false;">
|
|
71
|
-
<input type="text" id="input">
|
|
72
|
-
<input type="submit" value="Send">
|
|
73
|
-
<button onclick="onCloseClick(); return false;">close</button>
|
|
74
|
-
</form>
|
|
75
|
-
<div id="log"></div>
|
|
76
|
-
</body></html>
|