diff -rupN bouncycastle/boca-light/src/main/java/org/bordercastle/crypto/util/DerUtil.java bordercastle/boca-light/src/main/java/org/bordercastle/crypto/util/DerUtil.java
--- bouncycastle/boca-light/src/main/java/org/bordercastle/crypto/util/DerUtil.java	2025-10-25 07:40:23.182387118 +0200
+++ bordercastle/boca-light/src/main/java/org/bordercastle/crypto/util/DerUtil.java	2025-10-25 07:40:47.173482490 +0200
@@ -27,13 +27,8 @@ class DerUtil
         }
         catch (final IOException e)
         {
-            throw new IllegalStateException("Cannot get encoding: " + e.getMessage())
-            {
-                public Throwable getCause()
-                {
-                    return e;
-                }
-            };
+            // TODO: BorderCastle: prevent problems later with android .dex files on obfuscated inner class
+            throw new IllegalStateException("Cannot get encoding: " + e.getMessage(), e);
         }
     }
 }
diff -rupN bouncycastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/parameters/NTRUHPSParameterSet.java bordercastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/parameters/NTRUHPSParameterSet.java
--- bouncycastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/parameters/NTRUHPSParameterSet.java	2025-10-25 07:40:28.278407368 +0200
+++ bordercastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/parameters/NTRUHPSParameterSet.java	2025-10-25 07:40:47.174482494 +0200
@@ -11,7 +11,7 @@ import org.bordercastle.pqc.math.ntru.Po
  * @see NTRUHPS2048509
  * @see NTRUHPS2048677
  * @see NTRUHPS4096821
- * @see NTRU specification document section 1.3.2
+ * @see NTRU specification document, section 1.3.2
  */
 public abstract class NTRUHPSParameterSet
     extends NTRUParameterSet
diff -rupN bouncycastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/parameters/NTRUHRSSParameterSet.java bordercastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/parameters/NTRUHRSSParameterSet.java
--- bouncycastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/parameters/NTRUHRSSParameterSet.java	2025-10-25 07:40:28.316407519 +0200
+++ bordercastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/parameters/NTRUHRSSParameterSet.java	2025-10-25 07:40:47.174482494 +0200
@@ -10,7 +10,7 @@ import org.bordercastle.pqc.math.ntru.Po
  * The naming convention for the classes is {@code NTRUHRSS[n]}. e.g. {@link NTRUHRSS701} has n = 701.
  *
  * @see NTRUHRSS701
- * @see NTRU specification document section 1.3.3
+ * @see NTRU specification document, section 1.3.3
  */
 public abstract class NTRUHRSSParameterSet
     extends NTRUParameterSet
diff -rupN bouncycastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/Polynomial.java bordercastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/Polynomial.java
--- bouncycastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/Polynomial.java	2025-10-25 07:40:28.335407594 +0200
+++ bordercastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/Polynomial.java	2025-10-25 07:40:47.173482490 +0200
@@ -80,7 +80,7 @@ public abstract class Polynomial
      *
      * @param len array length of packed polynomial
      * @return
-     * @see NTRU specification section 1.8.5
+     * @see NTRU specification, section 1.8.5
      */
     // defined in packq.c
     public abstract byte[] sqToBytes(int len);
@@ -90,7 +90,7 @@ public abstract class Polynomial
      * Unpack a Sq polynomial
      *
      * @param a byte array of packed polynomial
-     * @see NTRU specification section 1.8.6
+     * @see NTRU specification, section 1.8.6
      */
     // defined in packq.c
     public abstract void sqFromBytes(byte[] a);
@@ -101,7 +101,7 @@ public abstract class Polynomial
      *
      * @param len array length of packed polynomial
      * @return
-     * @see NTRU specification section 1.8.3
+     * @see NTRU specification, section 1.8.3
      */
     // defined in packq.c
     public byte[] rqSumZeroToBytes(int len)
@@ -114,7 +114,7 @@ public abstract class Polynomial
      * Unpack a Rq0 polynomial
      *
      * @param a byte array of packed polynomial
-     * @see NTRU specification section 1.8.4
+     * @see NTRU specification, section 1.8.4
      */
     // defined in packq.c
     public void rqSumZeroFromBytes(byte[] a)
@@ -135,7 +135,7 @@ public abstract class Polynomial
      *
      * @param messageSize array length of packed polynomial
      * @return
-     * @see NTRU specification section 1.8.7
+     * @see NTRU specification, section 1.8.7
      */
     // defined in pack3.c
     public byte[] s3ToBytes(int messageSize)
@@ -181,7 +181,7 @@ public abstract class Polynomial
      * Unpack a S3 polynomial
      *
      * @param msg byte array of packed polynomial
-     * @see NTRU specification section 1.8.8
+     * @see NTRU specification, section 1.8.8
      */
     // defined in pack3.c
     public void s3FromBytes(byte[] msg)
@@ -248,7 +248,7 @@ public abstract class Polynomial
 
     /**
      * @param a
-     * @see NTRU specification section 1.9.3
+     * @see NTRU specification, section 1.9.3
      */
     // defined in poly_lift.c
     public abstract void lift(Polynomial a);
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/cmp/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/cmp/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/cmp/package-info.java	2025-10-25 07:40:36.887441590 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/cmp/package-info.java	2025-10-25 07:40:47.174482494 +0200
@@ -1,6 +1,4 @@
 /**
- * 
  * Basic support package for handling and creating CMP (RFC 4210) certificate management messages.
  */
 package org.bordercastle.cert.cmp;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/crmf/jcajce/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/crmf/jcajce/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/crmf/jcajce/package-info.java	2025-10-25 07:40:36.373439547 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/crmf/jcajce/package-info.java	2025-10-25 07:40:47.174482494 +0200
@@ -1,6 +1,4 @@
 /**
- * 
  * JCA extensions to the CRMF online certificate request package.
  */
 package org.bordercastle.cert.crmf.jcajce;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/crmf/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/crmf/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/crmf/package-info.java	2025-10-25 07:40:36.419439730 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/crmf/package-info.java	2025-10-25 07:40:47.175482498 +0200
@@ -1,6 +1,4 @@
 /**
- * 
  * Basic support package for handling and creating CRMF (RFC 4211) certificate request messages.
  */
 package org.bordercastle.cert.crmf;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/jcajce/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/jcajce/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/jcajce/package-info.java	2025-10-25 07:40:36.573440342 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/jcajce/package-info.java	2025-10-25 07:40:47.175482498 +0200
@@ -1,6 +1,4 @@
 /**
- * 
  * JCA extensions to the certificate building and processing package.
  */
 package org.bordercastle.cert.jcajce;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/ocsp/jcajce/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/ocsp/jcajce/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/ocsp/jcajce/package-info.java	2025-10-25 07:40:36.749441041 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/ocsp/jcajce/package-info.java	2025-10-25 07:40:47.175482498 +0200
@@ -1,6 +1,4 @@
 /**
- * 
  * JCA extensions to the OCSP online certificate status package.
  */
 package org.bordercastle.cert.ocsp.jcajce;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/ocsp/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/ocsp/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/ocsp/package-info.java	2025-10-25 07:40:36.764441101 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/ocsp/package-info.java	2025-10-25 07:40:47.175482498 +0200
@@ -1,6 +1,4 @@
 /**
- * 
  * Basic support package for handling and creating OCSP (RFC 2560) online certificate status requests.
  */
 package org.bordercastle.cert.ocsp;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/selector/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/selector/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/selector/package-info.java	2025-10-25 07:40:36.690440807 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/selector/package-info.java	2025-10-25 07:40:47.175482498 +0200
@@ -1,6 +1,4 @@
 /**
- * 
  * Specialised Selector classes for certificates, CRLs, and attribute certificates.
  */
 package org.bordercastle.cert.selector;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/pkcs/bc/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/pkcs/bc/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/pkcs/bc/package-info.java	2025-10-25 07:40:33.882429643 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/pkcs/bc/package-info.java	2025-10-25 07:40:47.175482498 +0200
@@ -1,6 +1,4 @@
 /**
- * 
  * BC lightweight API extensions and operators for the PKCS#10 certification request package.
  */
 package org.bordercastle.pkcs.bc;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/pkcs/jcajce/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/pkcs/jcajce/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/pkcs/jcajce/package-info.java	2025-10-25 07:40:33.790429277 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/pkcs/jcajce/package-info.java	2025-10-25 07:40:47.176482502 +0200
@@ -1,6 +1,4 @@
 /**
- * 
  * JCA extensions and operators for the PKCS#10 certification request package.
  */
 package org.bordercastle.pkcs.jcajce;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/pkcs/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/pkcs/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/pkcs/package-info.java	2025-10-25 07:40:33.847429504 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/pkcs/package-info.java	2025-10-25 07:40:47.176482502 +0200
@@ -1,6 +1,4 @@
 /**
- * 
  * Basic support package for handling and creating PKCS#10 certification requests, PKCS#8 encrypted keys and PKCS#12 keys stores.
  */
 package org.bordercastle.pkcs;
diff -rupN bouncycastle/boca-prov/src/main/java/org/bordercastle/jce/provider/BouncyCastleProvider.java bordercastle/boca-prov/src/main/java/org/bordercastle/jce/provider/BouncyCastleProvider.java
--- bouncycastle/boca-prov/src/main/java/org/bordercastle/jce/provider/BouncyCastleProvider.java	2025-10-25 07:40:40.980457864 +0200
+++ bordercastle/boca-prov/src/main/java/org/bordercastle/jce/provider/BouncyCastleProvider.java	2025-10-25 07:40:47.176482502 +0200
@@ -151,7 +151,7 @@ public final class BouncyCastleProvider
     private static final String KEYSTORE_PACKAGE = "org.bordercastle.jcajce.provider.keystore.";
     private static final String[] KEYSTORES =
         {
-            "BoCa", "BCFKS", "PKCS12"
+            "BC", "BCFKS", "PKCS12"
         };
 
     /*
@@ -172,7 +172,22 @@ public final class BouncyCastleProvider
      */
     public BouncyCastleProvider()
     {
-        super(PROVIDER_NAME, 1.81, info);
+        this(PROVIDER_NAME);
+    }
+
+    /**
+     * Construct a new provider with a custom name.  This should only be required when
+     * using runtime registration of the provider using the
+     * Security.addProvider() mechanism.
+     * This constructor allows to give a distinct name to the new provider and thus allows
+     * to register multiple instances with separate names. This is helpful in environments
+     * where classloader problems would occur when one classloader installs the provider
+     * but another classloader attempts to cast objects created by the first provider
+     * (e.g. in webapp containers where each webapp wants to install the provider).
+     */
+    public BouncyCastleProvider(final String providerName)
+    {
+        super(providerName, 1.81, info);
 
         AccessController.doPrivileged(new PrivilegedAction()
         {
@@ -184,6 +199,19 @@ public final class BouncyCastleProvider
         });
     }
 
+    @Override public String toString()
+    {
+        // the java.security.Provider class in Android doesn't support the
+        // c'tor with a string version argument
+        // => was only introduced in JDK-9
+        // => but Android is based on JDK-8
+        // => must instead override the base class' toString() method
+        //    to output the version in string form instead of as double
+        //    (which would truncate trailing zeroes)
+        // => output "1.80" instead of "1.8" ...
+        return getName() + " version " + org.bordercastle.Version.getVersion();
+    }
+
     private void setup()
     {
         loadAlgorithms(DIGEST_PACKAGE, DIGESTS);
diff -rupN bouncycastle/boca-prov/src/main/java/org/bordercastle/pqc/jcajce/provider/BouncyCastlePQCProvider.java bordercastle/boca-prov/src/main/java/org/bordercastle/pqc/jcajce/provider/BouncyCastlePQCProvider.java
--- bouncycastle/boca-prov/src/main/java/org/bordercastle/pqc/jcajce/provider/BouncyCastlePQCProvider.java	2025-10-25 07:40:40.159454599 +0200
+++ bordercastle/boca-prov/src/main/java/org/bordercastle/pqc/jcajce/provider/BouncyCastlePQCProvider.java	2025-10-25 07:40:47.176482502 +0200
@@ -51,7 +51,22 @@ public class BouncyCastlePQCProvider
      */
     public BouncyCastlePQCProvider()
     {
-        super(PROVIDER_NAME, 1.81, info);
+        this(PROVIDER_NAME);
+    }
+
+    /**
+     * Construct a new provider with a custom name.  This should only be required when
+     * using runtime registration of the provider using the
+     * Security.addProvider() mechanism.
+     * This constructor allows to give a distinct name to the new provider and thus allows
+     * to register multiple instances with separate names. This is helpful in environments
+     * where classloader problems would occur when one classloader installs the provider
+     * but another classloader attempts to cast objects created by the first provider
+     * (e.g. in webapp containers where each webapp wants to install the provider).
+     */
+    public BouncyCastlePQCProvider(final String providerName)
+		{
+        super(providerName, 1.81, info);
 
         AccessController.doPrivileged(new PrivilegedAction()
         {
@@ -63,6 +78,19 @@ public class BouncyCastlePQCProvider
         });
     }
 
+    @Override public String toString()
+    {
+        // the java.security.Provider class in Android doesn't support the
+        // c'tor with a string version argument
+        // => was only introduced in JDK-9
+        // => but Android is based on JDK-8
+        // => must instead override the base class' toString() method
+        //    to output the version in string form instead of as double
+        //    (which would truncate trailing zeroes)
+        // => output "1.80" instead of "1.8" ...
+        return getName() + " version " + org.bordercastle.Version.getVersion();
+    }
+
     private void setup()
     {
         loadAlgorithms(ALGORITHM_PACKAGE, ALGORITHMS);
diff -rupN bouncycastle/boca-util/src/main/java/org/bordercastle/asn1/tsp/ArchiveTimeStamp.java bordercastle/boca-util/src/main/java/org/bordercastle/asn1/tsp/ArchiveTimeStamp.java
--- bouncycastle/boca-util/src/main/java/org/bordercastle/asn1/tsp/ArchiveTimeStamp.java	2025-10-25 07:40:44.480471784 +0200
+++ bordercastle/boca-util/src/main/java/org/bordercastle/asn1/tsp/ArchiveTimeStamp.java	2025-10-25 07:40:47.177482506 +0200
@@ -17,7 +17,6 @@ import org.bordercastle.asn1.x509.Algori
 
 /**
  * Implementation of the Archive Timestamp type defined in RFC4998.
- * @see RFC 4998
  * 
* ASN.1 Archive Timestamp *
@@ -30,6 +29,7 @@ import org.bordercastle.asn1.x509.Algori * PartialHashtree ::= SEQUENCE OF OCTET STRING *
* Attributes ::= SET SIZE (1..MAX) OF Attribute + * @see RFC 4998 */ public class ArchiveTimeStamp extends ASN1Object