Beispiel #1
0
        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)));
        }
Beispiel #2
0
        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);
            }
        }