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 / TripleDESKey.as
1 /**\r
2  * TripleDESKey\r
3  * \r
4  * An Actionscript 3 implementation of Triple DES\r
5  * Copyright (c) 2007 Henri Torgemane\r
6  * \r
7  * Derived from:\r
8  *              The Bouncy Castle Crypto package, \r
9  *              Copyright (c) 2000-2004 The Legion Of The Bouncy Castle\r
10  *              (http://www.bouncycastle.org)\r
11  * \r
12  * See LICENSE.txt for full license information.\r
13  */\r
14 package com.hurlant.crypto.symmetric\r
15 {\r
16         import flash.utils.ByteArray;\r
17         import com.hurlant.util.Memory;\r
18         import com.hurlant.util.Hex;\r
19 \r
20         public class TripleDESKey extends DESKey\r
21         {\r
22                 protected var encKey2:Array;\r
23                 protected var encKey3:Array;\r
24                 protected var decKey2:Array;\r
25                 protected var decKey3:Array;\r
26                 \r
27                 /**\r
28                  * This supports 2TDES and 3TDES.\r
29                  * If the key passed is 128 bits, 2TDES is used.\r
30                  * If the key has 192 bits, 3TDES is used.\r
31                  * Other key lengths give "undefined" results.\r
32                  */\r
33                 public function TripleDESKey(key:ByteArray)\r
34                 {\r
35                         super(key);\r
36                         encKey2 = generateWorkingKey(false, key, 8);\r
37                         decKey2 = generateWorkingKey(true, key, 8);\r
38                         if (key.length>16) {\r
39                                 encKey3 = generateWorkingKey(true, key, 16);\r
40                                 decKey3 = generateWorkingKey(false, key, 16);\r
41                         } else {\r
42                                 encKey3 = encKey;\r
43                                 decKey3 = decKey;\r
44                         }\r
45                 }\r
46 \r
47                 public override function dispose():void\r
48                 {\r
49                         super.dispose();\r
50                         var i:uint = 0;\r
51                         if (encKey2!=null) {\r
52                                 for (i=0;i<encKey2.length;i++) { encKey2[i]=0; }\r
53                                 encKey2=null;\r
54                         }\r
55                         if (encKey3!=null) {\r
56                                 for (i=0;i<encKey3.length;i++) { encKey3[i]=0; }\r
57                                 encKey3=null;\r
58                         }\r
59                         if (decKey2!=null) {\r
60                                 for (i=0;i<decKey2.length;i++) { decKey2[i]=0; }\r
61                                 decKey2=null\r
62                         }\r
63                         if (decKey3!=null) {\r
64                                 for (i=0;i<decKey3.length;i++) { decKey3[i]=0; }\r
65                                 decKey3=null;\r
66                         }\r
67                         Memory.gc();\r
68                 }\r
69                 \r
70                 public override function encrypt(block:ByteArray, index:uint=0):void\r
71                 {\r
72                         desFunc(encKey, block,index, block,index);\r
73                         desFunc(encKey2, block,index, block,index);\r
74                         desFunc(encKey3, block,index, block,index);\r
75                 }\r
76                 \r
77                 public override function decrypt(block:ByteArray, index:uint=0):void\r
78                 {\r
79                         desFunc(decKey3, block, index, block, index);\r
80                         desFunc(decKey2, block, index, block, index);\r
81                         desFunc(decKey, block, index, block, index);\r
82                 }\r
83                 \r
84                 public override function toString():String {\r
85                         return "3des";\r
86                 }\r
87         }\r
88 }