public UwpHidDeviceInformation([NotNull] UwpHidDeviceFactory factory, [NotNull] DeviceInformation deviceInformation) { if (factory == null) { throw new ArgumentNullException(nameof(factory)); } if (deviceInformation == null) { throw new ArgumentNullException(nameof(deviceInformation)); } this.factory = factory; this.deviceInformation = deviceInformation; }
async void U2fClicked(object sender, RoutedEventArgs e) { textBox.Text = ""; var hidFactory = new UwpHidDeviceFactory(Dispatcher); var u2FFactory = new U2FHidKeyFactory(hidFactory); var u2FDevices = await u2FFactory.FindAllAsync(); var sb = new StringBuilder(); foreach (var device in u2FDevices) { sb.AppendLine($"{device.Product} (By {device.Manufacturer})"); } textBox.Text = sb.ToString(); }
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"; }