commit:     759bad79c455781231dde5f76b56f8a2403f51c6
Author:     Filip Kobierski <fkobi <AT> pm <DOT> me>
AuthorDate: Mon Apr  7 20:59:28 2025 +0000
Commit:     Florian Schmaus <flow <AT> gentoo <DOT> org>
CommitDate: Sun Aug 31 17:57:16 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=759bad79

net-p2p/biglybt: add 3.8.0.2

Ebuild was changed pretty heavily:
- move broken USE=doc comment to broken USE=test comment
- update DESCRIPTION
- update dev-java/swt dep version (bug 959131)
- add comment about not needing `jdk[-headless-awt]`
- unbundle bcprov to allow JDKs newer than 21 (bug 936549)
- remove contributing files from DOCS
- PATCHES: quote just variables
- adjust comments on JAVA_ variables
- rework src_prepare
  - clean development files early
  - use loop for copying resources
  - use `delete` instead of `-exec rm -rf {} +`
  - add `|| die` labels
- use upstream desktop icon (needs seds)
- remove excess `|| die` fom ejavac
- use upstream icons
- remove obsolete `default` from src_install
- fixed optfeature text typos

Bug: https://bugs.gentoo.org/936549
Closes: https://bugs.gentoo.org/959131
Signed-off-by: Filip Kobierski <fkobi <AT> pm.me>
Part-of: https://github.com/gentoo/gentoo/pull/40734
Closes: https://github.com/gentoo/gentoo/pull/40734
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>

 net-p2p/biglybt/Manifest                           |   1 +
 net-p2p/biglybt/biglybt-3.8.0.2.ebuild             | 123 ++++++
 .../files/biglybt-3.8.0.2-unbundle-bcprov.patch    | 491 +++++++++++++++++++++
 3 files changed, 615 insertions(+)

diff --git a/net-p2p/biglybt/Manifest b/net-p2p/biglybt/Manifest
index 7405427efb7c..803b796e58b5 100644
--- a/net-p2p/biglybt/Manifest
+++ b/net-p2p/biglybt/Manifest
@@ -1 +1,2 @@
 DIST biglybt-3.7.0.0.tar.gz 44021778 BLAKE2B 
9ce54062b298d2e47f9fcc88a3fa8da935c7d3c4ad24f28cf2975300b78140b547e3e43c377cae50fd1276d49d53a43bc77e36957133dc6fe1fa7e301ebe80fe
 SHA512 
815ce2f2b327de266650d9650dcbc539247dca2a8bce727ca0a4fc6eb7dfbcee770ffce04dd3b96aef458df1ee20ce39229f6a3d409725a532d081c82d4504bd
+DIST biglybt-3.8.0.2.tar.gz 46676464 BLAKE2B 
d78f07cfc0d71ef29bc17c75c4dc834001ed91f6c4e0ae1e4be80f6a175c55fcba05c802a2739fd4636df3b28c7feda2e127cd99554acca9a8820338cf4eac12
 SHA512 
3679a153cdaaf861f0e5c3ead1164358435f2031999f2fd14fe6944d162bdd0e88ca253f053c94b4958f5a8550e3a89a923857d09ad022b6c1b9e6d17f089698

diff --git a/net-p2p/biglybt/biglybt-3.8.0.2.ebuild 
b/net-p2p/biglybt/biglybt-3.8.0.2.ebuild
new file mode 100644
index 000000000000..8b0429fab13c
--- /dev/null
+++ b/net-p2p/biglybt/biglybt-3.8.0.2.ebuild
@@ -0,0 +1,123 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# for 3.8.0.2 USE=doc produces 2 errors:
+#   uis/src/com/biglybt/ui/swt/plugin/net/buddy/swt/BuddyPluginView.java:68:
+#   
uis/src/com/biglybt/ui/swt/plugin/net/buddy/swt/BuddyPluginViewChat.java:45:
+#   error: package com.biglybt.ui.swt.plugin.net.buddy does not exist
+# no USE=test due to unsupported testing framework #839681
+JAVA_PKG_IUSE="source"
+MAVEN_PROVIDES="com.${PN}:${PN}-core:${PV} com.${PN}:${PN}-ui:${PV}"
+
+inherit desktop java-pkg-2 java-pkg-simple optfeature xdg
+
+DESCRIPTION="Feature-filled Bittorrent client based on Azureus"
+HOMEPAGE="https://www.biglybt.com";
+SRC_URI="https://github.com/BiglySoftware/BiglyBT/archive/v${PV}.tar.gz -> 
${P}.tar.gz"
+S="${WORKDIR}/BiglyBT-${PV}"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64"
+
+CP_DEPEND="
+       >=dev-java/bcprov-1.80:0
+       dev-java/commons-cli:0
+       dev-java/swt:0[cairo]
+"
+
+# Due to removal of AENameServiceDescriptor it would fail to start under 
jdk:1.8
+# StartServer ERROR: unable to bind to 127.0.0.1:6880 listening for passed 
torrent info: \
+# sun.net.spi.nameservice.NameServiceDescriptor: Provider 
com.biglybt.core.util.spi.AENameServiceDescriptor not found
+#
+# NOTE: BiglyBT works with [headless-awt]
+DEPEND="${CP_DEPEND}
+       >=virtual/jdk-11:*"
+RDEPEND="${CP_DEPEND}
+       >=virtual/jre-1.8:*"
+
+DOCS=( README.md ChangeLog.txt )
+
+PATCHES=(
+       "${FILESDIR}"/biglybt-3.2.0.0-disable-SWTUpdateChecker.patch
+       "${FILESDIR}"/biglybt-3.2.0.0-disable-shared-plugins.patch
+       "${FILESDIR}"/biglybt-3.5.0.0-Entities.javadoc.patch
+       "${FILESDIR}"/biglybt-3.6.0.0-disable-PluginUpdatePlugin.patch
+       "${FILESDIR}"/biglybt-3.6.0.0-fix-ambiguous.patch
+       "${FILESDIR}"/biglybt-3.8.0.2-unbundle-bcprov.patch #936549
+)
+
+JAVA_GENTOO_CLASSPATH_EXTRA="target/classes"
+JAVA_JAR_FILENAME="BiglyBT.jar"
+JAVA_MAIN_CLASS="com.${PN}.ui.Main"
+JAVA_RESOURCE_DIRS=( {core,uis}/resources )    # both are needed
+JAVA_SRC_DIR="uis/src" # we compile core manually to avoid bloating the jar
+
+declare -r ASSET_DIR="${S}"/assets/linux
+src_prepare() {
+       default #780585
+       rm -r core/src/org/gudy || die "removing bundled bouncycastle failed" 
#936549
+       java-pkg-2_src_prepare
+
+       find -type f -name ".editorconfig" -o -name ".gitignore" -delete \
+               || die "Cleaning distfile artifacts failed"
+
+       # AENameServiceDescriptor fails to compile with jdk >= 11
+       # "error: package sun.net.spi.nameservice does not exist"
+       # https://github.com/BiglySoftware/BiglyBT/pull/2611
+       rm -r core/src/com/biglybt/core/util/spi || die "deleting spi failed"
+
+       # java-pkg-simple.eclass expects resources in a separate directory
+       # REVIEW: instead of copying all and deleting it would be better to 
copy selectively
+       local module
+       for module in core uis; do
+               cp -r ${module}/{src,resources} || die "copying source for 
resources failed"
+               find ${module}/resources -type f -name "*.java" -delete || die 
"deleting java files failed"
+       done
+       rm -r core/resources/META-INF || die "deleting copied META-INF failed"
+
+       # patch the desktop file
+       sed -i \
+               -e '/#!/d' \
+               -e 's|${installer:dir.main}/||' \
+               -e 's|.svg||' \
+               "${ASSET_DIR}"/${PN}.desktop || die "patching desktop file 
failed"
+
+       # https://github.com/BiglySoftware/BiglyBT/pull/3523
+       sed -i 's/Application;//g' "${ASSET_DIR}"/${PN}.desktop || die
+}
+
+src_compile() {
+       # build core classes, needed for compiling uis
+       ejavac -d target/classes \
+               -cp "$(java-pkg_getjars commons-cli):$(java-pkg_getjars 
swt):$(java-pkg_getjars bcprov)" \
+               $(find core/src -type f -name "*.java")
+
+       java-pkg-simple_src_compile
+
+       # see top comment
+       # use doc && JAVA_SRC_DIR=( {core,uis}/src ) ejavadoc
+}
+
+src_install() {
+       java-pkg-simple_src_install
+
+       doicon -s 256 "${ASSET_DIR}"/${PN}.png
+       doicon -s scalable "${ASSET_DIR}"/${PN}.svg
+       domenu "${ASSET_DIR}"/${PN}.desktop
+
+       if use source; then
+               java-pkg_dosrc "core/src/*"
+               java-pkg_dosrc "uis/src/*"
+       fi
+}
+
+pkg_postinst() {
+       xdg_pkg_postinst
+
+       optfeature_header "If you are using plugin proxies, you might want to 
swap them for these native packages:"
+       optfeature "I2P SOCKS proxy" net-vpn/i2p net-vpn/i2pd
+       optfeature "Tor SOCKS proxy" net-vpn/tor
+}

diff --git a/net-p2p/biglybt/files/biglybt-3.8.0.2-unbundle-bcprov.patch 
b/net-p2p/biglybt/files/biglybt-3.8.0.2-unbundle-bcprov.patch
new file mode 100644
index 000000000000..d3359db8aa9c
--- /dev/null
+++ b/net-p2p/biglybt/files/biglybt-3.8.0.2-unbundle-bcprov.patch
@@ -0,0 +1,491 @@
+Description: Use the version of BouncyCastle packaged in Debian
+Author: David Juran <[email protected]>
+Forwarded: no
+
+Gentoo relevant:
+* Bug: https://bugs.gentoo.org/936549
+* PR: https://github.com/gentoo/gentoo/pull/40734#issuecomment-3028397493
+--- a/core/src/com/biglybt/core/security/CryptoECCUtils.java
++++ b/core/src/com/biglybt/core/security/CryptoECCUtils.java
+@@ -24,15 +24,15 @@
+ import java.security.*;
+ import java.security.spec.KeySpec;
+ 
+-import org.gudy.bouncycastle.jce.ECNamedCurveTable;
+-import org.gudy.bouncycastle.jce.interfaces.ECPrivateKey;
+-import org.gudy.bouncycastle.jce.interfaces.ECPublicKey;
+-import org.gudy.bouncycastle.jce.provider.BouncyCastleProvider;
+-import org.gudy.bouncycastle.jce.spec.ECNamedCurveParameterSpec;
+-import org.gudy.bouncycastle.jce.spec.ECParameterSpec;
+-import org.gudy.bouncycastle.jce.spec.ECPrivateKeySpec;
+-import org.gudy.bouncycastle.jce.spec.ECPublicKeySpec;
+-import org.gudy.bouncycastle.math.ec.ECPoint;
++import org.bouncycastle.jce.ECNamedCurveTable;
++import org.bouncycastle.jce.interfaces.ECPrivateKey;
++import org.bouncycastle.jce.interfaces.ECPublicKey;
++import org.bouncycastle.jce.provider.BouncyCastleProvider;
++import org.bouncycastle.jce.spec.ECNamedCurveParameterSpec;
++import org.bouncycastle.jce.spec.ECParameterSpec;
++import org.bouncycastle.jce.spec.ECPrivateKeySpec;
++import org.bouncycastle.jce.spec.ECPublicKeySpec;
++import org.bouncycastle.math.ec.ECPoint;
+ 
+ public class
+ CryptoECCUtils
+--- a/core/src/com/biglybt/core/security/impl/CryptoManagerImpl.java
++++ b/core/src/com/biglybt/core/security/impl/CryptoManagerImpl.java
+@@ -29,9 +29,9 @@
+ import javax.crypto.spec.PBEKeySpec;
+ import javax.crypto.spec.PBEParameterSpec;
+ 
+-import org.gudy.bouncycastle.crypto.CipherParameters;
+-import org.gudy.bouncycastle.crypto.engines.RC4Engine;
+-import org.gudy.bouncycastle.crypto.params.KeyParameter;
++import org.bouncycastle.crypto.CipherParameters;
++import org.bouncycastle.crypto.engines.RC4Engine;
++import org.bouncycastle.crypto.params.KeyParameter;
+ 
+ import com.biglybt.core.config.COConfigurationManager;
+ import com.biglybt.core.security.*;
+--- a/core/src/com/biglybt/core/security/impl/CryptoHandlerECC.java
++++ b/core/src/com/biglybt/core/security/impl/CryptoHandlerECC.java
+@@ -27,9 +27,9 @@
+ import javax.crypto.Cipher;
+ import javax.crypto.IllegalBlockSizeException;
+ 
+-import org.gudy.bouncycastle.jce.provider.JCEIESCipher;
+-import org.gudy.bouncycastle.jce.spec.IEKeySpec;
+-import org.gudy.bouncycastle.jce.spec.IESParameterSpec;
++import org.bouncycastle.jce.provider.BouncyCastleProvider;
++import org.bouncycastle.jce.spec.IEKeySpec;
++import org.bouncycastle.jce.spec.IESParameterSpec;
+ 
+ import com.biglybt.core.config.COConfigurationManager;
+ import com.biglybt.core.security.*;
+@@ -64,6 +64,7 @@
+               CryptoManagerImpl               _manager,
+               int                                             _instance_id )
+       {
++              Security.addProvider(new BouncyCastleProvider());
+               manager         = _manager;
+               instance_id     = _instance_id;
+               
+@@ -227,11 +228,11 @@
+ 
+                       IESParameterSpec param = new IESParameterSpec( d, e, 
128);
+ 
+-                      InternalECIES   cipher = new InternalECIES();
++                      Cipher cipher = Cipher.getInstance("ECIES");
+ 
+-                      cipher.internalEngineInit( Cipher.ENCRYPT_MODE, 
key_spec, param, null );
++                      cipher.init( Cipher.ENCRYPT_MODE, key_spec, param, null 
);
+ 
+-                      byte[]  encrypted = cipher.internalEngineDoFinal(data, 
0, data.length );
++                      byte[]  encrypted = cipher.doFinal(data, 0, data.length 
);
+ 
+                       byte[] result = new byte[32+encrypted.length];
+ 
+@@ -271,11 +272,11 @@
+ 
+                       IESParameterSpec param = new IESParameterSpec( d, e, 
128);
+ 
+-                      InternalECIES   cipher = new InternalECIES();
++                      Cipher cipher = Cipher.getInstance("ECIES");
+ 
+-                      cipher.internalEngineInit( Cipher.DECRYPT_MODE, 
key_spec, param, null );
++                      cipher.init( Cipher.DECRYPT_MODE, key_spec, param, null 
);
+ 
+-                      return( cipher.internalEngineDoFinal( data, 32, 
data.length - 32 ));
++                      return( cipher.doFinal( data, 32, data.length - 32 ));
+ 
+               }catch( CryptoManagerException e ){
+ 
+@@ -886,32 +887,4 @@
+               return((int)COConfigurationManager.getIntParameter( 
CONFIG_PREFIX + "pwtype", CryptoManagerPasswordHandler.HANDLER_TYPE_USER ));
+       }
+ 
+-      static class InternalECIES
+-              extends JCEIESCipher.ECIES
+-      {
+-                      // we use this class to obtain compatibility with BC
+-
+-              public void
+-              internalEngineInit(
+-                      int                     opmode,
+-                      Key                     key,
+-                      AlgorithmParameterSpec  params,
+-                      SecureRandom            random )
+-
+-                      throws InvalidKeyException, 
InvalidAlgorithmParameterException
+-              {
+-                      engineInit(opmode, key, params, random);
+-              }
+-
+-              protected byte[]
+-              internalEngineDoFinal(
+-                      byte[]  input,
+-                      int     inputOffset,
+-                      int     inputLen )
+-
+-                      throws IllegalBlockSizeException, BadPaddingException
+-              {
+-                      return engineDoFinal(input, inputOffset, inputLen);
+-              }
+-      }
+ }
+--- a/core/src/com/biglybt/core/security/impl/SESecurityManagerBC.java
++++ b/core/src/com/biglybt/core/security/impl/SESecurityManagerBC.java
+@@ -33,9 +33,9 @@
+ import java.security.cert.X509Certificate;
+ import java.util.Calendar;
+ 
+-import org.gudy.bouncycastle.asn1.x509.X509Name;
+-import org.gudy.bouncycastle.jce.X509V3CertificateGenerator;
+-import org.gudy.bouncycastle.jce.provider.BouncyCastleProvider;
++import org.bouncycastle.asn1.x509.X509Name;
++import org.bouncycastle.x509.X509V3CertificateGenerator;
++import org.bouncycastle.jce.provider.BouncyCastleProvider;
+ 
+ import com.biglybt.core.util.Constants;
+ import com.biglybt.core.util.Debug;
+@@ -49,7 +49,7 @@
+       initialise()
+       {
+               try{
+-                      Security.addProvider(new 
org.gudy.bouncycastle.jce.provider.BouncyCastleProvider());
++                      Security.addProvider(new 
org.bouncycastle.jce.provider.BouncyCastleProvider());
+ 
+                       KeyFactory kf = KeyFactory.getInstance( "ECDSA", 
BouncyCastleProvider.PROVIDER_NAME );
+ 
+@@ -59,7 +59,7 @@
+ 
+                               try{
+ 
+-                                      where = 
BouncyCastleProvider.class.getClassLoader().getResource( 
"org/gudy/bouncycastle/jce/provider/BouncyCastleProvider.class" 
).toExternalForm();
++                                      where = 
BouncyCastleProvider.class.getClassLoader().getResource( 
"org/bouncycastle/jce/provider/BouncyCastleProvider.class" ).toExternalForm();
+ 
+                               }catch( Throwable e ){
+ 
+--- a/core/src/com/biglybt/core/security/impl/CryptoSTSEngineImpl.java
++++ b/core/src/com/biglybt/core/security/impl/CryptoSTSEngineImpl.java
+@@ -22,7 +22,7 @@
+ import java.nio.ByteBuffer;
+ import java.security.*;
+ 
+-import org.gudy.bouncycastle.jce.provider.JCEECDHKeyAgreement;
++import javax.crypto.KeyAgreement;
+ 
+ import com.biglybt.core.security.CryptoECCUtils;
+ import com.biglybt.core.security.CryptoManagerException;
+@@ -46,7 +46,7 @@
+       private PublicKey       remotePubKey;
+       private byte[]          sharedSecret;
+ 
+-      private InternalDH      ecDH;
++      private KeyAgreement    ecDH;
+ 
+       /**
+        *
+@@ -65,8 +65,8 @@
+               ephemeralKeyPair = CryptoECCUtils.createKeys();
+ 
+               try{
+-                      ecDH = new InternalDH();
+-
++                      Security.addProvider(new 
org.bouncycastle.jce.provider.BouncyCastleProvider());
++                      ecDH = KeyAgreement.getInstance("ECDH");
+                       //ecDH = KeyAgreement.getInstance("ECDH", 
BouncyCastleProvider.PROVIDER_NAME);
+ 
+                       ecDH.init(ephemeralKeyPair.getPrivate());
+@@ -398,40 +398,4 @@
+               }
+       }
+ 
+-      static class
+-      InternalDH
+-              extends JCEECDHKeyAgreement.DH
+-      {
+-                      // we use this class to obtain compatibility with BC
+-
+-              @Override
+-              public void
+-              init(
+-                      Key             key )
+-
+-                      throws InvalidKeyException, 
InvalidAlgorithmParameterException
+-              {
+-                      engineInit( key, null );
+-              }
+-
+-              @Override
+-              public Key
+-              doPhase(
+-                      Key             key,
+-                      boolean lastPhase )
+-
+-                      throws InvalidKeyException, IllegalStateException
+-              {
+-                      return( engineDoPhase( key, lastPhase ));
+-              }
+-
+-              @Override
+-              public byte[]
+-              generateSecret()
+-
+-                      throws IllegalStateException
+-              {
+-                      return( engineGenerateSecret());
+-              }
+-      }
+-}
+\ No newline at end of file
++}
+--- a/core/src/com/biglybt/core/subs/impl/SubscriptionManagerImpl.java
++++ b/core/src/com/biglybt/core/subs/impl/SubscriptionManagerImpl.java
+@@ -32,7 +32,7 @@
+ import java.util.zip.GZIPOutputStream;
+ 
+ import com.biglybt.util.MapUtils;
+-import org.gudy.bouncycastle.util.encoders.Base64;
++import org.bouncycastle.util.encoders.Base64;
+ 
+ import com.biglybt.core.Core;
+ import com.biglybt.core.CoreFactory;
+--- a/core/src/com/biglybt/core/subs/impl/SubscriptionImpl.java
++++ b/core/src/com/biglybt/core/subs/impl/SubscriptionImpl.java
+@@ -28,7 +28,7 @@
+ import java.util.concurrent.atomic.AtomicLong;
+ 
+ import com.biglybt.util.MapUtils;
+-import org.gudy.bouncycastle.util.encoders.Base64;
++import org.bouncycastle.util.encoders.Base64;
+ import org.json.simple.JSONObject;
+ 
+ import com.biglybt.core.internat.MessageText;
+--- a/core/src/com/biglybt/core/pairing/impl/PairingManagerTunnelHandler.java
++++ b/core/src/com/biglybt/core/pairing/impl/PairingManagerTunnelHandler.java
+@@ -34,9 +34,9 @@
+ import javax.crypto.spec.IvParameterSpec;
+ import javax.crypto.spec.SecretKeySpec;
+ 
+-import org.gudy.bouncycastle.crypto.agreement.srp.SRP6Server;
+-import org.gudy.bouncycastle.crypto.agreement.srp.SRP6VerifierGenerator;
+-import org.gudy.bouncycastle.crypto.digests.SHA256Digest;
++import org.bouncycastle.crypto.agreement.srp.SRP6Server;
++import org.bouncycastle.crypto.agreement.srp.SRP6VerifierGenerator;
++import org.bouncycastle.crypto.digests.SHA256Digest;
+ import org.json.simple.JSONObject;
+ 
+ import com.biglybt.core.Core;
+--- a/core/src/com/biglybt/core/networkmanager/impl/udp/UDPConnectionSet.java
++++ b/core/src/com/biglybt/core/networkmanager/impl/udp/UDPConnectionSet.java
+@@ -26,9 +26,9 @@
+ 
+ import javax.crypto.spec.SecretKeySpec;
+ 
+-import org.gudy.bouncycastle.crypto.CipherParameters;
+-import org.gudy.bouncycastle.crypto.engines.RC4Engine;
+-import org.gudy.bouncycastle.crypto.params.KeyParameter;
++import org.bouncycastle.crypto.CipherParameters;
++import org.bouncycastle.crypto.engines.RC4Engine;
++import org.bouncycastle.crypto.params.KeyParameter;
+ 
+ import com.biglybt.core.logging.LogEvent;
+ import com.biglybt.core.logging.LogIDs;
+--- a/core/src/com/biglybt/core/networkmanager/impl/TransportCipher.java
++++ b/core/src/com/biglybt/core/networkmanager/impl/TransportCipher.java
+@@ -26,9 +26,9 @@
+ import javax.crypto.Cipher;
+ import javax.crypto.spec.SecretKeySpec;
+ 
+-import org.gudy.bouncycastle.crypto.CipherParameters;
+-import org.gudy.bouncycastle.crypto.engines.RC4Engine;
+-import org.gudy.bouncycastle.crypto.params.KeyParameter;
++import org.bouncycastle.crypto.CipherParameters;
++import org.bouncycastle.crypto.engines.RC4Engine;
++import org.bouncycastle.crypto.params.KeyParameter;
+ 
+ import com.biglybt.core.util.Debug;
+ 
+--- a/core/src/com/biglybt/core/dht/control/impl/DHTControlImpl.java
++++ b/core/src/com/biglybt/core/dht/control/impl/DHTControlImpl.java
+@@ -29,9 +29,9 @@
+ import java.util.Map.Entry;
+ import java.util.concurrent.atomic.AtomicBoolean;
+ 
+-import org.gudy.bouncycastle.crypto.CipherParameters;
+-import org.gudy.bouncycastle.crypto.engines.RC4Engine;
+-import org.gudy.bouncycastle.crypto.params.KeyParameter;
++import org.bouncycastle.crypto.CipherParameters;
++import org.bouncycastle.crypto.engines.RC4Engine;
++import org.bouncycastle.crypto.params.KeyParameter;
+ 
+ import com.biglybt.core.dht.*;
+ import com.biglybt.core.dht.control.*;
+--- 
a/core/src/com/biglybt/core/tracker/server/impl/tcp/TRTrackerServerProcessorTCP.java
++++ 
b/core/src/com/biglybt/core/tracker/server/impl/tcp/TRTrackerServerProcessorTCP.java
+@@ -25,7 +25,7 @@
+ import java.util.*;
+ import java.util.zip.GZIPOutputStream;
+ 
+-import org.gudy.bouncycastle.util.encoders.Base64;
++import org.bouncycastle.util.encoders.Base64;
+ 
+ import com.biglybt.core.dht.netcoords.DHTNetworkPosition;
+ import com.biglybt.core.dht.netcoords.DHTNetworkPositionManager;
+--- a/core/src/com/biglybt/core/util/AddressUtils.java
++++ b/core/src/com/biglybt/core/util/AddressUtils.java
+@@ -23,7 +23,7 @@
+ import java.security.MessageDigest;
+ import java.util.*;
+ 
+-import org.gudy.bouncycastle.util.encoders.Base64;
++import org.bouncycastle.util.encoders.Base64;
+ 
+ import com.biglybt.core.CoreFactory;
+ import com.biglybt.core.config.COConfigurationManager;
+@@ -786,11 +786,11 @@
+                       try{
+                                       // unfortunately we have an 
incompatible base64 standard in i2p, they replaced / with ~ and + with -
+ 
+-                              char[]  encoded = to_decode.toCharArray();
++                              byte[]  encoded = to_decode.getBytes();
+ 
+                               for ( int i=0;i<encoded.length;i++){
+ 
+-                                      char c = encoded[i];
++                                      byte c = encoded[i];
+ 
+                                       if ( c == '~' ){
+                                               encoded[i] = '/';
+--- a/core/src/com/biglybt/core/util/MD4Hasher.java
++++ b/core/src/com/biglybt/core/util/MD4Hasher.java
+@@ -21,7 +21,7 @@
+ 
+ import java.security.MessageDigest;
+ 
+-import org.gudy.bouncycastle.jce.provider.BouncyCastleProvider;
++import org.bouncycastle.jce.provider.BouncyCastleProvider;
+ 
+ 
+ public class
+--- a/core/src/com/biglybt/core/util/UrlUtils.java
++++ b/core/src/com/biglybt/core/util/UrlUtils.java
+@@ -25,7 +25,7 @@
+ 
+ import javax.net.ssl.*;
+ 
+-import org.gudy.bouncycastle.util.encoders.Base64;
++import org.bouncycastle.util.encoders.Base64;
+ 
+ import com.biglybt.core.CoreFactory;
+ import com.biglybt.core.config.COConfigurationManager;
+--- a/core/src/com/biglybt/net/magneturi/impl/MagnetURIHandlerImpl.java
++++ b/core/src/com/biglybt/net/magneturi/impl/MagnetURIHandlerImpl.java
+@@ -23,7 +23,7 @@
+ import java.net.*;
+ import java.util.*;
+ 
+-import org.gudy.bouncycastle.util.encoders.Base64;
++import org.bouncycastle.util.encoders.Base64;
+ 
+ import com.biglybt.core.CoreFactory;
+ import com.biglybt.core.config.COConfigurationManager;
+--- a/core/src/com/biglybt/util/JSONUtils.java
++++ b/core/src/com/biglybt/util/JSONUtils.java
+@@ -20,7 +20,7 @@
+ import java.io.UnsupportedEncodingException;
+ import java.util.*;
+ 
+-import org.gudy.bouncycastle.util.encoders.Base64;
++import org.bouncycastle.util.encoders.Base64;
+ import org.json.simple.JSONArray;
+ import org.json.simple.JSONObject;
+ import org.json.simple.JSONValue;
+--- a/core/src/com/biglybt/util/MapUtils.java
++++ b/core/src/com/biglybt/util/MapUtils.java
+@@ -23,7 +23,7 @@
+ import java.util.*;
+ 
+ import com.biglybt.core.util.UrlUtils;
+-import org.gudy.bouncycastle.util.encoders.Base64;
++import org.bouncycastle.util.encoders.Base64;
+ 
+ import com.biglybt.core.util.Base32;
+ import com.biglybt.core.util.Constants;
+--- a/uis/src/com/biglybt/ui/console/util/StringEncrypter.java
++++ b/uis/src/com/biglybt/ui/console/util/StringEncrypter.java
+@@ -29,7 +29,7 @@
+ import javax.crypto.spec.DESKeySpec;
+ import javax.crypto.spec.DESedeKeySpec;
+ 
+-import org.gudy.bouncycastle.util.encoders.Base64;
++import org.bouncycastle.util.encoders.Base64;
+ 
+ /**
+  * utility class to encrypt strings. this class was taken from the examples 
at:
+--- a/uis/src/com/biglybt/ui/swt/auth/AuthenticatorWindow.java
++++ b/uis/src/com/biglybt/ui/swt/auth/AuthenticatorWindow.java
+@@ -36,7 +36,7 @@
+ import org.eclipse.swt.layout.GridData;
+ import org.eclipse.swt.layout.GridLayout;
+ import org.eclipse.swt.widgets.*;
+-import org.gudy.bouncycastle.util.encoders.Base64;
++import org.bouncycastle.util.encoders.Base64;
+ 
+ import com.biglybt.core.config.COConfigurationManager;
+ import com.biglybt.core.internat.MessageText;
+--- a/uis/src/com/biglybt/ui/swt/browser/listener/TorrentListener.java
++++ b/uis/src/com/biglybt/ui/swt/browser/listener/TorrentListener.java
+@@ -28,7 +28,7 @@
+ import com.biglybt.core.config.COConfigurationManager;
+ import com.biglybt.core.torrent.TOTorrent;
+ import com.biglybt.core.util.*;
+-import org.gudy.bouncycastle.util.encoders.Base64;
++import org.bouncycastle.util.encoders.Base64;
+ 
+ import com.biglybt.core.messenger.ClientMessageContext;
+ import com.biglybt.core.messenger.ClientMessageContext.torrentURLHandler;
+--- a/core/pom.xml
++++ b/core/pom.xml
+@@ -24,6 +24,11 @@
+                       <groupId>org.assertj</groupId>
+                       <artifactId>assertj-core</artifactId>
+               </dependency>
++              <dependency>
++                      <groupId>org.bouncycastle</groupId>
++                      <artifactId>bcprov</artifactId>
++                      <version>debian</version>
++              </dependency>
+       </dependencies>
+ 
+       <build>
+--- a/core/src/com/biglybt/core/security/impl/SESecurityManagerImpl.java
++++ b/core/src/com/biglybt/core/security/impl/SESecurityManagerImpl.java
+@@ -182,7 +182,7 @@
+               String[]        providers =
+                       {       "com.sun.net.ssl.internal.ssl.Provider",
+                               "org.metastatic.jessie.provider.Jessie",
+-                              
"org.gudy.bouncycastle.jce.provider.BouncyCastleProvider"};
++                              
"org.bouncycastle.jce.provider.BouncyCastleProvider"};
+ 
+               String  provider = null;
+ 
+--- a/core/src/com/biglybt/net/udp/uc/impl/PRUDPPacketHandlerSupport.java
++++ b/core/src/com/biglybt/net/udp/uc/impl/PRUDPPacketHandlerSupport.java
+@@ -44,7 +44,7 @@
+ import java.util.Set;
+ import java.util.concurrent.ConcurrentHashMap;
+ 
+-import org.gudy.bouncycastle.util.encoders.Base64;
++import org.bouncycastle.util.encoders.Base64;
+ 
+ import com.biglybt.core.config.COConfigurationManager;
+ import com.biglybt.core.config.ParameterListener;
+@@ -2097,4 +2097,4 @@
+                       return( buf );
+               }
+       }
+-}
+\ No newline at end of file
++}

Reply via email to