332 lines
		
	
	
	
		
			19 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
		
		
			
		
	
	
			332 lines
		
	
	
	
		
			19 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
|  | 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 <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification document</a> section 1.3.2
 | ||
|  | + * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification document, section 1.3.2</a>
 | ||
|  |   */ | ||
|  |  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 <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification document</a> section 1.3.3
 | ||
|  | + * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification document, section 1.3.3</a>
 | ||
|  |   */ | ||
|  |  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 <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification</a> section 1.8.5
 | ||
|  | +     * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification, section 1.8.5</a>
 | ||
|  |       */ | ||
|  |      // 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 <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification</a> section 1.8.6
 | ||
|  | +     * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification, section 1.8.6</a>
 | ||
|  |       */ | ||
|  |      // 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 <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification</a> section 1.8.3
 | ||
|  | +     * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification, section 1.8.3</a>
 | ||
|  |       */ | ||
|  |      // 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 <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification</a> section 1.8.4
 | ||
|  | +     * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification, section 1.8.4</a>
 | ||
|  |       */ | ||
|  |      // 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 <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification</a> section 1.8.7
 | ||
|  | +     * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification, section 1.8.7</a>
 | ||
|  |       */ | ||
|  |      // 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 <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification</a> section 1.8.8
 | ||
|  | +     * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification, section 1.8.8</a>
 | ||
|  |       */ | ||
|  |      // defined in pack3.c | ||
|  |      public void s3FromBytes(byte[] msg) | ||
|  | @@ -248,7 +248,7 @@ public abstract class Polynomial
 | ||
|  |   | ||
|  |      /** | ||
|  |       * @param a | ||
|  | -     * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification</a> section 1.9.3
 | ||
|  | +     * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification, section 1.9.3</a>
 | ||
|  |       */ | ||
|  |      // 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 @@
 | ||
|  |  /** | ||
|  | - * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 | ||
|  | - *         "https://www.w3.org/TR/html4/loose.dtd">
 | ||
|  |   * 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 @@
 | ||
|  |  /** | ||
|  | - * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 | ||
|  | - *         "https://www.w3.org/TR/html4/loose.dtd">
 | ||
|  |   * 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 @@
 | ||
|  |  /** | ||
|  | - * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 | ||
|  | - *         "https://www.w3.org/TR/html4/loose.dtd">
 | ||
|  |   * 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 @@
 | ||
|  |  /** | ||
|  | - * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 | ||
|  | - *         "https://www.w3.org/TR/html4/loose.dtd">
 | ||
|  |   * 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 @@
 | ||
|  |  /** | ||
|  | - * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 | ||
|  | - *         "https://www.w3.org/TR/html4/loose.dtd">
 | ||
|  |   * 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 @@
 | ||
|  |  /** | ||
|  | - * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 | ||
|  | - *         "https://www.w3.org/TR/html4/loose.dtd">
 | ||
|  |   * 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 @@
 | ||
|  |  /** | ||
|  | - * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 | ||
|  | - *         "https://www.w3.org/TR/html4/loose.dtd">
 | ||
|  |   * 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 @@
 | ||
|  |  /** | ||
|  | - * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 | ||
|  | - *         "https://www.w3.org/TR/html4/loose.dtd">
 | ||
|  |   * 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 @@
 | ||
|  |  /** | ||
|  | - * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 | ||
|  | - *         "https://www.w3.org/TR/html4/loose.dtd">
 | ||
|  |   * 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 @@
 | ||
|  |  /** | ||
|  | - * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 | ||
|  | - *         "https://www.w3.org/TR/html4/loose.dtd">
 | ||
|  |   * 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
 | ||
|  | +     * <code>Security.addProvider()</code> 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
 | ||
|  | +     * <code>Security.addProvider()</code> 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 <a href="https://tools.ietf.org/html/rfc4998">RFC 4998</a>
 | ||
|  |   * <p> | ||
|  |   * ASN.1 Archive Timestamp | ||
|  |   * <p> | ||
|  | @@ -30,6 +29,7 @@ import org.bordercastle.asn1.x509.Algori
 | ||
|  |   * PartialHashtree ::= SEQUENCE OF OCTET STRING | ||
|  |   * <p> | ||
|  |   * Attributes ::= SET SIZE (1..MAX) OF Attribute | ||
|  | + * @see <a href="https://tools.ietf.org/html/rfc4998">RFC 4998</a>
 | ||
|  |   */ | ||
|  |  public class ArchiveTimeStamp | ||
|  |      extends ASN1Object |