From b9c2b61712b84f0de78c732b7d3561aeba39ae2a Mon Sep 17 00:00:00 2001 From: Oscar Guindzberg Date: Fri, 28 Dec 2018 16:38:22 -0300 Subject: [PATCH] DRMWorkaround: Remove final modifier from JceSecurity.isRestricted(). This is needed for Oracle JDK 8 (u192). --- core/src/main/java/org/bitcoinj/crypto/DRMWorkaround.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/src/main/java/org/bitcoinj/crypto/DRMWorkaround.java b/core/src/main/java/org/bitcoinj/crypto/DRMWorkaround.java index af053569..fd929afc 100644 --- a/core/src/main/java/org/bitcoinj/crypto/DRMWorkaround.java +++ b/core/src/main/java/org/bitcoinj/crypto/DRMWorkaround.java @@ -23,6 +23,7 @@ import org.slf4j.LoggerFactory; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.lang.reflect.Modifier; public class DRMWorkaround { private static Logger log = LoggerFactory.getLogger(DRMWorkaround.class); @@ -43,6 +44,9 @@ public class DRMWorkaround { try { Field gate = Class.forName("javax.crypto.JceSecurity").getDeclaredField("isRestricted"); gate.setAccessible(true); + Field modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + modifiersField.setInt(gate, gate.getModifiers() & ~Modifier.FINAL); gate.setBoolean(null, false); final Field allPerm = Class.forName("javax.crypto.CryptoAllPermission").getDeclaredField("INSTANCE"); allPerm.setAccessible(true);