package Ġcom . tester um . common _ encrypted _ prefs Ċ Ċ import Ġjava . util . String Tokenizer Ċ import Ġjava . util . prefs . Preferences Ċ Ċ class ĠEn crypted Prefs Ġprivate Ġconstructor ( private Ġval Ġsecret Key : ĠByteArray , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġprefs : ĠPreferences ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġsystem Root ( secret Key : ĠByteArray ) Ġ= ĠEn crypted Prefs ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecret Key Ġ= Ġsecret Key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefs Ġ= ĠPreferences . system Root () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġuser Root ( secret Key : ĠByteArray ) Ġ= ĠEn crypted Prefs ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecret Key Ġ= Ġsecret Key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefs Ġ= ĠPreferences . user Root () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġencrypt or Ġ= ĠEncrypt or ( secret Key ) ĊĊĠĠĠ Ġfun Ġnode ( path : ĠString ): ĠEn crypted Prefs Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġencrypted Path Ġ= Ġencrypt Path ( path ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠEn crypted Prefs ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecret Key Ġ= Ġsecret Key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefs Ġ= Ġprefs . node ( encrypted Path ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset String ( key : ĠString , Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġencrypted Key Ġ= Ġencrypt or . encrypt ( key ) ĊĠĠĠĠĠĠĠ Ġval Ġencrypted Value Ġ= Ġencrypt or . encrypt ( value ) ĊĊĠĠĠĠĠĠĠ Ġprefs . put ( encrypted Key , Ġencrypted Value ) ĊĠĠĠĠĠĠĠ Ġprefs . flush () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetString ( key : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġencrypted Key Ġ= Ġencrypt or . encrypt ( key ) ĊĊĠĠĠĠĠĠĠ Ġval Ġencrypted Value Ġ= Ġprefs . get ( encrypted Key , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġreturn Ġencrypt or . decrypt ( encrypted Value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġencrypt Path ( path : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġval Ġdelimiter Ġ= Ġ"/" ĊĠĠĠĠĠĠĠ Ġval Ġtokenizer Ġ= ĠString Tokenizer ( path , Ġdelimiter , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġwhile Ġ( tokenizer . hasMore Tokens ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken : ĠString Ġ= Ġtokenizer . nextToken () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( token Ġ== Ġdelimiter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append ( token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencrypt or . encrypt ( token ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult . toString () ĊĠĠĠ Ġ} Ċ Ċ } Ċ