From b60df56157ee1fd0bd4938799bac05a62fda91a1 Mon Sep 17 00:00:00 2001 From: lookshe Date: Sat, 14 Mar 2015 20:45:20 +0100 Subject: initial commit from working version --- .../com/hurlant/crypto/symmetric/XTeaKey.as | 94 ++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 signaling-server/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/XTeaKey.as (limited to 'signaling-server/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/XTeaKey.as') diff --git a/signaling-server/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/XTeaKey.as b/signaling-server/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/XTeaKey.as new file mode 100644 index 0000000..9d140dd --- /dev/null +++ b/signaling-server/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/XTeaKey.as @@ -0,0 +1,94 @@ +/** + * XTeaKey + * + * An ActionScript 3 implementation of the XTea algorithm + * Copyright (c) 2007 Henri Torgemane + * + * See LICENSE.txt for full license information. + */ +package com.hurlant.crypto.symmetric +{ + import com.hurlant.crypto.prng.Random; + import com.hurlant.util.Memory; + + import flash.utils.ByteArray; + + + public class XTeaKey implements ISymmetricKey + { + public const NUM_ROUNDS:uint = 64; + private var k:Array; + + public function XTeaKey(a:ByteArray) { + a.position=0; + k = [a.readUnsignedInt(),a.readUnsignedInt(),a.readUnsignedInt(),a.readUnsignedInt()]; + } + /** + * K is an hex string with 32 digits. + */ + public static function parseKey(K:String):XTeaKey { + var a:ByteArray = new ByteArray; + a.writeUnsignedInt(parseInt(K.substr(0,8),16)); + a.writeUnsignedInt(parseInt(K.substr(8,8),16)); + a.writeUnsignedInt(parseInt(K.substr(16,8),16)); + a.writeUnsignedInt(parseInt(K.substr(24,8),16)); + a.position = 0; + return new XTeaKey(a); + } + + public function getBlockSize():uint { + return 8; + } + + public function encrypt(block:ByteArray, index:uint=0):void { + block.position = index; + var v0:uint = block.readUnsignedInt(); + var v1:uint = block.readUnsignedInt(); + var i:uint; + var sum:uint =0; + var delta:uint = 0x9E3779B9; + for (i=0; i> 5)) + v1) ^ (sum + k[sum & 3]); + sum += delta; + v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]); + } + block.position-=8; + block.writeUnsignedInt(v0); + block.writeUnsignedInt(v1); + } + + public function decrypt(block:ByteArray, index:uint=0):void { + block.position = index; + var v0:uint = block.readUnsignedInt(); + var v1:uint = block.readUnsignedInt(); + var i:uint; + var delta:uint = 0x9E3779B9; + var sum:uint = delta*NUM_ROUNDS; + for (i=0; i> 5)) + v0) ^ (sum + k[(sum>>11) & 3]); + sum -= delta; + v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]); + } + block.position-=8; + block.writeUnsignedInt(v0); + block.writeUnsignedInt(v1); + } + + public function dispose():void { + //private var k:Array; + var r:Random = new Random; + for (var i:uint=0;i