package Ġnet . th aler it . sal ty rtc . core . entity . messages . client Ċ Ċ import Ġnet . th aler it . sal ty rtc . api .* Ċ import Ġnet . th aler it . sal ty rtc . core . Sal ty Rtc Client Ċ import Ġnet . th aler it . sal ty rtc . core . entity . message Ċ import Ġnet . th aler it . sal ty rtc . core . entity . messages . data Ċ import Ġnet . th aler it . sal ty rtc . core . entity . messages . task Ċ import Ġnet . th aler it . sal ty rtc . core . entity . messages . tasks Ċ import Ġnet . th aler it . sal ty rtc . core . entity . messages . your Cookie Ċ import Ġnet . th aler it . sal ty rtc . core . util . require Fields Ċ import Ġnet . th aler it . sal ty rtc . core . util . require Type Ċ import Ġnet . th aler it . sal ty rtc . crypto . Cipher Text Ċ import Ġnet . th aler it . sal ty rtc . crypto . Shared Key Ċ import Ġnet . th aler it . sal ty rtc . crypto . decrypt Ċ import Ġnet . th aler it . sal ty rtc . crypto . encrypt ĊĊ Ċ fun ĠS alty Rtc Client . auth Message ( ĊĠĠĠ Ġit : ĠMessage , ĊĠĠĠ Ġshared Key : ĠShared Key , ĊĠĠĠ Ġis Init iator : ĠBoolean , Ċ ): ĠAuth Message Ġ{ ĊĠĠĠ Ġval Ġplain Text Ġ= Ġdecrypt ( Cipher Text ( it . data . bytes ), Ġit . nonce , Ġshared Key ) ĊĠĠĠ Ġval Ġpayload Map Ġ= Ġunpack ( Payload ( plain Text . bytes )) ĊĊĠĠĠ Ġpayload Map . require Type ( MessageType . AUTH ) ĊĠĠĠ Ġpayload Map . require Fields ( Message Field . YOUR _ COOKIE , ĠMessage Field . DATA ) ĊĊĠĠĠ Ġif Ġ( is Init iator ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpayload Map . require Fields ( Message Field . TASK S ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġpayload Map . require Fields ( Message Field . TASK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn ĠAuth Message ( ĊĠĠĠĠĠĠĠ Ġyour Cookie Ġ= ĠMessage Field . your Cookie ( payload Map ), ĊĠĠĠĠĠĠĠ Ġtasks Ġ= ĠMessage Field . tasks ( payload Map ), ĊĠĠĠĠĠĠĠ Ġtask Ġ= ĠMessage Field . task ( payload Map ), ĊĠĠĠĠĠĠĠ Ġdata Ġ= ĠMessage Field . data ( payload Map ), ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Opt In ( Experimental Std lib Api :: class ) Ċ fun ĠS alty Rtc Client . auth Message ( ĊĠĠĠ Ġsession Shared Key : ĠShared Key , ĊĠĠĠ Ġnonce : ĠN once , ĊĠĠĠ Ġyour Cookie : ĠCookie , Ġ// Ġto Ġother Ġclients Ġcookie ĊĠĠĠ Ġis Init iator : ĠBoolean , ĊĠĠĠ Ġtask : ĠTask Url , ĊĠĠĠ Ġtasks : ĠList < Task Url > ?, ĊĠĠĠ Ġdata : ĠAny ?, Ċ ): ĠMessage Ġ{ ĊĠĠĠ Ġval Ġpayload Map : ĠMap < Message Field , ĠAny > Ġ= Ġbuild Map Ġ{ ĊĠĠĠĠĠĠĠ Ġput ( Message Field . TYPE , ĠMessageType . AUTH . type ) ĊĠĠĠĠĠĠĠ Ġput ( Message Field . YOUR _ COOKIE , Ġyour Cookie . bytes ) ĊĠĠĠĠĠĠĠ Ġif Ġ( is Init iator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Message Field . TASK , Ġtask . url ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( tasks ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Message Field . TASK S , Ġtasks . map Ġ{ Ġit . url Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġput ( Message Field . DATA , Ġbuild Map < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( task . url , Ġdata ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġpayload Ġ= Ġpack ( payload Map ) ĊĠĠĠ Ġval Ġencrypted Data Ġ= Ġencrypt ( payload , Ġnonce , Ġsession Shared Key ) ĊĊĠĠĠ Ġreturn Ġmessage ( ĊĠĠĠĠĠĠĠ Ġnonce Ġ= Ġnonce , ĊĠĠĠĠĠĠĠ Ġdata Ġ= ĠPayload ( encrypted Data . bytes ), ĊĠĠĠ Ġ) Ċ } Ċ Ċ data Ġclass ĠAuth Message ( ĊĠĠĠ Ġval Ġyour Cookie : ĠCookie , ĊĠĠĠ Ġval Ġtasks : ĠList < Task Url > ?, ĊĠĠĠ Ġval Ġtask : ĠTask Url ?, ĊĠĠĠ Ġval Ġdata : ĠMap < Task Url , ĠAny ?> Ċ )