Esempio n. 1
0
        private static async Task TestNew2()
        {
            var hidFactory = Win32HidDeviceFactory.Instance;
            var keyFactory = new U2FHidKeyFactory(hidFactory);

            var dataStore = new InMemoryServerDataStore(new GuidSessionIdGenerator());
            LoadDataStore(dataStore);
            var server = new U2FServerReferenceImpl(
                new ChallengeGenerator(),
                dataStore,
                new BouncyCastleServerCrypto(),
                new[] {"http://example.com", "https://example.com"});

            var myClient = new U2FClient(
                new DummySender("http://example.com", new JObject()),
                keyFactory);

            Console.WriteLine("Register or Sign ? (r/s)");
            var mode = Console.ReadLine();

            if (mode == "s")
            {
                var signRequests = server.GetSignRequests("vbfox", "http://example.com");
                Console.WriteLine("Sign requests obtained ({0})", signRequests.Count);
                var cts = new CancellationTokenSource(TimeSpan.FromMinutes(10));
                var x = await myClient.Sign(signRequests, cts.Token);

                Console.WriteLine("Signature done {0}", x);
                if (x != null)
                {
                    var serverResp = server.ProcessSignResponse(x);
                    Console.WriteLine("Server ok: {0}", serverResp);
                    SaveDataStore(dataStore);
                }
            }
            else if (mode == "r")
            {
                var signRequests = server.GetSignRequests("vbfox", "http://example.com");
                var regRequest = server.GetRegistrationRequest("vbfox", "http://example.com");
                var cts = new CancellationTokenSource(TimeSpan.FromMinutes(10));
                var x = await myClient.Register(new[] { regRequest }, signRequests, cts.Token);

                Console.WriteLine("Authentication done {0}", x);
                if (x != null)
                {
                    var serverResp = server.ProcessRegistrationResponse(x, ToUnixTimeMilliseconds(SystemClock.Instance.Now));
                    Console.WriteLine("Server ok: {0}", serverResp);
                    SaveDataStore(dataStore);
                }
            }
            else
            {
                Console.WriteLine("???");
            }

            Console.ReadLine();
            return;
        }
Esempio n. 2
0
        async void EnrollClicked(object sender, RoutedEventArgs e)
        {
            var keyDict = new ConcurrentDictionary<IKeyId, bool>();
            textBox.Text = "";
            var hidFactory = new UwpHidDeviceFactory(Dispatcher);
            var keyFactory = new U2FHidKeyFactory(hidFactory);

            var dataStore = new InMemoryServerDataStore(new GuidSessionIdGenerator());
            var server = new U2FServerReferenceImpl(
                new ChallengeGenerator(),
                dataStore,
                new BouncyCastleServerCrypto(),
                new[] { "http://example.com", "https://example.com" });

            var myClient = new U2FClient(
                new DummySender("http://example.com", new JObject()),
                keyFactory);

            var signRequests = server.GetSignRequests("vbfox", "http://example.com");
            var regRequest = server.GetRegistrationRequest("vbfox", "http://example.com");
            var cts = new CancellationTokenSource(TimeSpan.FromMinutes(10));

            textBox.Text += "Register...\r\n";
            var x = await myClient.Register(new[] { regRequest }, signRequests, cts.Token);
            textBox.Text += "Register done, sending to server\r\n";

            var serverResp = server.ProcessRegistrationResponse(x, ToUnixTimeMilliseconds(SystemClock.Instance.Now));
            textBox.Text += "Server OK\r\n";
            textBox.Text += $"{serverResp}\r\n";
        }