From 8bc662c9c02824718cb9c297fd3b3cf77fb8f2c9 Mon Sep 17 00:00:00 2001 From: Fabian Henneke Date: Mon, 29 Jun 2020 10:12:19 +0200 Subject: Offer TOTP Autofill for OTP fields (#899) --- app/src/main/java/com/zeapo/pwdstore/model/PasswordEntry.kt | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'app/src/main/java/com/zeapo/pwdstore/model') diff --git a/app/src/main/java/com/zeapo/pwdstore/model/PasswordEntry.kt b/app/src/main/java/com/zeapo/pwdstore/model/PasswordEntry.kt index da2d57c6..27a0c584 100644 --- a/app/src/main/java/com/zeapo/pwdstore/model/PasswordEntry.kt +++ b/app/src/main/java/com/zeapo/pwdstore/model/PasswordEntry.kt @@ -4,10 +4,12 @@ */ package com.zeapo.pwdstore.model +import com.zeapo.pwdstore.utils.Otp import com.zeapo.pwdstore.utils.TotpFinder import com.zeapo.pwdstore.utils.UriTotpFinder import java.io.ByteArrayOutputStream import java.io.UnsupportedEncodingException +import java.util.Date /** * A single entry in password store. [totpFinder] is an implementation of [TotpFinder] that let's us @@ -50,6 +52,12 @@ class PasswordEntry(content: String, private val totpFinder: TotpFinder = UriTot return username != null } + fun calculateTotpCode(): String? { + if (totpSecret == null) + return null + return Otp.calculateCode(totpSecret, Date().time / (1000 * totpPeriod), totpAlgorithm, digits) + } + val extraContentWithoutAuthData by lazy { extraContent.splitToSequence("\n").filter { line -> return@filter when { -- cgit v1.2.3