package Ġio . flat circle . preferences helper 2 Ċ Ċ import Ġandroid . content . Context Ċ import Ġjava . security . KeyStore Ċ Ċ class ĠEncrypt String Prefs Backend ( private Ġval Ġkey Store Alias : ĠString , Ġcontext : ĠContext ): ĠBasic Prefs Backend ( context ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ STORE _ PROVIDER Ġ= Ġ" Android KeyStore " ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( key Store Alias . isNotEmpty ()) Ġ{ Ġ" key Store Alias Ġshould Ġbe Ġnon - null " Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġval Ġkey Store Ġ: ĠKey Store Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠKey Store Helper . getKey Store ( context , ĠKEY _ STORE _ PROVIDER , Ġkey Store Alias ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġset String ( ĊĠĠĠĠĠĠĠ Ġkey : ĠString , ĊĠĠĠĠĠĠĠ Ġvalue : ĠString ĊĠĠĠ Ġ){ ĊĠĠĠĠĠĠĠ Ġval Ġencrypted String Ġ= ĠKey Store Helper . encrypt String ( key Store , Ġkey Store Alias , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġsuper . setString ( key , Ġencrypted String ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠgetString ( ĊĠĠĠĠĠĠĠ Ġkey : ĠString , ĊĠĠĠĠĠĠĠ Ġfallback Val : ĠString ĊĠĠĠ Ġ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġencrypted String = Ġsuper . getString ( key , Ġfallback Val ) ĊĠĠĠĠĠĠĠ Ġreturn ĠKey Store Helper . decrypt String ( key Store , Ġkey Store Alias , Ġencrypted String ) ĊĠĠĠ Ġ} Ċ }