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()); }