diff --git a/app/build.gradle b/app/build.gradle index c4dced2..33c36c4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -140,6 +140,7 @@ dependencies { implementation "com.mikepenz:aboutlibraries-core:$aboutLibrariesVersion" implementation 'com.squareup.okhttp3:okhttp:4.12.0' implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0' + implementation 'io.github.rburgst:okhttp-digest:3.1.0' implementation 'com.squareup.retrofit2:retrofit:2.11.0' implementation 'com.squareup.retrofit2:converter-simplexml:2.11.0' implementation 'com.github.thegrizzlylabs:sardine-android:0.9' diff --git a/app/src/main/java/dev/rocli/android/webdav/provider/WebDavClient.kt b/app/src/main/java/dev/rocli/android/webdav/provider/WebDavClient.kt index 7f02c6f..e85fcbb 100644 --- a/app/src/main/java/dev/rocli/android/webdav/provider/WebDavClient.kt +++ b/app/src/main/java/dev/rocli/android/webdav/provider/WebDavClient.kt @@ -3,6 +3,10 @@ package dev.rocli.android.webdav.provider import android.annotation.SuppressLint import android.content.Context import android.security.KeyChain +import com.burgstaller.okhttp.AuthenticationCacheInterceptor +import com.burgstaller.okhttp.CachingAuthenticatorDecorator +import com.burgstaller.okhttp.digest.CachingAuthenticator +import com.burgstaller.okhttp.digest.DigestAuthenticator import com.thegrizzlylabs.sardineandroid.model.Prop import com.thegrizzlylabs.sardineandroid.model.Property import com.thegrizzlylabs.sardineandroid.model.Resourcetype @@ -30,6 +34,7 @@ import java.security.Principal import java.security.PrivateKey import java.security.SecureRandom import java.security.cert.X509Certificate +import java.util.concurrent.ConcurrentHashMap import javax.net.ssl.KeyManager import javax.net.ssl.SSLContext import javax.net.ssl.TrustManager @@ -233,8 +238,18 @@ class WebDavClient( builder.addInterceptor(logging) } if (creds != null) { + + // Basic Auth (Default) val auth = Credentials.basic(creds.first, creds.second) builder.addInterceptor(AuthInterceptor(auth)) + + // Digest Auth Support + val authenticator = DigestAuthenticator(com.burgstaller.okhttp.digest.Credentials(creds.first, creds.second)) + val authCache: Map = ConcurrentHashMap() + + builder.authenticator(CachingAuthenticatorDecorator(authenticator, authCache)) + builder.addInterceptor(AuthenticationCacheInterceptor(authCache)) + } val serializer = buildSerializer() diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index c2de17c..69b1d15 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -2787,6 +2787,14 @@ + + + + + + + +