File: chat-websocket/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSTest.as

Recommend this page to a friend!
  Classes of Igor Escobar   Terminal Crossword   chat-websocket/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSTest.as   Download  
File: chat-websocket/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSTest.as
Role: Example script
Content type: text/plain
Description: Example script
Class: Terminal Crossword
Generate a crosswords board on a text console
Author: By
Last change:
Date: 2 years ago
Size: 5,908 bytes
 

Contents

Class file image Download
/** * TLSTest * * A test class for TLS. Not a finished product. * Copyright (c) 2007 Henri Torgemane * * See LICENSE.txt for full license information. */ package com.hurlant.crypto.tls { import com.hurlant.crypto.cert.X509Certificate; import com.hurlant.crypto.cert.X509CertificateCollection; import com.hurlant.util.Hex; import com.hurlant.util.der.PEM; import flash.events.Event; import flash.events.ProgressEvent; import flash.net.Socket; import flash.utils.ByteArray; import flash.utils.getTimer; public class TLSTest { public var myDebugData:String; //[Embed(source="/src/host.cert",mimeType="application/octet-stream")] public var myCert:Class; //[Embed(source="/src/host.key",mimeType="application/octet-stream")] public var myKey:Class; public function TLSTest(host:String = null, port:int = 0, type:int = 0 ) { //loopback(); if (host != null) { if (type == 0) { // SSL 3.0 connectLoginYahooCom(); // connectLocalSSL(host, port); } else { connectLocalTLS(host, port); } } else { testSocket(); } } public function connectLoginYahooCom():void { trace("Connecting test socket"); var s:Socket = new Socket("esx.bluebearllc.net", 903); var clientConfig:TLSConfig = new TLSConfig(TLSEngine.CLIENT, null, null, null, null, null, SSLSecurityParameters.PROTOCOL_VERSION); var client:TLSEngine = new TLSEngine(clientConfig, s, s); // hook some events. s.addEventListener(ProgressEvent.SOCKET_DATA, client.dataAvailable); client.addEventListener(ProgressEvent.SOCKET_DATA, function(e:*):void { s.flush(); }); client.start(); } public function connectLocalTLS(host:String, port:int):void { var s:Socket = new Socket(host, port); var clientConfig:TLSConfig = new TLSConfig(TLSEngine.CLIENT); var client:TLSEngine = new TLSEngine(clientConfig, s, s); // hook some events. s.addEventListener(ProgressEvent.SOCKET_DATA, client.dataAvailable); client.addEventListener(ProgressEvent.SOCKET_DATA, function(e:*):void { s.flush(); }); client.start(); } public function connectLocalSSL(host:String, port:int):void { var s:Socket = new Socket(host, port); var clientConfig:TLSConfig = new TLSConfig(TLSEngine.CLIENT, null, null, null, null, null, SSLSecurityParameters.PROTOCOL_VERSION); var client:TLSEngine = new TLSEngine(clientConfig, s, s); // hook some events. s.addEventListener(ProgressEvent.SOCKET_DATA, client.dataAvailable); client.addEventListener(ProgressEvent.SOCKET_DATA, function(e:*):void { s.flush(); }); client.start(); } public function loopback():void { var server_write:ByteArray = new ByteArray; var client_write:ByteArray = new ByteArray; var server_write_cursor:uint = 0; var client_write_cursor:uint = 0; var clientConfig:TLSConfig = new TLSConfig(TLSEngine.CLIENT, null, null, null, null, null, SSLSecurityParameters.PROTOCOL_VERSION); var serverConfig:TLSConfig = new TLSConfig(TLSEngine.SERVER, null, null, null, null, null, SSLSecurityParameters.PROTOCOL_VERSION); var cert:ByteArray = new myCert; var key:ByteArray = new myKey; serverConfig.setPEMCertificate(cert.readUTFBytes(cert.length), key.readUTFBytes(key.length)); // tmp, for debugging. currently useless cert.position = 0; key.position = 0; clientConfig.setPEMCertificate(cert.readUTFBytes(cert.length), key.readUTFBytes(key.length)); // put the server cert in the client's trusted store, to keep things happy. clientConfig.CAStore = new X509CertificateCollection; cert.position = 0; var x509:X509Certificate = new X509Certificate(PEM.readCertIntoArray(cert.readUTFBytes(cert.length))); clientConfig.CAStore.addCertificate(x509); var server:TLSEngine = new TLSEngine(serverConfig, client_write, server_write); var client:TLSEngine = new TLSEngine(clientConfig, server_write, client_write); server.addEventListener(ProgressEvent.SOCKET_DATA, function(e:*=null):void { trace("server wrote something!"); trace(Hex.fromArray(server_write)); var l:uint = server_write.position; server_write.position = server_write_cursor; client.dataAvailable(e); server_write.position = l; server_write_cursor = l; }); client.addEventListener(ProgressEvent.SOCKET_DATA, function(e:*=null):void { trace("client wrote something!"); trace(Hex.fromArray(client_write)); var l:uint = client_write.position; client_write.position = client_write_cursor; server.dataAvailable(e); client_write.position = l; client_write_cursor = l; }); server.start(); client.start(); } public function testSocket():void { var hosts:Array = [ "bugs.adobe.com", // apache "login.yahoo.com", // apache, bigger response "login.live.com", // IIS-6, chain of 3 certs "banking.wellsfargo.com", // custom, sends its CA cert along for the ride. "www.bankofamerica.com" // sun-one, chain of 3 certs ]; var i:int =0; (function next():void { testHost(hosts[i++], next); })(); } private function testHost(host:String, next:Function):void { if (host==null) return; var t1:int = getTimer(); var host:String = host; var t:TLSSocket = new TLSSocket; t.connect(host, 4433); t.writeUTFBytes("GET / HTTP/1.0\nHost: "+host+"\n\n"); t.addEventListener(Event.CLOSE, function(e:*):void { var s:String = t.readUTFBytes(t.bytesAvailable); trace("Response from "+host+": "+s.length+" characters"); var bytes:ByteArray = new ByteArray(); t.readBytes(bytes, 0, t.bytesAvailable); trace(Hex.fromArray(bytes)); trace("Time used = "+(getTimer()-t1)+"ms"); next(); }); } } }