public NvStreamDevice(IPAddress ipAddress, CryptoProvider cryptoProvider) { IPAddress = ipAddress; CryptoProvider = cryptoProvider; NvHttp = new NvHttp(new Uri($"http://{IPAddress}:{HTTP_PORT}/")); Online = false; }
protected async override void OnNavigatedTo(NavigationEventArgs e) { SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed; CryptoProvider = new CryptoProvider(); await CryptoProvider.Initialize(); if (StreamDevices.Count == 0) { await GetItemsAsync(); } base.OnNavigatedTo(e); }
public async Task <bool> Pair() { // Generate salt for hashing the pin byte[] salt = CryptoProvider.GenerateRandomBytes(16); // Combine sal and pin and generate aes key from them string pin = CryptoProvider.GeneratePin(); byte[] saltedPin = CryptoProvider.SaltPin(salt, pin); KeyParameter aesKey = CryptoProvider.GenerateAesKey(EnhancedSecurity, saltedPin); // Send the salt and get server cert. This doesn't have read timeout // because the user must enter the PIN before the server responds NvPair getServerCertResponse = await NvHttp.GetServerCert(salt, CryptoProvider.GetCertificatePem()); }
public static async Task <List <NvStreamDevice> > DiscoverStreamDevices(CryptoProvider cryptoProvider) { List <NvStreamDevice> streamDevices = new List <NvStreamDevice>(); IReadOnlyList <IZeroconfHost> results = await ZeroconfResolver.ResolveAsync(ZEROCONF_PROTOCOL); foreach (var result in results) { NvStreamDevice streamDevice = new NvStreamDevice(IPAddress.Parse(result.IPAddress), cryptoProvider); streamDevice.Online = true; await streamDevice.QueryDataInsecure(); streamDevices.Add(streamDevice); } return(streamDevices); }