This is getting crazy... What I'm trying to do is wire up BouncyCastle correctly, so as to be used as alternate JCE provider by otr4j (or at least from within a sc-bundle), so the
OtrTransformLayer can work properly..
What I've tried is:
A) Import every single package of BouncyCastle (I found those packages using
this snippet) in org.osgi.framework.system.packages.extra
+ any other packages required (discover them through ClassDefNotFound exceptions +
this snippet) in
felix.client.run.properties file.
B) Import
all of those packages in bundle-plugin-otr in
build.xml.
So with this setup...

Running SIP Communicator using "ant run" seems to be
partially working. We can generate D-H key pair using BouncyCastle as alternate provider, but I get (
Problem A) [java] java.net.MalformedURLException: invalid url: reference:file:sc-bundles/protocol-msn.jar!/ (java.net.MalformedURLException: Unknown protocol: reference), like in
this SIP Communicator issue. So let's try to debug this problem!

Running SIP Communicator using Eclipse, fails to generate a D-H key pair using BouncyCastle as alternate provider (
Problem B) with
class "org.bouncycastle.crypto.CipherParameters"'s signer information does not match signer information of other classes in the same package, so I cannot debug the above problem... So let's try to debug this problem!

The BouncyCastle signed jar does not have debug information, so attaching the BouncyCastle source code and installing a breakpoint in org.bouncycastle.jce.provider.JDKKeyPairGenerator$DH constructor gives me
Unable to install breakpoint due to missing line numbers (
Problem C), so I cannot debug the above problem, and this problem can only be resolved if we recompile the BouncyCastle lib, and it won't be a signed jar anymore.
To the bottom line, even if I didn't care about the first problem, the most important problem is that I cannot debug properly (Problem B). To the very bottom line, this probably means refactoring otr4j so as to use the BouncyCastle lightweight API instead of the BouncyCastle JCE provider. This would solve Problem C, and hopefully Problem B as well.
The setup I've used is
r5496 of my branch.. I checked it in for reference.
UPDATE: There are solutions to these problems, and I discuss them in
OSGi + BouncyCastle Round 3.
No comments:
Post a Comment