package Ġcom . example . p 2 p ge oc aching . cache s Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . example . p 2 p ge oc aching . RSA . RSA Ċ Ċ /** Ċ Ġ* ĠThis Ġclass Ġsaves Ġall Ġthe Ġdata Ġrelated Ġto Ġa Ġcache . Ċ Ġ* ĠCache Ġclass Ġcan Ġbe Ġcalled Ġin Ġtwo Ġways , Ġeither Ġto Ġcreate Ġa Ġnew Ġcache Ġor Ġto Ġsave Ġan Ġexisting Ġone . Ċ Ġ* ĠThe Ġtitle Ġof Ġthe Ġcache Ġis Ġsaved Ġin Ġ[ title ], Ġits Ġdescription Ġin Ġ[ desc ], Ġneither Ġmay Ġcontain Ġan Ċ Ġ* Ġillegal Ġcharacter . Ċ Ġ* Ġ[ creator ] Ġcontains Ġthe Ġname Ġof Ġthe Ġcache 's Ġcreator , Ġalso Ġno Ġillegal Ġcharacters Ġallowed . Ċ Ġ* ĠThe Ġunique Ġidentifier Ġ[ id ] Ġis Ġgenerated Ġby Ġconcaten ating Ġ[ title ], Ġ'; ', Ġ[ desc ], Ġthen Ġhashing Ġthem . Ċ Ġ* ĠThe Ġpublic Ġkey Ġis Ġsaved Ġin Ġ[ pub Key ], Ġthe Ġprivate Ġkey Ġ Ġin Ġ[ prv Key ]. Ċ Ġ* ĠThe Ġ[ hall Of F ame ] Ġcontains Ġthe Ġencrypted Ġname Ġof Ġthe Ġpeople Ġthat Ġhave Ġcompleted Ġthe Ġcache . Ċ Ġ* ĠIt Ġsaves Ġthem Ġas Ġan Ġarray Ġof ĠStrings . Ċ Ġ* ĠThe Ġonly Ġitem Ġcontained Ġat Ġinitialization Ġis Ġthe Ġ[ creator ]. Ċ Ġ* ĠTo Ġdecrypt , Ġthe Ġ[ pub Key ] Ġis Ġused . Ċ Ġ* ĠFor Ġencrypt ing , Ġyou Ġneed Ġthe Ġ[ prv Key ], Ġwhich Ġyou Ġreceive Ġupon Ġfinding Ġthe Ġphysical Ġcache . Ċ Ġ* Ġ[ plain Text H OF ] Ġcontains Ġthe Ġplain Ġtext Ġthat Ġ[ hall Of F ame ] Ġencrypt s . Ċ Ġ*/ Ċ open Ġclass ĠCache ( ĊĠĠĠ Ġval Ġtitle : ĠString , ĊĠĠĠ Ġval Ġdesc : ĠString , ĊĠĠĠ Ġval Ġcreator : ĠString , ĊĠĠĠ Ġvar Ġid : ĠInt , ĊĠĠĠ Ġvar Ġpub Key : ĠString ?, ĊĠĠĠ Ġvar Ġpr v Key : ĠString ?, ĊĠĠĠ Ġvar Ġhall Of F ame : ĠMutable Set < String >, ĊĠĠĠ Ġvar Ġplain Text H OF : ĠString Ċ ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Cache " ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġa Ġconstructor Ġis Ġcalled Ġwithout Ġa Ġ[ hall Of F ame ], Ġit Ġpasses Ġan Ġempty Ġset . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġtitle : ĠString , ĊĠĠĠĠĠĠĠ Ġdesc : ĠString , ĊĠĠĠĠĠĠĠ Ġcreator : ĠString , ĊĠĠĠĠĠĠĠ Ġid : ĠInt , ĊĠĠĠĠĠĠĠ Ġpub Key : ĠString ?, ĊĠĠĠĠĠĠĠ Ġpr v Key : ĠString ? ĊĠĠĠ Ġ) Ġ: Ġthis ( title , Ġdesc , Ġcreator , Ġid , Ġpub Key , Ġpr v Key , Ġmutable Set Of (), Ġ"") ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġtakes Ġan ĠString Ġcontaining Ġa Ġcipher Ġtext Ġ[ cipher Text ] Ġas Ġinput ĊĠĠĠĠ Ġ* ĠIt Ġreturns Ġthe Ġplain Ġtext Ġas Ġa ĠString . ĊĠĠĠĠ Ġ* ĠThis Ġde cryption Ġis Ġdone Ġusing Ġthe Ġpublic Ġkey . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdecrypt ToString ( cipher Text : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRSA . decode ( cipher Text , Ġpub Key ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġdecrypt s Ġthe Ġ[ hall Of F ame ] Ġand Ġreturns Ġit Ġas Ġa ĠString . ĊĠĠĠĠ Ġ* ĠEach Ġentry Ġof Ġ[ hall Of F ame ] Ġis Ġseparated Ġby Ġa Ġnew Ġline Ġin Ġthe Ġfinal ĠString . ĊĠĠĠĠ Ġ* ĠIf Ġ[ hall Of F ame ] Ġis Ġnull , Ġan Ġempty Ġstring Ġis Ġreturned . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhall ToString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġh of String Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġreturn Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( cipher Entry Ġin Ġhall Of F ame ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh of String Ġ+= Ġdecrypt ToString ( cipher Entry ) Ġ+ Ġ"\ n " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" The Ġhall Ġof Ġf ame Ġstring Ġis : Ġ$ h of String ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh of String ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġsimple Ġfunction Ġwhich Ġupdates Ġthe Ġ[ plain Text H OF ] Ġparameter Ġwith Ġthe Ġcurrent Ġ[ hall Of F ame ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġupdate Plain Text H OF () Ġ{ ĊĠĠĠĠĠĠĠ Ġplain Text H OF Ġ= Ġhall ToString () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġis Ġused Ġto Ġadd Ġany Ġnumber Ġof Ġpeople Ġto Ġthe Ġlist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd People To H OF ( people : ĠSet < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġthe Ġpeople Ġto ĠH OF ĊĠĠĠĠĠĠĠ Ġfor Ġ( person Ġin Ġpeople ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhall Of F ame . add ( person ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġupdate Plain Text H OF () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSimple Ġfunction Ġthat Ġcalls Ġthe Ġadd People To H OF () Ġfunction , Ġwith Ġits Ġinput Ġcast Ġto Ġa Ġset . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Person To H OF ( person : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd People To H OF ( set Of ( person )) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠtoString () Ġfunction Ġnow Ġconcaten ates Ġmost Ġthings Ġin Ġhuman Ġreadable Ġformat . ĊĠĠĠĠ Ġ* ĠFormat Ġis Ġas Ġfollows : Ġ"< name >: Ġ< data >; ", Ġrepeated . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Title : Ġ$ title ; ĠDescription : Ġ$ desc ; ĠCreator : Ġ$ creator ; ĠID : Ġ$ id ; Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Public ĠKey : Ġ${ pub Key . toString ()}; ĠPrivate Ġkey : Ġ${ prv Key . toString ()}; Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" H all Ġof ĠF ame : Ġ${ hall Of F ame }; ĠText Ġin ĠHall Ġof ĠF ame : Ġ$ plain Text H OF " ĊĠĠĠ Ġ} Ċ }