diff --git a/dependencies.gradle.kts b/dependencies.gradle.kts
index 06312abaf7..66d1c8dca5 100644
--- a/dependencies.gradle.kts
+++ b/dependencies.gradle.kts
@@ -15,7 +15,7 @@ dependencyResolutionManagement {
version("exoplayer", "2.19.0")
version("glide", "4.15.1")
version("kotlin", "1.9.20")
- version("libsignal-client", "0.46.0")
+ version("libsignal-client", "0.47.0")
version("mp4parser", "1.9.39")
version("android-gradle-plugin", "8.4.0")
version("accompanist", "0.28.0")
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index f2106a0b8c..f66cbada28 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -7400,20 +7400,20 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
diff --git a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/svr/SecureValueRecoveryV3.kt b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/svr/SecureValueRecoveryV3.kt
index 78b12d4ed9..d095cf2b06 100644
--- a/libsignal-service/src/main/java/org/whispersystems/signalservice/api/svr/SecureValueRecoveryV3.kt
+++ b/libsignal-service/src/main/java/org/whispersystems/signalservice/api/svr/SecureValueRecoveryV3.kt
@@ -57,13 +57,13 @@ class SecureValueRecoveryV3(
return try {
val result = network.svr3().restore(normalizedPin, shareSet, enclaveAuth).get()
- val masterKey = MasterKey(result)
+ val masterKey = MasterKey(result.value)
RestoreResponse.Success(masterKey, authorization)
} catch (e: ExecutionException) {
when (val cause = e.cause) {
- is NetworkException -> RestoreResponse.NetworkError(IOException(cause)) // TODO [svr3] Update when we get to IOException
+ is NetworkException -> RestoreResponse.NetworkError(cause)
is DataMissingException -> RestoreResponse.Missing
- is RestoreFailedException -> RestoreResponse.PinMismatch(1) // TODO [svr3] Get proper API for this
+ is RestoreFailedException -> RestoreResponse.PinMismatch(cause.triesRemaining)
is AttestationFailedException -> RestoreResponse.ApplicationError(cause)
is SgxCommunicationFailureException -> RestoreResponse.ApplicationError(cause)
is IOException -> RestoreResponse.NetworkError(cause)
@@ -126,7 +126,7 @@ class SecureValueRecoveryV3(
BackupResponse.Success(masterKey, rawAuth)
} catch (e: ExecutionException) {
when (val cause = e.cause) {
- is NetworkException -> BackupResponse.NetworkError(IOException(cause)) // TODO [svr] Update when we move to IOException
+ is NetworkException -> BackupResponse.NetworkError(cause)
is AttestationFailedException -> BackupResponse.ApplicationError(cause)
is SgxCommunicationFailureException -> BackupResponse.ApplicationError(cause)
is IOException -> BackupResponse.NetworkError(cause)