Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / socket.io-client / lib / vendor / web-socket-js / flash-src / com / hurlant / crypto / symmetric / CFB8Mode.as
1 /**\r
2  * CFB8Mode\r
3  * \r
4  * An ActionScript 3 implementation of the CFB-8 confidentiality mode\r
5  * Copyright (c) 2007 Henri Torgemane\r
6  * \r
7  * See LICENSE.txt for full license information.\r
8  */\r
9 package com.hurlant.crypto.symmetric\r
10 {\r
11         import com.hurlant.crypto.tests.TestCase;\r
12         import flash.utils.ByteArray;\r
13 \r
14         /**\r
15          * \r
16          * Note: The constructor accepts an optional padding argument, but ignores it otherwise.\r
17          */\r
18         public class CFB8Mode extends IVMode implements IMode\r
19         {\r
20                 public function CFB8Mode(key:ISymmetricKey, padding:IPad = null) {\r
21                         super(key, null);\r
22                 }\r
23                 \r
24                 public function encrypt(src:ByteArray):void {\r
25                         var vector:ByteArray = getIV4e();\r
26                         var tmp:ByteArray = new ByteArray;\r
27                         for (var i:uint=0;i<src.length;i++) {\r
28                                 tmp.position = 0;\r
29                                 tmp.writeBytes(vector);\r
30                                 key.encrypt(vector);\r
31                                 src[i] ^= vector[0];\r
32                                 // rotate\r
33                                 for (var j:uint=0;j<blockSize-1;j++) {\r
34                                         vector[j] = tmp[j+1];\r
35                                 }\r
36                                 vector[blockSize-1] = src[i];\r
37                         }\r
38                 }\r
39                 \r
40                 public function decrypt(src:ByteArray):void {\r
41                         var vector:ByteArray = getIV4d();\r
42                         var tmp:ByteArray = new ByteArray;\r
43                         for (var i:uint=0;i<src.length;i++) {\r
44                                 var c:uint = src[i];\r
45                                 tmp.position = 0;\r
46                                 tmp.writeBytes(vector); // I <- tmp\r
47                                 key.encrypt(vector);    // O <- vector\r
48                                 src[i] ^= vector[0];\r
49                                 // rotate\r
50                                 for (var j:uint=0;j<blockSize-1;j++) {\r
51                                         vector[j] = tmp[j+1];\r
52                                 }\r
53                                 vector[blockSize-1] = c;\r
54                         }\r
55 \r
56                 }\r
57                 public function toString():String {\r
58                         return key.toString()+"-cfb8";\r
59                 }\r
60         }\r
61 }