aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/deploy_github_releases.yml2
-rw-r--r--.github/workflows/deploy_library_releases.yml4
-rw-r--r--.github/workflows/deploy_snapshot.yml2
-rw-r--r--.github/workflows/pull_request.yml4
-rw-r--r--.github/workflows/update_publicsuffix_data.yml2
-rw-r--r--.github/workflows/validate_gradle_wrapper.yml2
-rw-r--r--app/src/main/java/dev/msfjarvis/aps/util/git/sshj/SshjSessionFactory.kt30
-rw-r--r--gradle/libs.versions.toml20
8 files changed, 37 insertions, 29 deletions
diff --git a/.github/workflows/deploy_github_releases.yml b/.github/workflows/deploy_github_releases.yml
index 26e946e5..05b90e2c 100644
--- a/.github/workflows/deploy_github_releases.yml
+++ b/.github/workflows/deploy_github_releases.yml
@@ -25,7 +25,7 @@ jobs:
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
- name: Build release binaries
- uses: burrunan/gradle-cache-action@03c71a8ba93d670980695505f48f49daf43704a6
+ uses: gradle/gradle-build-action@cba1833ddecbbee649950c284416981928631008
with:
arguments: :app:assembleFreeRelease :app:assembleNonFreeRelease :app:bundleNonFreeRelease
diff --git a/.github/workflows/deploy_library_releases.yml b/.github/workflows/deploy_library_releases.yml
index f5b7d861..d3c27a91 100644
--- a/.github/workflows/deploy_library_releases.yml
+++ b/.github/workflows/deploy_library_releases.yml
@@ -28,7 +28,7 @@ jobs:
fi
- name: Upload binaries
- uses: burrunan/gradle-cache-action@03c71a8ba93d670980695505f48f49daf43704a6
+ uses: gradle/gradle-build-action@cba1833ddecbbee649950c284416981928631008
with:
arguments: :${{ steps.task-select.outputs.PROJECT }}:publishAllPublicationsToMavenCentralRepository
env:
@@ -38,7 +38,7 @@ jobs:
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.NEXUS_PUBLISH_GPG_KEY_PASSWORD }}
- name: Close and release repository
- uses: burrunan/gradle-cache-action@03c71a8ba93d670980695505f48f49daf43704a6
+ uses: gradle/gradle-build-action@cba1833ddecbbee649950c284416981928631008
with:
arguments: closeAndReleaseRepository
env:
diff --git a/.github/workflows/deploy_snapshot.yml b/.github/workflows/deploy_snapshot.yml
index 1c7cdb67..cc5e6b26 100644
--- a/.github/workflows/deploy_snapshot.yml
+++ b/.github/workflows/deploy_snapshot.yml
@@ -25,7 +25,7 @@ jobs:
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
- name: Build release app
- uses: burrunan/gradle-cache-action@03c71a8ba93d670980695505f48f49daf43704a6
+ uses: gradle/gradle-build-action@cba1833ddecbbee649950c284416981928631008
env:
SNAPSHOT: "true"
with:
diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml
index 7ecceb49..964bf9ce 100644
--- a/.github/workflows/pull_request.yml
+++ b/.github/workflows/pull_request.yml
@@ -35,13 +35,13 @@ jobs:
- name: Build debug APKs
if: ${{ steps.service-changed.outputs.result == 'true' }}
- uses: burrunan/gradle-cache-action@03c71a8ba93d670980695505f48f49daf43704a6
+ uses: gradle/gradle-build-action@cba1833ddecbbee649950c284416981928631008
with:
arguments: assembleFreeDebug assembleNonFreeDebug
- name: Run unit tests
if: ${{ steps.service-changed.outputs.result == 'true' }}
- uses: burrunan/gradle-cache-action@03c71a8ba93d670980695505f48f49daf43704a6
+ uses: gradle/gradle-build-action@cba1833ddecbbee649950c284416981928631008
with:
arguments: apiCheck test lintFreeDebug spotlessCheck -PslimTests
diff --git a/.github/workflows/update_publicsuffix_data.yml b/.github/workflows/update_publicsuffix_data.yml
index 7c84aecf..2bfb51f8 100644
--- a/.github/workflows/update_publicsuffix_data.yml
+++ b/.github/workflows/update_publicsuffix_data.yml
@@ -14,7 +14,7 @@ jobs:
fetch-depth: 0
- name: Download new publicsuffix data
- uses: burrunan/gradle-cache-action@03c71a8ba93d670980695505f48f49daf43704a6
+ uses: gradle/gradle-build-action@cba1833ddecbbee649950c284416981928631008
with:
arguments: updatePSL
diff --git a/.github/workflows/validate_gradle_wrapper.yml b/.github/workflows/validate_gradle_wrapper.yml
index 52fc9eea..8d83d5f0 100644
--- a/.github/workflows/validate_gradle_wrapper.yml
+++ b/.github/workflows/validate_gradle_wrapper.yml
@@ -13,4 +13,4 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
- - uses: gradle/wrapper-validation-action@e2c57acffb2c9aa5a8dc6eda2bbae0b6e495bd4c
+ - uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
diff --git a/app/src/main/java/dev/msfjarvis/aps/util/git/sshj/SshjSessionFactory.kt b/app/src/main/java/dev/msfjarvis/aps/util/git/sshj/SshjSessionFactory.kt
index 79438bcc..50c146cc 100644
--- a/app/src/main/java/dev/msfjarvis/aps/util/git/sshj/SshjSessionFactory.kt
+++ b/app/src/main/java/dev/msfjarvis/aps/util/git/sshj/SshjSessionFactory.kt
@@ -13,6 +13,8 @@ import java.io.File
import java.io.IOException
import java.io.InputStream
import java.io.OutputStream
+import java.security.PublicKey
+import java.util.Collections
import java.util.concurrent.TimeUnit
import kotlin.coroutines.Continuation
import kotlin.coroutines.suspendCoroutine
@@ -88,19 +90,25 @@ class SshjSessionFactory(private val authMethod: SshAuthMethod, private val host
private fun makeTofuHostKeyVerifier(hostKeyFile: File): HostKeyVerifier {
if (!hostKeyFile.exists()) {
- return HostKeyVerifier { _, _, key ->
- val digest =
- runCatching { SecurityUtils.getMessageDigest("SHA-256") }.getOrElse { e ->
- throw SSHRuntimeException(e)
+ return object : HostKeyVerifier {
+ override fun verify(hostname: String?, port: Int, key: PublicKey?): Boolean {
+ val digest =
+ runCatching { SecurityUtils.getMessageDigest("SHA-256") }.getOrElse { e ->
+ throw SSHRuntimeException(e)
+ }
+ digest.update(PlainBuffer().putPublicKey(key).compactData)
+ val digestData = digest.digest()
+ val hostKeyEntry = "SHA256:${Base64.encodeToString(digestData, Base64.NO_WRAP)}"
+ logcat(SshjSessionFactory::class.java.simpleName) {
+ "Trusting host key on first use: $hostKeyEntry"
}
- digest.update(PlainBuffer().putPublicKey(key).compactData)
- val digestData = digest.digest()
- val hostKeyEntry = "SHA256:${Base64.encodeToString(digestData, Base64.NO_WRAP)}"
- logcat(SshjSessionFactory::class.java.simpleName) {
- "Trusting host key on first use: $hostKeyEntry"
+ hostKeyFile.writeText(hostKeyEntry)
+ return true
+ }
+
+ override fun findExistingAlgorithms(hostname: String?, port: Int): MutableList<String> {
+ return Collections.emptyList()
}
- hostKeyFile.writeText(hostKeyEntry)
- true
}
} else {
val hostKeyEntry = hostKeyFile.readText()
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 8e22f4d2..f4f227fc 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,14 +1,14 @@
# Centralized versions for dependencies that share versions
[versions]
-androidx_activity = "1.4.0-beta01"
+androidx_activity = "1.4.0"
androidx_test = "1.4.1-alpha03"
-compose = "1.1.0-alpha05"
+compose = "1.1.0-beta01"
composeSnapshot = "-"
coroutines = "1.5.2"
flowbinding = "1.2.0"
hilt = "2.39.1"
kotlin = "1.5.31"
-lifecycle = "2.4.0-rc01"
+lifecycle = "2.4.0"
[libraries]
# Kotlin dependencies
@@ -20,19 +20,19 @@ androidx-activity-ktx = { module = "androidx.activity:activity-ktx", version.ref
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx_activity" }
androidx-annotation = "androidx.annotation:annotation:1.2.0"
androidx-autofill = "androidx.autofill:autofill:1.2.0-beta01"
-androidx-appcompat = "androidx.appcompat:appcompat:1.4.0-beta01"
+androidx-appcompat = "androidx.appcompat:appcompat:1.4.0-rc01"
androidx-biometricKtx = "androidx.biometric:biometric-ktx:1.2.0-alpha03"
androidx-constraintlayout = "androidx.constraintlayout:constraintlayout:2.1.1"
-androidx-core-ktx = "androidx.core:core-ktx:1.7.0-beta02"
+androidx-core-ktx = "androidx.core:core-ktx:1.7.0"
androidx-documentfile = "androidx.documentfile:documentfile:1.1.0-alpha01"
-androidx-fragment-ktx = "androidx.fragment:fragment-ktx:1.4.0-alpha10"
+androidx-fragment-ktx = "androidx.fragment:fragment-ktx:1.4.0-beta01"
androidx-hilt-compose = "androidx.hilt:hilt-navigation-compose:1.0.0-alpha03"
androidx-lifecycle-common = { module = "androidx.lifecycle:lifecycle-common", version.ref="lifecycle" }
androidx-lifecycle-livedataKtx = { module = "androidx.lifecycle:lifecycle-livedata-ktx", version.ref="lifecycle" }
androidx-lifecycle-viewmodelKtx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref="lifecycle" }
androidx-lifecycle-viewmodel-compose = "androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07"
-androidx-material = "com.google.android.material:material:1.5.0-alpha04"
-androidx-preference = "androidx.preference:preference:1.1.1"
+androidx-material = "com.google.android.material:material:1.5.0-alpha05"
+androidx-preference = "androidx.preference:preference:1.2.0-alpha01"
androidx-recyclerview = "androidx.recyclerview:recyclerview:1.3.0-alpha01"
androidx-recyclerviewSelection = "androidx.recyclerview:recyclerview-selection:1.2.0-alpha01"
androidx-security = "androidx.security:security-crypto:1.1.0-alpha03"
@@ -75,9 +75,9 @@ thirdparty-kotlinResult = "com.michael-bull.kotlin-result:kotlin-result:1.1.12"
thirdparty-leakcanary = "com.squareup.leakcanary:leakcanary-android:2.7"
thirdparty-logcat = "com.squareup.logcat:logcat:0.1"
thirdparty-modernAndroidPrefs = "de.maxr1998:modernandroidpreferences:2.1.0"
-thirdparty-pgpainless = "org.pgpainless:pgpainless-core:0.2.17"
+thirdparty-pgpainless = "org.pgpainless:pgpainless-core:0.2.18"
thirdparty-plumber = "com.squareup.leakcanary:plumber-android:2.7"
-thirdparty-sshj = "com.hierynomus:sshj:0.31.0"
+thirdparty-sshj = "com.hierynomus:sshj:0.32.0"
thirdparty-sshauth = "com.github.open-keychain.open-keychain:sshauthentication-api:5.7.5"
thirdparty-whatthestack = "com.github.haroldadmin:WhatTheStack:0.3.1"
thirdparty-nonfree-googlePlayAuthApiPhone = "com.google.android.gms:play-services-auth-api-phone:17.5.1"