Esempio n. 1
0
            public override string GetReadableOTP(PwEntry pe)
            {
                if (pe == null)
                {
                    return(string.Empty);
                }
                EntryOTP otp = EnsureEntry(pe);

                if (otp.ValidTo <= DateTime.UtcNow)
                {
                    if (otp.kpotp.Valid)
                    {
                        otp.ReadableOTP = otp.kpotp.ReadableOTP(otp.kpotp.GetOTP());
                        otp.ValidTo     = DateTime.UtcNow.AddSeconds(otp.kpotp.RemainingSeconds);
                    }
                    else
                    {
                        otp.ReadableOTP = PluginTranslation.PluginTranslate.Error;
                        otp.ValidTo     = DateTime.MaxValue;
                    }
                    UpdateOTPBuffer(pe, otp);
                }
                if ((otp.ValidTo == DateTime.MaxValue) || (otp.kpotp.Type == KPOTPType.HOTP))
                {
                    return(otp.ReadableOTP);
                }
                else
                {
                    int r = (otp.ValidTo - DateTime.UtcNow).Seconds;
                    return(otp.ReadableOTP + (r < 6 ? " (" + r.ToString() + ")" : string.Empty));
                }
            }
Esempio n. 2
0
            public override string GetReadableOTP(PwEntry pe)
            {
                if (!SetEntry(pe, false))
                {
                    return(string.Empty);
                }

                EntryOTP otp = EnsureEntry();

                if (otp.ValidTo < DateTime.UtcNow)
                {
                    if (otp.kpotp.Valid)
                    {
                        otp.ReadableOTP = otp.kpotp.ReadableOTP(otp.kpotp.GetOTP());
                        otp.ValidTo     = DateTime.UtcNow.AddSeconds(otp.kpotp.RemainingSeconds);
                    }
                    else if (otp.Loaded)
                    {
                        otp.ReadableOTP = PluginTranslate.Error;
                        otp.ValidTo     = DateTime.MaxValue;
                    }
                    if (otp.Loaded)
                    {
                        UpdateOTPBuffer(pe, otp);
                    }
                }
                if ((!otp.Loaded && Config.UseDBForOTPSeeds(otp.db)) || (otp.ValidTo == DateTime.MaxValue))
                {
                    return(otp.ReadableOTP);
                }

                int r = (otp.ValidTo - DateTime.UtcNow).Seconds;

                return(otp.ReadableOTP + (r < 6 ? " (" + r.ToString() + ")" : string.Empty));
            }
Esempio n. 3
0
 internal static void UpdateOTPBuffer(PwEntry pe, EntryOTP otp)
 {
     //Empty db path = db is closed
     if ((otp.db == null) || string.IsNullOrEmpty(otp.db.IOConnectionInfo.Path))
     {
         m_dEntryOTPData.Remove(pe);
         return;
     }
     m_dEntryOTPData[pe] = otp;
 }