PageRenderTime 28ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/js/lib/Socket.IO-node/support/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/CFBMode.as

http://github.com/onedayitwillmake/RealtimeMultiplayerNodeJs
ActionScript | 64 lines | 44 code | 6 blank | 14 comment | 4 complexity | a4b22efc1a102dd1b6b147ff357bd920 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1, MPL-2.0-no-copyleft-exception, BSD-3-Clause
  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. * This is the "full" CFB.
  14. * CFB1 and CFB8 are hiding somewhere else.
  15. *
  16. * Note: The constructor accepts an optional padding argument, but ignores it otherwise.
  17. */
  18. public class CFBMode extends IVMode implements IMode
  19. {
  20. public function CFBMode(key:ISymmetricKey, padding:IPad = null) {
  21. super(key,null);
  22. }
  23. public function encrypt(src:ByteArray):void
  24. {
  25. var l:uint = src.length;
  26. var vector:ByteArray = getIV4e();
  27. for (var i:uint=0;i<src.length;i+=blockSize) {
  28. key.encrypt(vector);
  29. var chunk:uint = (i+blockSize<l)?blockSize:l-i;
  30. for (var j:uint=0;j<chunk;j++) {
  31. src[i+j] ^= vector[j];
  32. }
  33. vector.position=0;
  34. vector.writeBytes(src, i, chunk);
  35. }
  36. }
  37. public function decrypt(src:ByteArray):void
  38. {
  39. var l:uint = src.length;
  40. var vector:ByteArray = getIV4d();
  41. var tmp:ByteArray = new ByteArray;
  42. for (var i:uint=0;i<src.length;i+=blockSize) {
  43. key.encrypt(vector);
  44. var chunk:uint = (i+blockSize<l)?blockSize:l-i;
  45. tmp.position=0;
  46. tmp.writeBytes(src, i, chunk);
  47. for (var j:uint=0;j<chunk;j++) {
  48. src[i+j] ^= vector[j];
  49. }
  50. vector.position=0;
  51. vector.writeBytes(tmp);
  52. }
  53. }
  54. public function toString():String {
  55. return key.toString()+"-cfb";
  56. }
  57. }
  58. }