title: Android KeyStoreException:
body: <p>My app is using Android's keystore to encrypt some data after authenticating with a fingerprint. This seems to work on most devices but I have received error reports of OnePlus2 users with the exception</p>
  
  <pre><code>android.security.KeyStoreException: Signature/MAC verification failed
      at android.security.KeyStore.getKeyStoreException(KeyStore.java:632)
      at android.security.keystore.KeyStoreCryptoOperationChunkedStreamer.update(KeyStoreCryptoOperationChunkedStreamer.java:132)
      at android.security.keystore.KeyStoreCryptoOperationChunkedStreamer.doFinal(KeyStoreCryptoOperationChunkedStreamer.java:217)
      at android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:473)
      at javax.crypto.Cipher.doFinal(Cipher.java:1502)
  </code></pre>
  
  <p>My code basically does this (Written in Mono for Android):</p>
  
  <pre><code>Cipher _cipher = Cipher.GetInstance(KeyProperties.KeyAlgorithmAes + "/"
                                                + KeyProperties.BlockModeCbc + "/"
                                                + KeyProperties.EncryptionPaddingPkcs7);
  
  KeyStore _keystore = KeyStore.GetInstance("AndroidKeyStore");
  FingerprintManager _fingerprintManager = (FingerprintManager) Context.GetSystemService(Context.FingerprintService);
  
  _keystore.Load(null);
  var key = _keystore.GetKey(_keyId, null);
  _cipher.Init(CipherMode.EncryptMode, key);
  _cryptoObject = new FingerprintManager.CryptoObject(_cipher);
  _fingerprintManager.Authenticate(_cryptoObject, _cancellationSignal, 0 /* flags */, this, null);
  
  //OnAuthSucceeded:
  var mySecret = _cipher.DoFinal(System.Text.Encoding.UTF8.GetBytes(textToEncrypt));
  </code></pre>
  
  <p>Is there anything wrong with the code? What does the exception mean?</p>