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 / TLSPad.as
1 /**\r
2  * TLSPad\r
3  * \r
4  * A padding implementation used by TLS\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         import flash.utils.ByteArray;\r
11         import com.hurlant.util.Hex;\r
12         import com.hurlant.crypto.tls.TLSError;\r
13         \r
14         public class TLSPad implements IPad {\r
15                 private var blockSize:uint;\r
16                 \r
17                 public function TLSPad(blockSize:uint=0) {\r
18                         this.blockSize = blockSize;\r
19                 }\r
20                 public function pad(a:ByteArray):void {\r
21                         var c:uint = blockSize - (a.length+1)%blockSize;\r
22                         for (var i:uint=0;i<=c;i++) {\r
23                                 a[a.length] = c;\r
24                         }\r
25                 }\r
26                 public function unpad(a:ByteArray):void {\r
27                         var c:uint = a.length%blockSize;\r
28                         if (c!=0) throw new TLSError("TLSPad::unpad: ByteArray.length isn't a multiple of the blockSize", TLSError.bad_record_mac);\r
29                         c = a[a.length-1];\r
30                         for (var i:uint=c;i>0;i--) {\r
31                                 var v:uint = a[a.length-1];\r
32                                 a.length--;\r
33                                 if (c!=v) throw new TLSError("TLSPad:unpad: Invalid padding value. expected ["+c+"], found ["+v+"]", TLSError.bad_record_mac);\r
34                         }\r
35                         a.length--;\r
36                         // mostly ripped off from PKCS5.as, but with subtle differences\r
37                 }\r
38                 public function setBlockSize(bs:uint):void {\r
39                         blockSize = bs;\r
40                 }\r
41         }\r
42 }