/* Ċ Ġ* Ġ ĠCopyright Ġ 2 0 2 0 ĠThe Vi per Show Ċ Ġ* Ċ Ġ* Ġ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ġ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ*/ Ċ Ċ package Ġme . the viper show . connection protocol . tcp Ċ Ċ import Ġio . netty . buffer . Byte Buf Ċ import Ġio . netty . channel . Channel HandlerContext Ċ import Ġio . netty . handler . codec . Byte To Message Codec Ċ import Ġme . the viper show . connection protocol . Session Ċ Ċ class ĠTCP Packet Encrypt or ( private Ġval Ġsession : ĠSession ) Ġ: ĠByte To Message Codec < Byte Buf >() Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġdecrypted Array Ġ= ĠByteArray ( 0 ) ĊĠĠĠ Ġprivate Ġvar Ġencrypted Array Ġ= ĠByteArray ( 0 ) ĊĊĠĠĠ Ġoverride Ġfun Ġencode ( ctx : ĠChannel HandlerContext , Ġinput : ĠByte Buf , Ġout : ĠByte Buf ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . session . get Packet Protocol (). get Encryption () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġinput . readable Bytes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= Ġthis . getBytes ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Length Ġ= Ġthis . session . get Packet Protocol (). get Encryption () !!. get Encrypt Output Size ( length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . encrypted Array . size Ġ< Ġout Length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . encrypted Array Ġ= ĠByteArray ( out Length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . write Bytes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . encrypted Array , Ġ 0 , Ġthis . session . get Packet Protocol (). get Encryption () !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. encrypt ( bytes , Ġ 0 , Ġlength , Ġthis . encrypted Array , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . write Bytes ( input ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdecode ( ctx : ĠChannel HandlerContext , Ġbuf : ĠByte Buf , Ġout : ĠMutable List < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . session . get Packet Protocol (). get Encryption () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġbuf . readable Bytes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= Ġthis . getBytes ( buf ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . alloc (). heap Buffer ( this . session . get Packet Protocol (). get Encryption () !!. get Decrypt Output Size ( length )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . writer Index ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . session . get Packet Protocol (). get Encryption () !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. decrypt ( bytes , Ġ 0 , Ġlength , Ġresult . array (), Ġresult . array Offset ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . add ( buf . read Bytes ( buf . readable Bytes ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Bytes ( buf : ĠByte Buf ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġbuf . readable Bytes () ĊĠĠĠĠĠĠĠ Ġif Ġ( this . de crypted Array . size Ġ< Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . de crypted Array Ġ= ĠByteArray ( length ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuf . read Bytes ( this . de crypted Array , Ġ 0 , Ġlength ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . de crypted Array ĊĠĠĠ Ġ} Ċ }