Skip to content

Commit 71969f6

Browse files
Merge pull request #43 from Web3Auth/feature/update-shared-prefs-for-android-version12
Handle changes for shared prefs wrt android version 12 and above
2 parents c3b5a52 + 79b7b23 commit 71969f6

File tree

4 files changed

+30
-25
lines changed

4 files changed

+30
-25
lines changed

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ android {
1212
keyPassword 'torus123'
1313
}
1414
}
15-
compileSdkVersion 32
15+
compileSdkVersion 33
1616

1717
defaultConfig {
1818
applicationId "com.web3auth.app"
1919
minSdkVersion 24
20-
targetSdkVersion 32
20+
targetSdkVersion 33
2121
versionCode 1
2222
versionName "1.0"
2323
manifestPlaceholders = [

core/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ plugins {
55
}
66

77
android {
8-
compileSdkVersion 31
8+
compileSdkVersion 33
99

1010
defaultConfig {
1111
minSdkVersion 24
12-
targetSdkVersion 31
12+
targetSdkVersion 33
1313

1414
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1515
consumerProguardFiles "proguard-rules.pro"
@@ -58,7 +58,7 @@ dependencies {
5858
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2'
5959

6060
// android security
61-
implementation 'androidx.security:security-crypto:1.0.0-alpha02'
61+
implementation 'androidx.security:security-crypto:1.1.0-alpha05'
6262
implementation 'org.web3j:core:4.8.8-android'
6363

6464
// Test

core/src/main/java/com/web3auth/core/Web3Auth.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,9 +194,9 @@ class Web3Auth(web3AuthOptions: Web3AuthOptions) {
194194
*/
195195
private fun authorizeSession() {
196196
sessionCompletableFuture = CompletableFuture()
197-
sessionId = KeyStoreManagerUtils.decryptData(KeyStoreManagerUtils.SESSION_ID)
197+
sessionId = KeyStoreManagerUtils.getPreferencesData(KeyStoreManagerUtils.SESSION_ID)
198198
if (sessionId != null && sessionId?.isNotEmpty() == true) {
199-
var pubKey = "04".plus(KeyStoreManagerUtils.getPubKey(sessionId.toString()))
199+
val pubKey = "04".plus(KeyStoreManagerUtils.getPubKey(sessionId.toString()))
200200
GlobalScope.launch {
201201
val result = web3AuthApi.authorizeSession(pubKey)
202202
if (result.isSuccessful && result.body() != null) {
@@ -231,7 +231,7 @@ class Web3Auth(web3AuthOptions: Web3AuthOptions) {
231231
val encryptedShareBytes =
232232
AES256CBC.toByteArray(BigInteger(shareMetadata.ciphertext, 16))
233233
val share = aes256cbc.decrypt(Base64.encodeBytes(encryptedShareBytes))
234-
var tempJson = JSONObject(share.toString())
234+
val tempJson = JSONObject(share.toString())
235235
tempJson.put("userInfo", tempJson.get("store"))
236236
tempJson.remove("store")
237237
web3AuthResponse =

core/src/main/java/com/web3auth/core/keystore/KeyStoreManagerUtils.kt

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ object KeyStoreManagerUtils {
6767
* Method to encrypt data with key
6868
*/
6969
fun encryptData(key: String, data: String) {
70-
sharedPreferences?.edit()?.putString(key, data)?.apply()
70+
sharedPreferences.edit().putString(key, data)?.apply()
7171
encryptedPairData = getEncryptedDataPair(data)
7272
encryptedPairData.second.toString(UTF_8)
7373
}
@@ -88,44 +88,49 @@ object KeyStoreManagerUtils {
8888
* Method to decrypt data with key
8989
*/
9090
fun decryptData(key: String): String? {
91-
val sharedPreferenceIds = sharedPreferences?.all
9291
var result: String? = null
93-
sharedPreferenceIds?.forEach {
94-
if (it.key.contains(key)) {
95-
result = sharedPreferences?.getString(it.key, "")
92+
try {
93+
val sharedPreferenceIds = sharedPreferences.all
94+
sharedPreferenceIds.forEach {
95+
if (it.key.contains(key)) {
96+
result = sharedPreferences.getString(it.key, "")
97+
}
9698
}
99+
if (result == null) return null
100+
val encryptedPairData = result?.let { getEncryptedDataPair(it) }
101+
val cipher = Cipher.getInstance(TRANSFORMATION)
102+
val keySpec = IvParameterSpec(encryptedPairData?.first)
103+
cipher.init(Cipher.DECRYPT_MODE, getKey(), keySpec)
104+
return cipher.doFinal(encryptedPairData?.second).toString(UTF_8)
105+
} catch (ex: Exception) {
106+
ex.printStackTrace()
97107
}
98-
if (result == null) return null
99-
val encryptedPairData = result?.let { getEncryptedDataPair(it) }
100-
val cipher = Cipher.getInstance(TRANSFORMATION)
101-
val keySpec = IvParameterSpec(encryptedPairData?.first)
102-
cipher.init(Cipher.DECRYPT_MODE, getKey(), keySpec)
103-
return cipher.doFinal(encryptedPairData?.second).toString(UTF_8)
108+
return result
104109
}
105110

106111
/**
107112
* Store encrypted data into preferences
108113
*/
109114
fun savePreferenceData(key: String, data: String) {
110-
sharedPreferences?.edit()?.putString(key, data)?.apply()
115+
sharedPreferences.edit().putString(key, data)?.apply()
111116
}
112117

113118
/**
114119
* Retrieve decrypted data from preferences
115120
*/
116121
fun getPreferencesData(key: String): String? {
117-
return sharedPreferences?.getString(key, "")
122+
return sharedPreferences.getString(key, "")
118123
}
119124

120125
/**
121126
* Delete All local storage
122127
*/
123128
fun deletePreferencesData(key: String) {
124-
sharedPreferences?.edit()?.remove(key)?.apply()
125-
val sharedPreferenceIds = sharedPreferences?.all
126-
sharedPreferenceIds?.forEach {
129+
sharedPreferences.edit().remove(key)?.apply()
130+
val sharedPreferenceIds = sharedPreferences.all
131+
sharedPreferenceIds.forEach {
127132
if (it.key.contains(key)) {
128-
sharedPreferences?.edit()?.remove(key)?.apply()
133+
sharedPreferences.edit().remove(key)?.apply()
129134
}
130135
}
131136
}

0 commit comments

Comments
 (0)