package Ġcom . wallet connect . wallet connect v 2 . storage Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroidx . security . crypto . Encrypted SharedPreferences Ċ import Ġandroidx . security . crypto . Master Keys Ċ import Ġcom . wallet connect . wallet connect v 2 . app Ċ import Ġcom . wallet connect . wallet connect v 2 . crypto . data . Key Ċ import Ġcom . wallet connect . wallet connect v 2 . util . Empty Ċ import Ġcom . wallet connect . wallet connect v 2 . util . bytes To Hex Ċ import Ġcom . wallet connect . wallet connect v 2 . util . hex ToBytes Ċ Ċ class ĠKey Chain Ġ: ĠKey Store Ġ{ ĊĊĠĠĠ Ġ// Region : ĠMove Ġto ĠDI ĊĠĠĠ Ġ// ĠTODO : Ġupdated Ġbased Ġon Ġhttps :// stackoverflow . com / a / 6 3 3 5 7 2 6 7 ĊĠĠĠ Ġprivate Ġval Ġshared Preferences : ĠSharedPreferences ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠEn crypted SharedPreferences . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared Prefs File , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Key Alias , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp . application Context , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEn crypted SharedPreferences . Pref Key Encryption Scheme . AES 2 5 6 _ SI V , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEn crypted SharedPreferences . Pref Value Encryption Scheme . AES 2 5 6 _ GCM ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ// End Ġof Ġregion ĊĊĠĠĠ Ġoverride Ġfun Ġset Key ( tag : ĠString , Ġkey 1 : ĠKey , Ġkey 2 : ĠKey ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkeys Ġ= Ġconcat Keys ( key 1 , Ġkey 2 ) ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). putString ( tag , Ġkeys ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Keys ( tag : ĠString ): ĠPair < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconcat Keys Ġ= Ġshared Preferences . getString ( tag , ĠString . Empty ) Ġ?: ĠString . Empty ĊĠĠĠĠĠĠĠ Ġreturn Ġsplit Keys ( concat Keys ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Keys ( tag : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). remove ( tag ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconcat Keys ( key A : ĠKey , Ġkey B : ĠKey ): ĠString Ġ= Ġ( key A . key As Hex . hex ToBytes () Ġ+ Ġkey B . key As Hex . hex ToBytes ()). bytes To Hex () ĊĊĠĠĠ Ġprivate Ġfun Ġsplit Keys ( concat Keys : ĠString ): ĠPair < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconcat Keys ByteArray Ġ= Ġconcat Keys . hex ToBytes () ĊĠĠĠĠĠĠĠ Ġval ĠprivateKey ByteArray Ġ= Ġconcat Keys ByteArray . slice Array ( 0 Ġuntil Ġ( concat Keys ByteArray . size Ġ/ Ġ 2 )) ĊĠĠĠĠĠĠĠ Ġval ĠpublicKey ByteArray Ġ= Ġconcat Keys ByteArray . slice Array (( concat Keys ByteArray . size Ġ/ Ġ 2 ) Ġuntil Ġconcat Keys ByteArray . size ) ĊĠĠĠĠĠĠĠ Ġreturn ĠprivateKey ByteArray . bytes To Hex () Ġto ĠpublicKey ByteArray . bytes To Hex () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġshared Prefs File : ĠString Ġ= Ġ" wc _ key _ store " ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġkey Gen Parameter Spec Ġ= ĠMaster Keys . AES 2 5 6 _ GCM _ SPEC ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmain Key Alias Ġ= ĠMaster Keys . get OrCreate ( key Gen Parameter Spec ) ĊĠĠĠ Ġ} Ċ }