package Ġcom . b oo mesh . security . di Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroid . security . KeyPair Generator Spec Ċ import Ġandroid . security . keystore . Key Gen Parameter Spec Ċ import Ġandroid . security . keystore . Key Properties Ċ import Ġcom . b oo mesh . security . encrypt . Key Generator Spec Builder Ċ import Ġcom . b oo mesh . security . encrypt . se cur able . Aes G cm No Padding Ċ import Ġcom . b oo mesh . security . encrypt . se cur able . R sa E cb PKCS 1 Padding Ċ import Ġcom . b oo mesh . security . encrypt . se cur able . R sa With Deprecated Aes Ċ import Ġcom . b oo mesh . security . encrypt . se cur able . base . Sec ur able Ċ import Ġjava . security . KeyPair Generator Ċ import Ġjava . security . KeyStore Ċ import Ġjavax . crypto . Cipher Ċ import Ġjavax . crypto . Key Generator Ċ Ċ internal Ġclass ĠEncryption Module ( private Ġval Ġcontext : ĠContext , Ġprivate Ġval Ġcommon Module : ĠCommon Module ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAND ROID _ KEY _ STORE _ PROVIDER Ġ= Ġ" Android KeyStore " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠA LI AS Ġ= Ġ" Security Module Alias " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSERIAL _ NUMBER Ġ= Ġ 1 L ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprovides Sec ur able (): ĠSec ur able Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( common Module . provide Build Config Util (). is OS Below ( Build . VERSION _ CODES . M )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠR sa With Deprecated Aes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommon Module . provides Security Prefs (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovides R sa Sec ur able (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovides KeyStore Factory (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovides Cipher Factory (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommon Module . provide Base 6 4 Encoder (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommon Module . provide Base 6 4 Decoder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠA es G cm No Padding ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA LI AS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovides KeyStore Factory (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovides Cipher Factory (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovides Key Generator Factory (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommon Module . provide Date Util (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprovides Key Gen Spec Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprovides KeyStore Factory (): Ġ() Ġ-> ĠKey Store Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ{ ĠKey Store . getInstance ( ANDROID _ KEY _ STORE _ PROVIDER ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" New Api ") ĊĠĠĠ Ġprivate Ġfun Ġprovides Key Gen Spec Builder (): ĠKey Generator Spec Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠKey Generator Spec Builder ({ Ġcontext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Pair Generator Spec . Builder ( context ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġalias , Ġpurposes Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Gen Parameter Spec . Builder ( alias , Ġpurposes ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" In lined Api ") ĊĠĠĠ Ġprivate Ġfun Ġprovides Key Generator Factory (): Ġ() Ġ-> ĠKey Generator Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ{ ĠKey Generator . getInstance ( Key Properties . KEY _ ALGORITHM _ AES ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprovides KeyPair Generator Factory (): Ġ() Ġ-> ĠKey Pair Generator Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ{ ĠKey Pair Generator . getInstance (" RSA ", ĠAND ROID _ KEY _ STORE _ PROVIDER ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprovides Cipher Factory (): Ġ( String ) Ġ-> ĠCipher Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCipher . getInstance ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprovides R sa Sec ur able (): ĠSec ur able Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR sa E cb PKCS 1 Padding ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA LI AS , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommon Module . provide Date Util (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovides KeyStore Factory (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovides Cipher Factory (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovides KeyPair Generator Factory (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovides Key Gen Spec Builder () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }