package Ġcom . my ether wallet . me w connect . core . utils . crypto . keystore Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . security . keystore . Key Gen Parameter Spec Ċ import Ġandroid . security . keystore . Key Properties Ċ import Ġcom . my ether wallet . me w connect . core . persist . pref en re ces . Iv Preferences Ċ import Ġjavax . crypto . Cipher Ċ import Ġjavax . crypto . Key Generator Ċ import Ġjavax . crypto . spec . GCM Parameter Spec Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠB Art Well Ġon Ġ 0 7 . 0 5 . 2 0 1 9 . Ċ Ġ*/ Ċ abstract Ġclass ĠBase Aes Ke yst ore Helper ( context : ĠContext , Ġprivate Ġval Ġiv Preferences : ĠI v Preferences ) Ġ: ĠBase Ke yst ore Helper ( context ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġiv Key : ĠString ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Keys () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Generator Ġ= ĠKey Generator . getInstance ( Key Properties . KEY _ ALGORITHM _ AES , Ġget Provider ()) ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠKey Gen Parameter Spec . Builder ( get Alias (), ĠKey Properties . P URPOSE _ ENCRYPT Ġor ĠKey Properties . P URPOSE _ DE CRYPT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Block Modes ( Key Properties . BLOCK _ MODE _ GCM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Encryption P add ings ( Key Properties . ENCRYPT ION _ P ADDING _ NONE ) ĊĠĠĠĠĠĠĠ Ġkey Generator . init ( builder . build ()) ĊĠĠĠĠĠĠĠ Ġkey Generator . generate Key () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġencrypt ( data : ĠString , Ġiv Key : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . iv Key Ġ= Ġiv Key ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . encrypt ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecrypt ( text : ĠString , Ġiv Key : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . iv Key Ġ= Ġiv Key ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . decrypt ( text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecrypt ToBytes ( text : ĠString , Ġiv Key : ĠString ): ĠByteArray ? Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . iv Key Ġ= Ġiv Key ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . decrypt ToBytes ( text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Encrypt Cipher (): ĠCipher Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġkey Store . getKey ( get Alias (), Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= ĠCipher . getInstance ( get Transformation ()) ĊĠĠĠĠĠĠĠ Ġcipher . init ( Cipher . ENCRYPT _ MODE , Ġkey ) ĊĠĠĠĠĠĠĠ Ġiv Preferences . save Iv ( iv Key , Ġcipher . iv ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcipher ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Decrypt Cipher (): ĠCipher Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġkey Store . getKey ( get Alias (), Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= ĠCipher . getInstance ( get Transformation ()) ĊĠĠĠĠĠĠĠ Ġval Ġiv Parameter Spec Ġ= ĠG CM Parameter Spec ( 1 2 8 , Ġiv Preferences . get Iv ( iv Key )) ĊĠĠĠĠĠĠĠ Ġcipher . init ( Cipher . DE CRYPT _ MODE , Ġkey , Ġiv Parameter Spec ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcipher ĊĠĠĠ Ġ} Ċ }