diff --git a/pom.xml b/pom.xml
index 93a0afc..e107a6a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -117,7 +117,7 @@
                     <sourceEncoding>utf-8</sourceEncoding>
                     <failOnViolation>true</failOnViolation>
                     <verbose>true</verbose>
-                    <targetJdk>1.6</targetJdk>
+                    <targetJdk>${targetJdk}</targetJdk>
                 </configuration>
                 <executions>
                     <execution>
@@ -135,8 +135,8 @@
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version>3.3</version>
                 <configuration>
-                    <source>1.6</source>
-                    <target>1.6</target>
+                    <source>${targetJdk}</source>
+                    <target>${targetJdk}</target>
                 </configuration>
             </plugin>
             
@@ -270,6 +270,54 @@
                 <artifactId>maven-javadoc-plugin</artifactId>
                 <version>2.10.3</version>
             </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>animal-sniffer-maven-plugin</artifactId>
+                <version>1.13</version>
+                <configuration>
+                    <signature>
+                        <groupId>org.codehaus.mojo.signature</groupId>
+                        <artifactId>java16</artifactId>
+                        <version>1.0</version>
+                   </signature>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>check-java-compatibility</id>
+                        <phase>process-classes</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-enforcer-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>enforce-bytecode-version</id>
+                        <goals>
+                            <goal>enforce</goal>
+                        </goals>
+                        <configuration>
+                            <rules>
+                                <enforceBytecodeVersion>
+                                    <maxJdkVersion>${targetJdk}</maxJdkVersion>
+                                </enforceBytecodeVersion>
+                            </rules>
+                            <fail>true</fail>
+                        </configuration>
+                    </execution>
+                </executions>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>extra-enforcer-rules</artifactId>
+                        <version>1.0-beta-3</version>
+                    </dependency>
+                </dependencies>
+            </plugin>
 
         </plugins>
 
@@ -298,7 +346,6 @@
                     <configuration>
                         <reportFormat>brief</reportFormat>
                         <useFile>false</useFile>
-                        <forkMode>pertest</forkMode>
                         <childDelegation>false</childDelegation>
                         <includes>
                             <include>**/*Test.java</include>
@@ -403,6 +450,8 @@
         <woodstox.core.asl.version>4.4.1</woodstox.core.asl.version>
         <jetty.version>8.1.17.v20150415</jetty.version>
         <xmlsec.jaxb.context.class />
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <targetJdk>1.6</targetJdk>
     </properties>
     
     <dependencies>
diff --git a/src/test/java/javax/xml/crypto/test/KeySelectors.java b/src/test/java/javax/xml/crypto/test/KeySelectors.java
index b300626..f81e978 100644
--- a/src/test/java/javax/xml/crypto/test/KeySelectors.java
+++ b/src/test/java/javax/xml/crypto/test/KeySelectors.java
@@ -25,6 +25,7 @@
 import java.security.*;
 import java.security.cert.*;
 import java.util.*;
+
 import javax.xml.crypto.*;
 import javax.xml.crypto.dsig.keyinfo.*;
 import javax.crypto.SecretKey;
@@ -170,31 +171,38 @@
      * matching public key.
      */
     public static class CollectionKeySelector extends KeySelector {
-        private CertificateFactory certFac;
-        private File certDir;
-        private List<X509Certificate> certs;
+        private final CertificateFactory certFac;
+        private final File certDir;
+        private final List<X509Certificate> certs = new ArrayList<X509Certificate>();
         private static final int MATCH_SUBJECT = 0;
         private static final int MATCH_ISSUER = 1;
         private static final int MATCH_SERIAL = 2;
         private static final int MATCH_SUBJECT_KEY_ID = 3;
         private static final int MATCH_CERTIFICATE = 4;
         
-        public CollectionKeySelector(File dir) {
+        public CollectionKeySelector(File dir) throws CertificateException {
             certDir = dir;
-            try {
-                certFac = CertificateFactory.getInstance("X509");
-            } catch (CertificateException ex) {
-                // not going to happen
-            }
-            certs = new Vector<X509Certificate>();
+            certFac = CertificateFactory.getInstance("X509");
             File[] files = new File(certDir, "certs").listFiles();
             if (files != null) {
                 for (File file : files) {
+                    FileInputStream fis = null;
                     try {
-                        certs.add((X509Certificate)certFac.generateCertificate
-                                  (new FileInputStream(file)));
+                        fis = new FileInputStream(file);
+                        X509Certificate cert = (X509Certificate)certFac.generateCertificate(fis);
+                        if (cert != null) {
+                            certs.add(cert);
+                        }
                     } catch (Exception ex) {
                         // ignore non-cert files
+                    } finally {
+                        if (fis != null) {
+                            try {
+                                fis.close();
+                            } catch (IOException e) {
+                                // ignore
+                            }
+                        }
                     }
                 }
             }
@@ -203,7 +211,7 @@
         public List<X509Certificate> match(
             int matchType, Object value, List<X509Certificate> pool
         ) {
-            List<X509Certificate> matchResult = new Vector<X509Certificate>();
+            List<X509Certificate> matchResult = new ArrayList<X509Certificate>();
             
             for (X509Certificate c : pool) {
                 
diff --git a/src/test/java/javax/xml/crypto/test/dsig/Baltimore18Test.java b/src/test/java/javax/xml/crypto/test/dsig/Baltimore18Test.java
index 8303dcb..ed65ada 100644
--- a/src/test/java/javax/xml/crypto/test/dsig/Baltimore18Test.java
+++ b/src/test/java/javax/xml/crypto/test/dsig/Baltimore18Test.java
@@ -23,9 +23,10 @@
 
 import java.io.File;
 import java.security.Security;
+import java.security.cert.CertificateException;
+
 import javax.xml.crypto.KeySelector;
 import javax.xml.crypto.URIDereferencer;
-
 import javax.xml.crypto.test.KeySelectors;
 
 /**
@@ -36,7 +37,6 @@
  */
 public class Baltimore18Test extends org.junit.Assert {
 
-    private SignatureValidator validator;
     private File dir;
     private KeySelector cks;
     private URIDereferencer ud;
@@ -46,14 +46,13 @@
             (new org.apache.jcp.xml.dsig.internal.dom.XMLDSigRI(), 1);
     }
 
-    public Baltimore18Test() {
+    public Baltimore18Test() throws CertificateException {
         String base = System.getProperty("basedir") == null ? "./": System.getProperty("basedir");
         
         String fs = System.getProperty("file.separator");
         dir = new File(base + fs + "src/test/resources" + fs + "ie" +
             fs + "baltimore" + fs + "merlin-examples",
             "merlin-xmldsig-eighteen");
-        validator = new SignatureValidator(dir);
         cks = new KeySelectors.CollectionKeySelector(dir);
         ud = new LocalHttpCacheURIDereferencer();
     }
@@ -62,6 +61,7 @@
     public void testSignatureKeyname() throws Exception {
         String file = "signature-keyname.xml";
         
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate(file, cks, ud);
         assertTrue("Signature failed core validation", coreValidity);
     }
@@ -70,6 +70,7 @@
     public void testSignatureRetrievalmethodRawx509crt() throws Exception {
         String file = "signature-retrievalmethod-rawx509crt.xml";
 
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate(file, cks, ud);
         assertTrue("Signature failed core validation", coreValidity);
     }
@@ -78,6 +79,7 @@
     public void testSignatureX509CrtCrl() throws Exception {
         String file = "signature-x509-crt-crl.xml";
 
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate(file, cks, ud);
         assertTrue("Signature failed core validation", coreValidity);
     }
@@ -86,6 +88,7 @@
     public void testSignatureX509Crt() throws Exception {
         String file = "signature-x509-crt.xml";
 
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate(file, cks, ud);
         assertTrue("Signature failed core validation", coreValidity);
     }
@@ -94,6 +97,7 @@
     public void testSignatureX509Is() throws Exception {
         String file = "signature-x509-is.xml";
 
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate(file, cks, ud);
         assertTrue("Signature failed core validation", coreValidity);
     }
@@ -102,6 +106,7 @@
     public void testSignatureX509Ski() throws Exception {
         String file = "signature-x509-ski.xml";
 
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate(file, cks, ud);
         assertTrue("Signature failed core validation", coreValidity);
     }
@@ -110,6 +115,7 @@
     public void testSignatureX509Sn() throws Exception {
         String file = "signature-x509-sn.xml";
 
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate(file, cks, ud);
         assertTrue("Signature failed core validation", coreValidity);
     }
diff --git a/src/test/java/javax/xml/crypto/test/dsig/Baltimore23Test.java b/src/test/java/javax/xml/crypto/test/dsig/Baltimore23Test.java
index 5f2b38d..11dad72 100644
--- a/src/test/java/javax/xml/crypto/test/dsig/Baltimore23Test.java
+++ b/src/test/java/javax/xml/crypto/test/dsig/Baltimore23Test.java
@@ -39,7 +39,6 @@
  */
 public class Baltimore23Test extends org.junit.Assert {
 
-    private SignatureValidator validator;
     private File dir;
     private final URIDereferencer ud;
 
@@ -55,7 +54,6 @@
         dir = new File(base + fs + "src/test/resources" + fs 
             + "ie" + fs + "baltimore" + fs + "merlin-examples",
             "merlin-xmldsig-twenty-three");
-        validator = new SignatureValidator(dir);
         ud = new LocalHttpCacheURIDereferencer();
     }
 
@@ -63,6 +61,7 @@
     public void test_signature_enveloped_dsa() throws Exception {
         String file = "signature-enveloped-dsa.xml";
 
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate
             (file, new KeySelectors.KeyValueKeySelector());
         assertTrue("Signature failed core validation", coreValidity);
@@ -72,6 +71,7 @@
     public void test_signature_enveloping_b64_dsa() throws Exception {
         String file = "signature-enveloping-b64-dsa.xml";
      
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate
             (file, new KeySelectors.KeyValueKeySelector());
         assertTrue("Signature failed core validation", coreValidity);
@@ -81,6 +81,7 @@
     public void test_signature_enveloping_dsa() throws Exception {
         String file = "signature-enveloping-dsa.xml";
        
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate
             (file, new KeySelectors.KeyValueKeySelector());
         assertTrue("Signature failed core validation", coreValidity);
@@ -90,6 +91,7 @@
     public void test_signature_external_b64_dsa() throws Exception {
         String file = "signature-external-b64-dsa.xml";
        
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate
             (file, new KeySelectors.KeyValueKeySelector(), ud);
         assertTrue("Signature failed core validation", coreValidity);
@@ -99,6 +101,7 @@
     public void test_signature_external_dsa() throws Exception {
         String file = "signature-external-dsa.xml";
         
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate
             (file, new KeySelectors.KeyValueKeySelector(), ud);
         assertTrue("Signature failed core validation", coreValidity);
@@ -108,6 +111,7 @@
     public void test_signature_enveloping_rsa() throws Exception {
         String file = "signature-enveloping-rsa.xml";
        
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate
             (file, new KeySelectors.KeyValueKeySelector());
         assertTrue("Signature failed core validation", coreValidity);
@@ -119,6 +123,7 @@
         
         KeySelector ks = new KeySelectors.SecretKeySelector
             ("secret".getBytes("ASCII") );
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate(file, ks);
         assertTrue("Signature failed core validation", coreValidity);
     }
@@ -130,6 +135,7 @@
         KeySelector ks = new KeySelectors.SecretKeySelector
             ("secret".getBytes("ASCII") );
         try {
+            SignatureValidator validator = new SignatureValidator(dir);
             validator.validate(file, ks);
             fail("Expected HMACOutputLength exception");
         } catch (XMLSignatureException xse) {
@@ -142,6 +148,7 @@
     public void test_signature_keyname() throws Exception {
         String file = "signature-keyname.xml";
         
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate
             (file, new KeySelectors.CollectionKeySelector(dir), ud);
         assertTrue("Signature failed core validation", coreValidity);
@@ -151,6 +158,7 @@
     public void test_signature_retrievalmethod_rawx509crt() throws Exception {
         String file = "signature-retrievalmethod-rawx509crt.xml";
         
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate
             (file, new KeySelectors.CollectionKeySelector(dir), ud);
         assertTrue("Signature failed core validation", coreValidity);
@@ -160,6 +168,7 @@
     public void test_signature_x509_crt_crl() throws Exception {
         String file = "signature-x509-crt-crl.xml";
         
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate
             (file, new KeySelectors.RawX509KeySelector(), ud);
         assertTrue("Signature failed core validation", coreValidity);
@@ -169,6 +178,7 @@
     public void test_signature_x509_crt() throws Exception {
         String file = "signature-x509-crt.xml";
        
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate
             (file, new KeySelectors.RawX509KeySelector(), ud);
         assertTrue("Signature failed core validation", coreValidity);
@@ -178,6 +188,7 @@
     public void test_signature_x509_is() throws Exception {
         String file = "signature-x509-is.xml";
         
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate
             (file, new KeySelectors.CollectionKeySelector(dir), ud);
         assertTrue("Signature failed core validation", coreValidity);
@@ -187,6 +198,7 @@
     public void test_signature_x509_ski() throws Exception {
         String file = "signature-x509-ski.xml";
         
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate
             (file, new KeySelectors.CollectionKeySelector(dir), ud);
         assertTrue("Signature failed core validation", coreValidity);
@@ -196,6 +208,7 @@
     public void test_signature_x509_sn() throws Exception {
         String file = "signature-x509-sn.xml";
         
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean coreValidity = validator.validate
             (file, new KeySelectors.CollectionKeySelector(dir), ud);
         assertTrue("Signature failed core validation", coreValidity);
@@ -213,6 +226,7 @@
         KeyStore ks = KeyStore.getInstance("JKS");
         ks.load(new FileInputStream(keystore), "changeit".toCharArray());
 
+        SignatureValidator validator = new SignatureValidator(dir);
         boolean cv = validator.validate(file, new X509KeySelector(ks, false), ud);
         assertTrue("Signature failed core validation", cv);
     }
diff --git a/src/test/java/javax/xml/crypto/test/dsig/HMACSignatureAlgorithmTest.java b/src/test/java/javax/xml/crypto/test/dsig/HMACSignatureAlgorithmTest.java
index 9c6417e..f88c47b 100644
--- a/src/test/java/javax/xml/crypto/test/dsig/HMACSignatureAlgorithmTest.java
+++ b/src/test/java/javax/xml/crypto/test/dsig/HMACSignatureAlgorithmTest.java
@@ -104,6 +104,11 @@
         sks = new KeySelectors.SecretKeySelector("testkey".getBytes("ASCII"));
     }
 
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
+
     @org.junit.Test
     public void testHMACSHA1() throws Exception {
         test_create_signature_enveloping(hmacSha1, sha1, null,
diff --git a/src/test/java/javax/xml/crypto/test/dsig/LocalHttpCacheURIDereferencer.java b/src/test/java/javax/xml/crypto/test/dsig/LocalHttpCacheURIDereferencer.java
index a18a3bd..3607305 100644
--- a/src/test/java/javax/xml/crypto/test/dsig/LocalHttpCacheURIDereferencer.java
+++ b/src/test/java/javax/xml/crypto/test/dsig/LocalHttpCacheURIDereferencer.java
@@ -42,7 +42,9 @@
     private final Map<String, File> uriMap;
 
     public LocalHttpCacheURIDereferencer() {
-        ud = XMLSignatureFactory.getInstance().getURIDereferencer();
+        XMLSignatureFactory xmlSignatureFactory = 
+            XMLSignatureFactory.getInstance("DOM", new org.apache.jcp.xml.dsig.internal.dom.XMLDSigRI());
+        ud = xmlSignatureFactory.getURIDereferencer();
         String base = BASEDIR == null ? "./": BASEDIR;
         File dir = new File(base + FS + "src/test/resources" + FS + "javax" +
             FS + "xml" + FS + "crypto" + FS + "dsig");
diff --git a/src/test/java/javax/xml/crypto/test/dsig/PKSignatureAlgorithmTest.java b/src/test/java/javax/xml/crypto/test/dsig/PKSignatureAlgorithmTest.java
index 23a7efd..58a30fc 100644
--- a/src/test/java/javax/xml/crypto/test/dsig/PKSignatureAlgorithmTest.java
+++ b/src/test/java/javax/xml/crypto/test/dsig/PKSignatureAlgorithmTest.java
@@ -147,6 +147,11 @@
                                 (kifac.newKeyValue(ecKeyPair.getPublic())));
     }
 
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
+
     @org.junit.Test
     public void testRSA_SHA1() throws Exception {
         test_create_signature_enveloping(rsaSha1, sha1, rsaki,
diff --git a/src/test/java/javax/xml/crypto/test/dsig/SignatureDigestMethodTest.java b/src/test/java/javax/xml/crypto/test/dsig/SignatureDigestMethodTest.java
index 55896e4..4b202c1 100644
--- a/src/test/java/javax/xml/crypto/test/dsig/SignatureDigestMethodTest.java
+++ b/src/test/java/javax/xml/crypto/test/dsig/SignatureDigestMethodTest.java
@@ -118,6 +118,11 @@
         kvks = new KeySelectors.KeyValueKeySelector();
     }
 
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
+
     @org.junit.Test
     public void testSHA1() throws Exception {
         test_create_signature_enveloping(rsaSha1, sha1, rsaki,
diff --git a/src/test/java/org/apache/xml/security/test/dom/algorithms/DigestAlgorithmTest.java b/src/test/java/org/apache/xml/security/test/dom/algorithms/DigestAlgorithmTest.java
index 480f6d2..372e28f 100644
--- a/src/test/java/org/apache/xml/security/test/dom/algorithms/DigestAlgorithmTest.java
+++ b/src/test/java/org/apache/xml/security/test/dom/algorithms/DigestAlgorithmTest.java
@@ -60,6 +60,11 @@
         }
     }
 
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
+
     @org.junit.Test
     public void testSHA1() throws Exception {
         Document doc = XMLUtils.createDocumentBuilder(false).newDocument();
diff --git a/src/test/java/org/apache/xml/security/test/dom/algorithms/HMACSignatureAlgorithmTest.java b/src/test/java/org/apache/xml/security/test/dom/algorithms/HMACSignatureAlgorithmTest.java
index 5c59091..8609187 100644
--- a/src/test/java/org/apache/xml/security/test/dom/algorithms/HMACSignatureAlgorithmTest.java
+++ b/src/test/java/org/apache/xml/security/test/dom/algorithms/HMACSignatureAlgorithmTest.java
@@ -74,6 +74,11 @@
             }
         }
     }
+
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
     
     @org.junit.Test
     public void testHMACSHA1() throws Exception {
diff --git a/src/test/java/org/apache/xml/security/test/dom/algorithms/KeyWrapEncryptionAlgorithmTest.java b/src/test/java/org/apache/xml/security/test/dom/algorithms/KeyWrapEncryptionAlgorithmTest.java
index 7b02fec..f489087 100644
--- a/src/test/java/org/apache/xml/security/test/dom/algorithms/KeyWrapEncryptionAlgorithmTest.java
+++ b/src/test/java/org/apache/xml/security/test/dom/algorithms/KeyWrapEncryptionAlgorithmTest.java
@@ -82,6 +82,11 @@
         
         rsaKeyPair = KeyPairGenerator.getInstance("RSA").genKeyPair();
     }
+
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
     
     @org.junit.Test
     public void testAES128KW() throws Exception {
diff --git a/src/test/java/org/apache/xml/security/test/dom/algorithms/PKSignatureAlgorithmTest.java b/src/test/java/org/apache/xml/security/test/dom/algorithms/PKSignatureAlgorithmTest.java
index 7b4f4f8..7d755f9 100644
--- a/src/test/java/org/apache/xml/security/test/dom/algorithms/PKSignatureAlgorithmTest.java
+++ b/src/test/java/org/apache/xml/security/test/dom/algorithms/PKSignatureAlgorithmTest.java
@@ -82,6 +82,11 @@
         
         ecKeyPair = KeyPairGenerator.getInstance("EC").genKeyPair();
     }
+
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
     
     @org.junit.Test
     public void testRSA_MD5() throws Exception {
diff --git a/src/test/java/org/apache/xml/security/test/dom/algorithms/SymmetricEncryptionAlgorithmTest.java b/src/test/java/org/apache/xml/security/test/dom/algorithms/SymmetricEncryptionAlgorithmTest.java
index d45e497..d6cbad0 100644
--- a/src/test/java/org/apache/xml/security/test/dom/algorithms/SymmetricEncryptionAlgorithmTest.java
+++ b/src/test/java/org/apache/xml/security/test/dom/algorithms/SymmetricEncryptionAlgorithmTest.java
@@ -73,6 +73,11 @@
             }
         }
     }
+
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
     
     @org.junit.Test
     public void testAES128() throws Exception {
diff --git a/src/test/java/org/apache/xml/security/test/dom/encryption/XMLCipherTest.java b/src/test/java/org/apache/xml/security/test/dom/encryption/XMLCipherTest.java
index 40b57fc..301efe3 100644
--- a/src/test/java/org/apache/xml/security/test/dom/encryption/XMLCipherTest.java
+++ b/src/test/java/org/apache/xml/security/test/dom/encryption/XMLCipherTest.java
@@ -136,6 +136,11 @@
         
     }
 
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
+
     /**
      * Test encryption using a generated AES 128 bit key that is
      * encrypted using a AES 192 bit key.  Then reverse using the KEK
diff --git a/src/test/java/org/apache/xml/security/test/dom/encryption/XMLEncryption11Test.java b/src/test/java/org/apache/xml/security/test/dom/encryption/XMLEncryption11Test.java
index ff4712a..7a6dec0 100644
--- a/src/test/java/org/apache/xml/security/test/dom/encryption/XMLEncryption11Test.java
+++ b/src/test/java/org/apache/xml/security/test/dom/encryption/XMLEncryption11Test.java
@@ -139,6 +139,11 @@
         }
     }
 
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
+
     /**
      * rsa-oaep-mgf1p, Digest:SHA256, MGF:SHA1, PSource: None
      */
diff --git a/src/test/java/org/apache/xml/security/test/dom/keys/DEREncodedKeyValueTest.java b/src/test/java/org/apache/xml/security/test/dom/keys/DEREncodedKeyValueTest.java
index 4f5e61f..0598841 100644
--- a/src/test/java/org/apache/xml/security/test/dom/keys/DEREncodedKeyValueTest.java
+++ b/src/test/java/org/apache/xml/security/test/dom/keys/DEREncodedKeyValueTest.java
@@ -77,6 +77,11 @@
         dsaKeyControl = loadPublicKey("dsa.key", "DSA");
     }
 
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
+
     @org.junit.Test
     public void testSchema() throws Exception {
         DEREncodedKeyValue derEncodedKeyValue = new DEREncodedKeyValue(documentBuilder.newDocument(), rsaKeyControl);
diff --git a/src/test/java/org/apache/xml/security/test/dom/keys/keyresolver/DEREncodedKeyValueResolverTest.java b/src/test/java/org/apache/xml/security/test/dom/keys/keyresolver/DEREncodedKeyValueResolverTest.java
index f740701..3ff4d73 100644
--- a/src/test/java/org/apache/xml/security/test/dom/keys/keyresolver/DEREncodedKeyValueResolverTest.java
+++ b/src/test/java/org/apache/xml/security/test/dom/keys/keyresolver/DEREncodedKeyValueResolverTest.java
@@ -78,6 +78,11 @@
         }
     }
 
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
+
     @org.junit.Test
     public void testRSAPublicKey() throws Exception {
         Document doc = loadXML("DEREncodedKeyValue-RSA.xml");
diff --git a/src/test/java/org/apache/xml/security/test/dom/signature/ECDSASignatureTest.java b/src/test/java/org/apache/xml/security/test/dom/signature/ECDSASignatureTest.java
index 5500103..5f8f89b 100644
--- a/src/test/java/org/apache/xml/security/test/dom/signature/ECDSASignatureTest.java
+++ b/src/test/java/org/apache/xml/security/test/dom/signature/ECDSASignatureTest.java
@@ -90,6 +90,11 @@
         db = XMLUtils.createDocumentBuilder(false);
         org.apache.xml.security.Init.init();
     }
+
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
     
     @org.junit.Test
     public void testOne() throws Exception {
diff --git a/src/test/java/org/apache/xml/security/test/stax/encryption/KeyWrapEncryptionCreationTest.java b/src/test/java/org/apache/xml/security/test/stax/encryption/KeyWrapEncryptionCreationTest.java
index 1be267e..c5e4959 100644
--- a/src/test/java/org/apache/xml/security/test/stax/encryption/KeyWrapEncryptionCreationTest.java
+++ b/src/test/java/org/apache/xml/security/test/stax/encryption/KeyWrapEncryptionCreationTest.java
@@ -95,6 +95,11 @@
         rsaKeyPair = KeyPairGenerator.getInstance("RSA").genKeyPair();
     }
 
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
+
     @Test
     public void testAES128KW() throws Exception {
         // Set up the Configuration
@@ -844,4 +849,4 @@
         return cipher.doFinal(document, ee);
     }
 
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/apache/xml/security/test/stax/encryption/KeyWrapEncryptionVerificationTest.java b/src/test/java/org/apache/xml/security/test/stax/encryption/KeyWrapEncryptionVerificationTest.java
index 07fb122..e515735 100644
--- a/src/test/java/org/apache/xml/security/test/stax/encryption/KeyWrapEncryptionVerificationTest.java
+++ b/src/test/java/org/apache/xml/security/test/stax/encryption/KeyWrapEncryptionVerificationTest.java
@@ -102,6 +102,11 @@
         rsaKeyPair = KeyPairGenerator.getInstance("RSA").genKeyPair();
     }
 
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
+
     @Test
     public void testAES128KW() throws Exception {
         // Read in plaintext document
diff --git a/src/test/java/org/apache/xml/security/test/stax/encryption/SymmetricEncryptionCreationTest.java b/src/test/java/org/apache/xml/security/test/stax/encryption/SymmetricEncryptionCreationTest.java
index a16420b..38849c4 100644
--- a/src/test/java/org/apache/xml/security/test/stax/encryption/SymmetricEncryptionCreationTest.java
+++ b/src/test/java/org/apache/xml/security/test/stax/encryption/SymmetricEncryptionCreationTest.java
@@ -87,6 +87,11 @@
         }
     }
 
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
+
     @Test
     public void testAES128() throws Exception {
         // Set up the Configuration
@@ -755,4 +760,4 @@
         return cipher.doFinal(document, ee);
     }
 
-}
\ No newline at end of file
+}
diff --git a/src/test/java/org/apache/xml/security/test/stax/encryption/SymmetricEncryptionVerificationTest.java b/src/test/java/org/apache/xml/security/test/stax/encryption/SymmetricEncryptionVerificationTest.java
index 996bd70..1effcb7 100644
--- a/src/test/java/org/apache/xml/security/test/stax/encryption/SymmetricEncryptionVerificationTest.java
+++ b/src/test/java/org/apache/xml/security/test/stax/encryption/SymmetricEncryptionVerificationTest.java
@@ -98,6 +98,11 @@
         }
     }
 
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
+
     @Test
     public void testAES128() throws Exception {
         // Read in plaintext document
diff --git a/src/test/java/org/apache/xml/security/test/stax/encryption/XMLEncryption11Test.java b/src/test/java/org/apache/xml/security/test/stax/encryption/XMLEncryption11Test.java
index caeb84f..c6a6bd6 100644
--- a/src/test/java/org/apache/xml/security/test/stax/encryption/XMLEncryption11Test.java
+++ b/src/test/java/org/apache/xml/security/test/stax/encryption/XMLEncryption11Test.java
@@ -105,6 +105,11 @@
         nodeCount = countNodes(doc);
     }
 
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
+
     /**
      * rsa-oaep-mgf1p, Digest:SHA256, MGF:SHA1, PSource: None
      */
diff --git a/src/test/java/org/apache/xml/security/test/stax/signature/PKSignatureCreationTest.java b/src/test/java/org/apache/xml/security/test/stax/signature/PKSignatureCreationTest.java
index 3360416..111e539 100644
--- a/src/test/java/org/apache/xml/security/test/stax/signature/PKSignatureCreationTest.java
+++ b/src/test/java/org/apache/xml/security/test/stax/signature/PKSignatureCreationTest.java
@@ -80,6 +80,11 @@
         ecKeyPair = KeyPairGenerator.getInstance("EC").genKeyPair();
     }
 
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
+
     @Test
     public void testRSA_SHA1() throws Exception {
         // Set up the Configuration
diff --git a/src/test/java/org/apache/xml/security/test/stax/signature/PKSignatureVerificationTest.java b/src/test/java/org/apache/xml/security/test/stax/signature/PKSignatureVerificationTest.java
index 9562311..74c2331 100644
--- a/src/test/java/org/apache/xml/security/test/stax/signature/PKSignatureVerificationTest.java
+++ b/src/test/java/org/apache/xml/security/test/stax/signature/PKSignatureVerificationTest.java
@@ -92,6 +92,11 @@
         
         ecKeyPair = KeyPairGenerator.getInstance("EC").genKeyPair();
     }
+
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
     
     @Test
     public void testRSA_SHA1() throws Exception {
diff --git a/src/test/java/org/apache/xml/security/test/stax/signature/SignatureDigestCreationTest.java b/src/test/java/org/apache/xml/security/test/stax/signature/SignatureDigestCreationTest.java
index ff13206..8f2d4a8 100644
--- a/src/test/java/org/apache/xml/security/test/stax/signature/SignatureDigestCreationTest.java
+++ b/src/test/java/org/apache/xml/security/test/stax/signature/SignatureDigestCreationTest.java
@@ -76,6 +76,11 @@
         }
     }
 
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
+
     @Test
     public void testSHA1() throws Exception {
         // Set up the Configuration
diff --git a/src/test/java/org/apache/xml/security/test/stax/signature/SignatureDigestVerificationTest.java b/src/test/java/org/apache/xml/security/test/stax/signature/SignatureDigestVerificationTest.java
index 8b41085..79b4228 100644
--- a/src/test/java/org/apache/xml/security/test/stax/signature/SignatureDigestVerificationTest.java
+++ b/src/test/java/org/apache/xml/security/test/stax/signature/SignatureDigestVerificationTest.java
@@ -87,6 +87,11 @@
             }
         }
     }
+
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
     
     @Test
     public void testSHA1() throws Exception {
diff --git a/src/test/java/org/apache/xml/security/test/stax/signature/SignatureHMACCreationTest.java b/src/test/java/org/apache/xml/security/test/stax/signature/SignatureHMACCreationTest.java
index c2171ec..4e9143a 100644
--- a/src/test/java/org/apache/xml/security/test/stax/signature/SignatureHMACCreationTest.java
+++ b/src/test/java/org/apache/xml/security/test/stax/signature/SignatureHMACCreationTest.java
@@ -71,6 +71,11 @@
         }
     }
 
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
+
     @Test
     public void testHMACSHA1() throws Exception {
         // Set up the Configuration
diff --git a/src/test/java/org/apache/xml/security/test/stax/signature/SignatureHMACVerificationTest.java b/src/test/java/org/apache/xml/security/test/stax/signature/SignatureHMACVerificationTest.java
index acb6ff4..7d971bd 100644
--- a/src/test/java/org/apache/xml/security/test/stax/signature/SignatureHMACVerificationTest.java
+++ b/src/test/java/org/apache/xml/security/test/stax/signature/SignatureHMACVerificationTest.java
@@ -85,6 +85,11 @@
             }
         }
     }
+
+    @org.junit.AfterClass
+    public static void cleanup() throws Exception {
+        Security.removeProvider("org.bouncycastle.jce.provider.BouncyCastleProvider");
+    }
     
     @Test
     public void testHMACSHA1() throws Exception {
