package Ġcom . b oo mesh . security . encrypt . se cur able Ċ Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġcom . b oo mesh . security . common . Date Util Ċ import Ġcom . b oo mesh . security . di . Encryption Module Ċ import Ġcom . b oo mesh . security . encrypt . Key Generator Spec Builder Ċ import Ġcom . b oo mesh . security . encrypt . se cur able . base . Sec ur able Ċ import Ġjava . security . KeyPair Generator Ċ import Ġjava . security . KeyStore Ċ import Ġjava . security . interfaces . RS AP ublic Key Ċ import Ġjava . security . spec . Algorithm Parameter Spec Ċ import Ġjavax . crypto . Cipher Ċ Ċ /** Ċ Ġ* ĠUses Ġthe Ġdeprecated Ġmechanisms Ġfor ĠOS es Ġbelow Ġmar shm allow Ċ Ġ* Ċ Ġ* ĠResources Ċ Ġ* Ġ Ġ- Ġhttps :// developer . android . com / training / articles / keystore # Supported C iph ers Ċ Ġ* Ġ Ġ- Ġhttps :// github . com / nel enk ov / android - keystore / blob / master / src / org / nick / android keystore / Android R sa Engine . java Ċ Ġ*/ Ċ @ Target Api ( Build . VERSION _ CODES . LO L LI POP ) Ċ internal Ġclass ĠR sa E cb PKCS 1 Padding ( ĊĠĠĠ Ġprivate Ġval Ġalias : ĠString , ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġdate Util : ĠDate Util , ĊĠĠĠ Ġprivate Ġval Ġkey Store Factory : Ġ(() Ġ-> ĠKey Store ), ĊĠĠĠ Ġprivate Ġval Ġcipher Factory : Ġ(( String ) Ġ-> ĠCipher ), ĊĠĠĠ Ġkey Pair Generator Factory : Ġ(() Ġ-> ĠKey Pair Generator ), ĊĠĠĠ Ġkey Generator Spec Builder : ĠKey Generator Spec Builder Ċ ) Ġ: ĠSec ur able Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" Spell Checking Inspection ") ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAL G ORITHM _ MODE _ P ADDING Ġ= Ġ" RSA / E CB / PKCS 1 Padding " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Store Ġ= Ġkey Store Factory () ĊĠĠĠĠĠĠĠ Ġkey Store . load ( null ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! key Store . contains Alias ( alias )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnot Before Ġ= Ġdate Util . now ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnot After Ġ= Ġdate Util . add Year sTo ( not Before , Ġ 4 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġserial Number Ġ= ĠEncryption Module . SERIAL _ NUMBER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenerator Ġ= Ġkey Pair Generator Factory () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspec : ĠAlgorithm Parameter Spec Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Generator Spec Builder . build ( context , Ġalias , Ġserial Number , Ġnot Before . time , Ġnot After ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerator . initialize ( spec ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerator . gen KeyPair () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġencrypt ( bytes : ĠByteArray ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Store Ġ= Ġkey Store Factory () ĊĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= Ġcipher Factory ( ALGORITHM _ MODE _ P ADDING ) ĊĠĠĠĠĠĠĠ Ġkey Store . load ( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġkey Entry Ġ= Ġkey Store . getEntry ( alias , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval ĠprivateKey Ġ= Ġkey Entry Ġas ĠKey Store . PrivateKey Entry ĊĠĠĠĠĠĠĠ Ġval ĠpublicKey Ġ= ĠprivateKey . certificate . publicKey Ġas ĠRS AP ublic Key ĊĊĠĠĠĠĠĠĠ Ġcipher . init ( Cipher . ENCRYPT _ MODE , ĠpublicKey ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcipher . do Final ( bytes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġencrypt ( text : ĠString ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġencrypt ( text . toByteArray ( Charsets . UTF _ 8 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdecrypt ( payload : ĠByteArray ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Store Ġ= Ġkey Store Factory () ĊĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= Ġcipher Factory ( ALGORITHM _ MODE _ P ADDING ) ĊĠĠĠĠĠĠĠ Ġkey Store . load ( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġkey Entry Ġ= Ġkey Store . getEntry ( alias , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval ĠprivateKey Ġ= Ġ( key Entry Ġas ĠKey Store . PrivateKey Entry ). privateKey ĊĊĠĠĠĠĠĠĠ Ġcipher . init ( Cipher . DE CRYPT _ MODE , ĠprivateKey ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcipher . do Final ( payload ) ĊĠĠĠ Ġ} Ċ }