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 / CTRMode.as
1 /**\r
2  * CTRMode\r
3  * \r
4  * An ActionScript 3 implementation of the counter 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 flash.utils.ByteArray;\r
12 \r
13         public class CTRMode extends IVMode implements IMode\r
14         {\r
15 \r
16                 public function CTRMode(key:ISymmetricKey, padding:IPad = null) {\r
17                         super(key, padding);\r
18                 }\r
19                 \r
20                 public function encrypt(src:ByteArray):void\r
21                 {\r
22                         padding.pad(src);\r
23                         var vector:ByteArray = getIV4e();\r
24                         core(src, vector);\r
25                 }\r
26                 \r
27                 public function decrypt(src:ByteArray):void\r
28                 {\r
29                         var vector:ByteArray = getIV4d();\r
30                         core(src, vector);\r
31                         padding.unpad(src);\r
32                 }\r
33                 \r
34                 private function core(src:ByteArray, iv:ByteArray):void {\r
35                         var X:ByteArray = new ByteArray;\r
36                         var Xenc:ByteArray = new ByteArray;\r
37                         X.writeBytes(iv);\r
38                         for (var i:uint=0;i<src.length;i+=blockSize) {\r
39                                 Xenc.position=0;\r
40                                 Xenc.writeBytes(X);\r
41                                 key.encrypt(Xenc);\r
42                                 for (var j:uint=0;j<blockSize;j++) {\r
43                                         src[i+j] ^= Xenc[j];\r
44                                 }\r
45                                 \r
46                                 for (j=blockSize-1;j>=0;--j) {\r
47                                         X[j]++;\r
48                                         if (X[j]!=0)\r
49                                                 break;\r
50                                 }\r
51                         }\r
52                 }\r
53                 public function toString():String {\r
54                         return key.toString()+"-ctr";\r
55                 }\r
56                 \r
57         }\r
58 }