Files
i2p.www/www.i2p2/pages/jbigi.html

80 lines
3.9 KiB
HTML
Raw Normal View History

2008-01-31 20:38:37 +00:00
{% extends "_layout.html" %}
{% block title %}jbigi{% endblock %}
{% block content %}<p>Using JNI (Java Native Interface), a bit of C code (thanks ugha!), a little
2004-07-12 10:24:00 +00:00
manual work and a piece of chewinggum it is possible to make the public key
cryptography quite a bit faster.</p>
2004-07-06 20:39:18 +00:00
<h2>Requirements</h2>
2004-07-12 10:24:00 +00:00
<p>This works on Linux, and with a few changes in build.sh probably also on
other platforms. FreeBSD has also been reported to work too. On Kaffee the
speedup is very small, because it already uses native BitInteger internally.
Blackdown seems to cause strange errors. Because you are going to do
compilation, you need JDK; JRE won't work.</p>
2004-07-06 20:39:18 +00:00
<p>The required code is available in CVS and the latest source tarball.</p>
2004-07-12 10:24:00 +00:00
<p>The GNU MP Bignum library (libgmp) needs to be installed, if it isn't
included in your OS / distribution or installed already, it can be received from
<a href="http://www.swox.com/gmp/">http://www.swox.com/gmp/</a>. Even if you
have already installed it as binary, it might still be worth a try to compile
GMP yourself, since then it will be able to use the specific instructions of
2008-02-27 21:10:19 +00:00
your processor. The latest GMP 4.2.2 is also
possible to be used instead of GMP 4.1.4. But latest GMP 4.2.2 needs more
testing before setting the default requirement for building jbigi.jar.</p>
2004-07-06 20:39:18 +00:00
<h2>Step-by-step instructions</h2>
<ol>
2008-04-01 14:56:49 +00:00
<li>Look at <a href="http://localhost:7657/logs.jsp">your wrapper logs</a>,
at the point where I2P first starts. There should be one of two messages - either
<tt>
INFO: Locally optimized native BigInteger loaded from the library path
</tt>
or
<tt>
INFO: Native BigInteger library jbigi not loaded - using pure java</tt>.
If the native BitInteger library was NOT loaded, you definitely need to
compile your own.
Certain platforms, such as OS X, OpenSolaris, and 64-bit systems,
may require you to compile your own library.
If the BigInteger library was loaded, do at least the next step to see
what your performance is.
</li>
<li>Look on <a href="http://localhost:7657/oldstats.jsp">http://localhost:7657/oldstats.jsp</a>
2008-04-01 14:56:49 +00:00
to see what the lifetime average values for <code>crypto.elGamal.decrypt</code> and
<code>crypto.elGamal.encrypt</code> are. The numbers are times in milliseconds. Copy these somewhere so you can compare
2008-04-01 14:56:49 +00:00
them later on.
The network average for encrypt time is about 20ms.
If your encrypt time is less than 50ms for a relatively new processor, or less than 100ms
for an older processor, and the native BigInteger library was loaded, you are probably fine.
</li>
<li>Get the latest released sourcecode of I2P from
<a href="download.html">the download page</a>, or get the cutting-edge source
out of the monotone database mtn.i2p2.de</li>
2004-07-06 20:39:18 +00:00
<li>Inside the source tree change directory to: <code>core/c</code></li>
2008-04-01 14:56:49 +00:00
<li>Read the README file. You must download GMP version 4.2.2 from
from <a href="http://www.swox.com/gmp/">http://www.swox.com/gmp</a>, saving it to jbigi/gmp-4.2.2.tar.bz2.
2004-07-12 10:24:00 +00:00
<li>Take a look at <code>build.sh</code>, if your <code>JAVA_HOME</code>
environment variable is set and you are using Linux then it might just work.
Otherwise change the settings.</li>
2004-07-06 20:39:18 +00:00
<li>Run <code>build.sh</code><br/>
2004-07-12 10:24:00 +00:00
A file named <code>libjbigi.so</code> should be created in the current
directory. If this doesn't happen and/or you get errors then please report
them.<br/>
2004-07-06 20:39:18 +00:00
Also some tests are done. Read the final lines of output for some additional
info, it will be something like this:
<pre>
native run time: 5842ms ( 57ms each)
java run time: 41072ms (406ms each)
native = 14.223802103622907% of pure java time
</pre>
2004-07-12 10:24:00 +00:00
If the native is indeed 5-7x faster then it looks all good. If not, please
report.</li>
2004-07-06 21:38:20 +00:00
<li>Copy <code>libjbigi.so</code> to your i2p directory</li>
<li>Restart your I2P programs.</li>
2004-07-12 10:24:00 +00:00
<li>On
2008-02-27 21:10:19 +00:00
<a href="http://localhost:7657/oldstats.jsp">http://localhost:7657/oldstats.jsp</a>
2004-07-12 10:24:00 +00:00
the <code>crypto.elGamal.decrypt</code> and <code>crypto.elGamal.encrypt</code>
should be a lot faster.</li>
2004-07-06 20:39:18 +00:00
</ol>
<p>Feedback is appreciated</p>
{% endblock %}