public async Task <bool> Verify(string series, string token, string identity, string verifyCode, int expiryLeewayMs) { Initialize(); var verification = await DoGetVerification(series); if (verification == null) { return(false); } identity = identity.ToLower(CultureUtils.CultureEnglish); if (!IdentityDigester.Verify(identity, verification.HashIdentity)) { return(false); } if (!TokenDigester.Verify(GetTokenData(token, identity, verifyCode, verification.ExpiresAtUtc.Value), verification.Token)) { return(false); } if (!DateUtils.IsFutureTime(verification.ExpiresAtUtc.Value, expiryLeewayMs)) { return(false); } return(true); }
public async Task <string> SaveVerification(string token, string identity, string verifyCode, int expiresInSec) { Initialize(); long curTimeMs = DateUtils.CurrentTimeMillis; long expiresAtUtc = curTimeMs + expiresInSec * 1000L; identity = identity.ToLower(CultureUtils.CultureEnglish); var verification = NewVerification(); verification.Series = NextSeries(); verification.Token = TokenDigester.Digest(GetTokenData(token, identity, verifyCode, expiresAtUtc)); verification.HashIdentity = IdentityDigester.Digest(identity); verification.ExpiresAtUtc = expiresAtUtc; verification.IssuedAtUtc = curTimeMs; await DoSaveVerification(verification); return(verification.Series); }