public async Task <UserVerificationInfo> SendVerificationCodeAsync(InternationalPhone phone) { var secretKey = new byte[6]; using (var rng = new RNGCryptoServiceProvider()) { rng.GetBytes(secretKey); } var otp = new Totp(secretKey, step: GenerationDelaySeconds); string code = otp.ComputeTotp(DateTime.UtcNow); await sms.SendAsync(phone, $"Code: {code}"); return(new UserVerificationInfo(phone, Convert.ToBase64String(secretKey))); }
public static bool TryParse(string phone, out InternationalPhone parsed) { PhoneNumberUtil util = PhoneNumberUtil.GetInstance(); try { PhoneNumber phoneNumber = util.Parse(phone, null); parsed = new InternationalPhone(util.Format(phoneNumber, PhoneNumberFormat.INTERNATIONAL)); return(true); } catch (NumberParseException) { parsed = null; return(false); } }