From 35cfe261d224c37fff9b5332c919cfccfb5b0916 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Wed, 10 Feb 2021 17:56:22 +0100 Subject: [PATCH] Change Regex to allow infinite OTP padding #585 --- app/src/main/java/com/kunzisoft/keepass/otp/OtpElement.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/otp/OtpElement.kt b/app/src/main/java/com/kunzisoft/keepass/otp/OtpElement.kt index bddb8a284..5244fac28 100644 --- a/app/src/main/java/com/kunzisoft/keepass/otp/OtpElement.kt +++ b/app/src/main/java/com/kunzisoft/keepass/otp/OtpElement.kt @@ -210,13 +210,13 @@ data class OtpElement(var otpModel: OtpModel = OtpModel()) { fun isValidBase32(secret: String): Boolean { val secretChars = replaceBase32Chars(secret) return secret.isNotEmpty() - && (Pattern.matches("^(?:[A-Z2-7]{8})*(?:[A-Z2-7]{2}={6}|[A-Z2-7]{4}={4}|[A-Z2-7]{5}={3}|[A-Z2-7]{7}=)?$", secretChars)) + && (Pattern.matches("^(?:[A-Z2-7]{8})*(?:[A-Z2-7]{2}=*|[A-Z2-7]{4}=*|[A-Z2-7]{5}=*|[A-Z2-7]{7}=*)?$", secretChars)) } fun isValidBase64(secret: String): Boolean { // TODO replace base 64 chars return secret.isNotEmpty() - && (Pattern.matches("^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$", secret)) + && (Pattern.matches("^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}=*|[A-Za-z0-9+/]{3}=*)?$", secret)) } fun replaceBase32Chars(parameter: String): String {