Add unauthenticated AES ciphers backed by AndroidKeyStore.

This adds the following AES transformations:
* AES/ECB/NoPadding
* AES/ECB/PKCS7Padding
* AES/CBC/NoPadding
* AES/CBC/PKCS7Padding
* AES/CTR/NoPadding

Bug: 18088752
Change-Id: I3e4702e59868f8f2225c31b1c159d20008b9999d
This commit is contained in:
Alex Klyubin
2015-03-31 13:39:38 -07:00
parent 5491ea9e5b
commit b406f24291
7 changed files with 765 additions and 118 deletions

View File

@@ -93,7 +93,8 @@ public abstract class KeyStoreHmacSpi extends MacSpi {
throw new CryptoOperationException("Keystore returned null operation token");
}
mChunkedStreamer = new KeyStoreCryptoOperationChunkedStreamer(
new KeyStoreStreamingConsumer(mKeyStore, mOperationToken));
new KeyStoreCryptoOperationChunkedStreamer.MainDataStream(
mKeyStore, mOperationToken));
}
@Override
@@ -147,28 +148,4 @@ public abstract class KeyStoreHmacSpi extends MacSpi {
super.finalize();
}
}
/**
* KeyStore-backed consumer of {@code MacSpi}'s chunked stream.
*/
private static class KeyStoreStreamingConsumer
implements KeyStoreCryptoOperationChunkedStreamer.KeyStoreOperation {
private final KeyStore mKeyStore;
private final IBinder mOperationToken;
private KeyStoreStreamingConsumer(KeyStore keyStore, IBinder operationToken) {
mKeyStore = keyStore;
mOperationToken = operationToken;
}
@Override
public OperationResult update(byte[] input) {
return mKeyStore.update(mOperationToken, null, input);
}
@Override
public OperationResult finish(byte[] input) {
return mKeyStore.finish(mOperationToken, null, input);
}
}
}