package Ġde . j ep fa . y apm . use case . vault Ċ Ċ import Ġde . j ep fa . y apm . model . encrypted . Cipher Algorithm Ċ import Ġde . j ep fa . y apm . model . session . Login Data Ċ import Ġde . j ep fa . y apm . service . Preference Service Ċ import Ġde . j ep fa . y apm . service . secret . Master Key Service Ċ import Ġde . j ep fa . y apm . service . secret . Salt Service Ċ import Ġde . j ep fa . y apm . ui . Base Activity Ċ import Ġde . j ep fa . y apm . use case . Input UseCase Ċ import Ġde . j ep fa . y apm . use case . session . Login UseCase Ċ import Ġde . j ep fa . y apm . util . Constants Ċ Ċ object ĠCreate Vault UseCase : ĠInput UseCase < Create Vault UseCase . Input , ĠBase Activity >() Ġ{ ĊĊĠĠĠ Ġdata Ġclass ĠInput ( val Ġlogin Data : ĠLogin Data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcipher Algorithm : ĠCipher Algorithm ) ĊĊĠĠĠ Ġoverride Ġfun Ġdo Execute ( input : ĠInput , Ġactivity : ĠBase Activity ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsalt Ġ= ĠS alt Service . getS alt ( activity ) ĊĠĠĠĠĠĠĠ Ġval Ġmaster Key Ġ= ĠMaster Key Service . generate Master Key () ĊĠĠĠĠĠĠĠ ĠMaster Key Service . encrypt And Store Master Key ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmaster Key , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput . login Data . pin , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput . login Data . master Password , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsalt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput . cipher Algorithm , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġmaster Key . clear () ĊĊĠĠĠĠĠĠĠ ĠPreference Service . put Current Date ( Preference Service . DATA _ VA ULT _ CREATED _ AT , Ġactivity ) ĊĊĠĠĠĠĠĠĠ ĠPreference Service . putString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Service . DATA _ VA ULT _ VERSION , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . FAST _ KEY GEN _ VA ULT _ VERSION . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠPreference Service . putString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Service . DATA _ CIPHER _ ALGORITHM , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput . cipher Algorithm . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠLogin UseCase . execute ( input . login Data , Ġactivity ). success ĊĠĠĠ Ġ} Ċ Ċ }