Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c869ac1b authored by Alex Klyubin's avatar Alex Klyubin Committed by Android Git Automerger
Browse files

am ec029e55: am b292e49b: Merge "Obtain SPI without using Reflection."

* commit 'ec029e55':
  Obtain SPI without using Reflection.
parents 1327fa9e ec029e55
Loading
Loading
Loading
Loading
+7 −14
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package android.security;

import java.lang.reflect.Method;
import java.security.Provider;

import javax.crypto.Cipher;
@@ -92,19 +91,13 @@ public class AndroidKeyStoreProvider extends Provider {
        if (cryptoPrimitive == null) {
            throw new NullPointerException();
        }
        if ((!(cryptoPrimitive instanceof Mac)) && (!(cryptoPrimitive instanceof Cipher))) {
            throw new IllegalArgumentException("Unsupported crypto primitive: " + cryptoPrimitive);
        }
        Object spi;
        // TODO: Replace this Reflection based codewith direct invocations once the libcore changes
        // are in.
        try {
            Method getSpiMethod = cryptoPrimitive.getClass().getDeclaredMethod("getSpi");
            getSpiMethod.setAccessible(true);
            spi = getSpiMethod.invoke(cryptoPrimitive);
        } catch (ReflectiveOperationException e) {
            throw new IllegalArgumentException(
                    "Unsupported crypto primitive: " + cryptoPrimitive, e);
        if (cryptoPrimitive instanceof Mac) {
            spi = ((Mac) cryptoPrimitive).getSpi();
        } else if (cryptoPrimitive instanceof Cipher) {
            spi = ((Cipher) cryptoPrimitive).getSpi();
        } else {
            throw new IllegalArgumentException("Unsupported crypto primitive: " + cryptoPrimitive);
        }
        if (!(spi instanceof KeyStoreCryptoOperation)) {
            throw new IllegalArgumentException(