コード例 #1
0
        async void _dispatcher_Tick(object sender, object e)
        {
            if (_state == GenerationState.None)
            {
                StartStopButton.Content = "Generate";
                _dispatcher.Stop();
                return;
            }

            var multiplier = _random.NextDouble() * 100;
            var vectorX    = multiplier * (_gyroReading.AngularVelocityX + 1) * (_forceReading.AccelerationX + 1);
            var vectorY    = multiplier * (_gyroReading.AngularVelocityY + 1) * (_forceReading.AccelerationY + 1);
            var vectorZ    = multiplier * (_gyroReading.AngularVelocityZ + 1) * (_forceReading.AccelerationZ + 1);

            var value = Math.Sqrt(Math.Pow(vectorX, 2) + Math.Pow(vectorY, 2) + Math.Pow(vectorZ, 2));

            while (value > Characters.Length)
            {
                value *= _random.NextDouble();
            }

            _generatedSecrets.Add(Characters[(int)value]);
            ProgressBar.Value  = _generatedSecrets.Count;
            _newSecretCode     = string.Join(" ", _generatedSecrets);
            SecretDisplay.Text = _newSecretCode;
            if (_generatedSecrets.Count == 15)
            {
                _state = GenerationState.None;
                StartStopButton.Content = "Generate";
                _dispatcher.Stop();
                ApplyButton.IsEnabled      = true;
                _newSecretCodeWithChecksum = _newSecretCode + SecretChecksum.Compute(_newSecretCode);
                SecretDisplay.Text         = _newSecretCodeWithChecksum;
                return;
            }

            await Task.Delay(TimeSpan.FromSeconds(_random.NextDouble() * 2.5 + 0.5));
        }
コード例 #2
0
        private void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
        {
            ErrorMessage.Text = "";

            if (Secret.Text.Length != 16)
            {
                ErrorMessage.Text = "Secret key must have length of 16.";
                args.Cancel       = true;
                return;
            }

            var secret   = Secret.Text.Substring(0, 15);
            var checksum = Secret.Text[15];

            if (SecretChecksum.Compute(secret) != checksum)
            {
                ErrorMessage.Text = "Provided secret key is invalid. Checksum is incorrect.";
                args.Cancel       = true;
                return;
            }

            SettingsProvider.SecretSequence = secret;
        }