mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Change intent challenge recognition
This commit is contained in:
@@ -39,6 +39,7 @@ class UnderDevelopmentFeatureDialogFragment : DialogFragment() {
|
||||
val builder = AlertDialog.Builder(activity)
|
||||
|
||||
val stringBuilder = SpannableStringBuilder()
|
||||
/*
|
||||
if (UriUtil.contributingUser(activity)) {
|
||||
stringBuilder.append(HtmlCompat.fromHtml(getString(R.string.html_text_dev_feature_thanks), HtmlCompat.FROM_HTML_MODE_LEGACY)).append("\n\n")
|
||||
.append(HtmlCompat.fromHtml(getString(R.string.html_rose), HtmlCompat.FROM_HTML_MODE_LEGACY)).append("\n\n")
|
||||
@@ -46,6 +47,7 @@ class UnderDevelopmentFeatureDialogFragment : DialogFragment() {
|
||||
.append(HtmlCompat.fromHtml(getString(R.string.html_text_dev_feature_upgrade), HtmlCompat.FROM_HTML_MODE_LEGACY)).append(" ")
|
||||
builder.setPositiveButton(android.R.string.ok) { _, _ -> dismiss() }
|
||||
} else {
|
||||
*/
|
||||
stringBuilder.append(HtmlCompat.fromHtml(getString(R.string.html_text_dev_feature), HtmlCompat.FROM_HTML_MODE_LEGACY)).append("\n\n")
|
||||
.append(HtmlCompat.fromHtml(getString(R.string.html_text_dev_feature_contibute), HtmlCompat.FROM_HTML_MODE_LEGACY)).append(" ")
|
||||
.append(HtmlCompat.fromHtml(getString(R.string.html_text_dev_feature_encourage), HtmlCompat.FROM_HTML_MODE_LEGACY))
|
||||
@@ -53,7 +55,7 @@ class UnderDevelopmentFeatureDialogFragment : DialogFragment() {
|
||||
UriUtil.gotoUrl(requireContext(), R.string.contribution_url)
|
||||
}
|
||||
builder.setNegativeButton(android.R.string.cancel) { _, _ -> dismiss() }
|
||||
}
|
||||
//}
|
||||
builder.setMessage(stringBuilder)
|
||||
// Create the AlertDialog object and return it
|
||||
return builder.create()
|
||||
|
||||
@@ -13,6 +13,7 @@ import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.kunzisoft.keepass.R
|
||||
import com.kunzisoft.keepass.activities.dialogs.UnderDevelopmentFeatureDialogFragment
|
||||
import com.kunzisoft.keepass.utils.UriUtil
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@@ -37,8 +38,8 @@ class HardwareKeyResponseHelper {
|
||||
extra: Bundle?) -> Unit) {
|
||||
val resultCallback = ActivityResultCallback<ActivityResult> { result ->
|
||||
if (result.resultCode == Activity.RESULT_OK) {
|
||||
val challengeResponse: ByteArray? = result.data?.getByteArrayExtra("response")
|
||||
Log.d(TAG, "Response form challenge : " + challengeResponse.contentToString())
|
||||
val challengeResponse: ByteArray? = result.data?.getByteArrayExtra(HARDWARE_KEY_RESPONSE_KEY)
|
||||
Log.d(TAG, "Response form challenge")
|
||||
onChallengeResponded.invoke(challengeResponse,
|
||||
result.data?.getBundleExtra(EXTRA_BUNDLE_KEY))
|
||||
} else {
|
||||
@@ -64,7 +65,7 @@ class HardwareKeyResponseHelper {
|
||||
fun launchChallengeForResponse(hardwareKey: HardwareKey, seed: ByteArray?) {
|
||||
when (hardwareKey) {
|
||||
HardwareKey.FIDO2_SECRET -> {
|
||||
// TODO FIDO2
|
||||
// TODO FIDO2 under development
|
||||
throw Exception("FIDO2 not implemented")
|
||||
}
|
||||
HardwareKey.CHALLENGE_RESPONSE_YUBIKEY -> {
|
||||
@@ -76,10 +77,12 @@ class HardwareKeyResponseHelper {
|
||||
challenge.fill(32, 32, 64)
|
||||
}
|
||||
// Send to the driver
|
||||
getChallengeResponseResultLauncher!!.launch(Intent(YKDROID_CHALLENGE_RESPONSE_INTENT).apply {
|
||||
putExtra(YKDROID_SEED_KEY, challenge)
|
||||
})
|
||||
Log.d(TAG, "Challenge sent : " + challenge.contentToString())
|
||||
getChallengeResponseResultLauncher!!.launch(
|
||||
Intent(YUBIKEY_CHALLENGE_RESPONSE_INTENT).apply {
|
||||
putExtra(HARDWARE_KEY_CHALLENGE_KEY, challenge)
|
||||
}
|
||||
)
|
||||
Log.d(TAG, "Challenge sent")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -87,10 +90,11 @@ class HardwareKeyResponseHelper {
|
||||
companion object {
|
||||
private val TAG = HardwareKeyResponseHelper::class.java.simpleName
|
||||
|
||||
private const val YKDROID_PACKAGE = "net.pp3345.ykdroid"
|
||||
private const val YKDROID_CHALLENGE_RESPONSE_INTENT =
|
||||
"$YKDROID_PACKAGE.intent.action.CHALLENGE_RESPONSE"
|
||||
private const val YKDROID_SEED_KEY = "challenge"
|
||||
private const val YUBIKEY_CHALLENGE_RESPONSE_INTENT =
|
||||
"net.pp3345.ykdroid.intent.action.CHALLENGE_RESPONSE"
|
||||
// TODO Change to a generic "android.yubikey.intent.action.CHALLENGE_RESPONSE"
|
||||
private const val HARDWARE_KEY_CHALLENGE_KEY = "challenge"
|
||||
private const val HARDWARE_KEY_RESPONSE_KEY = "response"
|
||||
private const val EXTRA_BUNDLE_KEY = "EXTRA_BUNDLE_KEY"
|
||||
|
||||
fun isHardwareKeyAvailable(
|
||||
@@ -100,14 +104,20 @@ class HardwareKeyResponseHelper {
|
||||
): Boolean {
|
||||
return when (hardwareKey) {
|
||||
HardwareKey.FIDO2_SECRET -> {
|
||||
// TODO FIDO2
|
||||
// TODO FIDO2 under development
|
||||
if (showDialog)
|
||||
showHardwareKeyDriverNeeded(activity, hardwareKey)
|
||||
UnderDevelopmentFeatureDialogFragment()
|
||||
.show(activity.supportFragmentManager, "underDevFeatureDialog")
|
||||
false
|
||||
}
|
||||
HardwareKey.CHALLENGE_RESPONSE_YUBIKEY -> {
|
||||
// TODO (UriUtil.isExternalAppInstalled(activity, KEEPASSDX_PRO_PACKAGE)
|
||||
UriUtil.isExternalAppInstalled(activity, YKDROID_PACKAGE)
|
||||
// Check available intent
|
||||
val yubikeyDriverAvailable =
|
||||
Intent(YUBIKEY_CHALLENGE_RESPONSE_INTENT)
|
||||
.resolveActivity(activity.packageManager) != null
|
||||
if (showDialog && !yubikeyDriverAvailable)
|
||||
showHardwareKeyDriverNeeded(activity, hardwareKey)
|
||||
yubikeyDriverAvailable
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
<string name="app_name_part3" translatable="false">Pro</string>
|
||||
|
||||
<string name="app_pro_url" translatable="false">https://play.google.com/store/apps/details?id=com.kunzisoft.keepass.pro</string>
|
||||
<string name="contribution_url" translatable="false">https://www.keepassdx.com/contribution</string>
|
||||
<string name="contribution_url" translatable="false">https://www.keepassdx.com/#donation</string>
|
||||
<string name="homepage_url" translatable="false">https://www.keepassdx.com</string>
|
||||
<string name="external_icon_url" translatable="false">https://www.keepassdx.com/#icons</string>
|
||||
<string name="issues_url" translatable="false">https://github.com/Kunzisoft/KeePassDX/issues</string>
|
||||
|
||||
Reference in New Issue
Block a user