哈喽,我在使用华为Mate10Pro(Android 10)<bouncycastle>库时发现异常问题。
在判断SDK版本大于等于Android-P获取KeyFactory时,Mate10Pro异常报错,同等判断条件下VIVO,OPPO,SAMSUNG无碍,辛苦帮忙确定一下是否是定制化问题,以及是否华为全机型会有该问题,感谢。
public static KeyFactory getInstance(final Provider provider) { KeyFactory keyFactory; try { String ALGORITHM = "ECDSA" if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { keyFactory = KeyFactory.getInstance(ALGORITHM); } else { keyFactory = KeyFactory.getInstance(ALGORITHM, provider); return keyFactory; } catch (NoSuchAlgorithmException ex) { Sentry.capture(ex); throw new AssertionError(algorithmAssertionMsg, ex); public final class CustomCastleProvider { public static Provider getInstance() { return Holder.INSTANCE; private static class Holder { private static final Provider INSTANCE; static { Security.removeProvider(BouncyCastleProvider.PROVIDER_NAME); Provider p = Security.getProvider(BouncyCastleProvider.PROVIDER_NAME); INSTANCE = (p != null) ? p : new BouncyCastleProvider(); INSTANCE.put("MessageDigest.TRON-KECCAK-256", "org.tron.common.crypto" + ".cryptohash.Keccak256"); INSTANCE.put("MessageDigest.TRON-KECCAK-512", "org.tron.common.crypto" + ".cryptohash.Keccak512"); }复制
public static KeyFactory getInstance(final Provider provider) { KeyFactory keyFactory; try { String ALGORITHM = "ECDSA" if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { keyFactory = KeyFactory.getInstance(ALGORITHM); } else { keyFactory = KeyFactory.getInstance(ALGORITHM, provider); return keyFactory; } catch (NoSuchAlgorithmException ex) { Sentry.capture(ex); throw new AssertionError(algorithmAssertionMsg, ex); public final class CustomCastleProvider { public static Provider getInstance() { return Holder.INSTANCE; private static class Holder { private static final Provider INSTANCE; static { Security.removeProvider(BouncyCastleProvider.PROVIDER_NAME); Provider p = Security.getProvider(BouncyCastleProvider.PROVIDER_NAME); INSTANCE = (p != null) ? p : new BouncyCastleProvider(); INSTANCE.put("MessageDigest.TRON-KECCAK-256", "org.tron.common.crypto" + ".cryptohash.Keccak256"); INSTANCE.put("MessageDigest.TRON-KECCAK-512", "org.tron.common.crypto" + ".cryptohash.Keccak512"); }