From c57515fed568b8b42873caf9abe843f7909919b2 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Thu, 12 Nov 2020 14:59:39 +0100 Subject: [PATCH] Fix small OTP Auth syntax #556 --- .../com/kunzisoft/keepass/otp/OtpEntryFields.kt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/otp/OtpEntryFields.kt b/app/src/main/java/com/kunzisoft/keepass/otp/OtpEntryFields.kt index 445e177f7..404e1272d 100644 --- a/app/src/main/java/com/kunzisoft/keepass/otp/OtpEntryFields.kt +++ b/app/src/main/java/com/kunzisoft/keepass/otp/OtpEntryFields.kt @@ -238,15 +238,15 @@ object OtpEntryFields { } val issuer = if (title != null && title.isNotEmpty()) - Uri.encode(title) + encodeParameter(title) else - Uri.encode(otpElement.issuer) + encodeParameter(otpElement.issuer) val accountName = if (username != null && username.isNotEmpty()) - Uri.encode(username) + encodeParameter(username) else - Uri.encode(otpElement.name) - val uriString = StringBuilder("otpauth://$otpAuthority/$issuer:$accountName" + + encodeParameter(otpElement.name) + val uriString = StringBuilder("otpauth://$otpAuthority/$issuer%3A$accountName" + "?$SECRET_URL_PARAM=${otpElement.getBase32Secret()}" + "&$counterOrPeriodLabel=$counterOrPeriodValue" + "&$DIGITS_URL_PARAM=${otpElement.digits}" + @@ -260,6 +260,10 @@ object OtpEntryFields { return Uri.parse(uriString.toString()) } + private fun encodeParameter(parameter: String): String { + return Uri.encode(parameter.replace("[\\r|\\n|\\t|\\u00A0]+".toRegex(), "")) + } + private fun parseTOTPKeyValues(getField: (id: String) -> String?, otpElement: OtpElement): Boolean { val plainText = getField(OTP_FIELD) if (plainText != null && plainText.isNotEmpty()) {