161 lines
7 KiB
HTML
161 lines
7 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en">
|
|
<head>
|
|
<meta name="robots" content="index, nofollow">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
<title>BorderCastle JCE Provider</title>
|
|
<link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon">
|
|
<link type="text/css" rel="stylesheet" media="all" href="css/style.css">
|
|
</head>
|
|
<body>
|
|
<div id="main">
|
|
|
|
<div id="center">
|
|
<h1><a href="https://www.boarderzone.net" target="_blank"><img src="img/bordercastle-logo.png" width="32" height="32" alt="Logo"></a> BorderCastle JCE Provider</h1>
|
|
<p>
|
|
A re-packaged version of the
|
|
<a href="https://www.bouncycastle.org/" class="extLnk" target="_blank">BouncyCastle</a>
|
|
<a href="https://docs.oracle.com/en/java/javase/17/security/java-cryptography-architecture-jca-reference-guide.html" class="extLnk" target="_blank">JCE</a>
|
|
provider with different package name for more deployment freedom.
|
|
</p>
|
|
|
|
<h2>Why in general?</h2>
|
|
<p>
|
|
Originally, this was an attempt at improving the situation on Android,
|
|
where the shipped embedded version of BouncyCastle was somewhat cut-down
|
|
and thus not suitable for various purposes.
|
|
</p>
|
|
<p>
|
|
Apart from being crippled in certain regards, it was also difficult (if
|
|
not impossible) to use an updated version of BouncyCastle due to class
|
|
loader conflicts, because they would use identical class and package names.
|
|
</p>
|
|
<p>
|
|
BorderCastle is the same as the stock BouncyCastle with a couple of
|
|
small changes and additions to allow for broader uses.
|
|
</p>
|
|
|
|
<h2>Why not SpongyCastle?</h2>
|
|
<p>
|
|
Why another fork apart from the already available
|
|
<a href="https://rtyley.github.io/spongycastle/" class="extLnk" target="_blank">SpongyCastle</a>?
|
|
</p>
|
|
<p>
|
|
First of all, SpongyCastle doesn't appear to be maintained any longer
|
|
and thus it is not reflecting recent BouncyCastle versions.
|
|
</p>
|
|
<p>
|
|
More importantly, as a manufacturer of software libraries and components,
|
|
it turned out to be important to allow flexible combination of our libraries
|
|
with other components, while not enforcing dependency version restrictions
|
|
on the users of our libraries.
|
|
</p>
|
|
<p>
|
|
Hence, an application making use of our library could still make use of any
|
|
version of SpongyCastle or BouncyCastle without running into class loader
|
|
problems, while still guaranteeing the tested and well-defined environment
|
|
of our BorderCastle version.
|
|
</p>
|
|
<p>
|
|
Of course, a lot of code duplication could be avoided by using the
|
|
BorderCastle classes everywhere - simply by renaming the imported packages.
|
|
</p>
|
|
|
|
<h2>Changes in respect to BouncyCastle</h2>
|
|
<ul>
|
|
<li>to avoid class loader conflicts, all packages have been renamed from
|
|
<strong>org.bouncycastle.*</strong> to <strong>org.bordercastle.*</strong></li>
|
|
<li>the Java Security API Provider name is "<strong>BoCa</strong>"
|
|
rather than "<strong>BC</strong>"
|
|
(resp. "<strong>BoCaPQC</strong>" instead of "<strong>BCPQC</strong>"
|
|
for the post quantum provider)</li>
|
|
<li>no class name changes, so the BouncyCastleProvider class remains
|
|
<strong>Bouncy</strong>, not <strong>Border</strong>,
|
|
but moves to the <strong>org.bordercastle.jce.provider</strong>
|
|
package</li>
|
|
<li>added a simple class to allow for version checking without having
|
|
to instantiate a provider (which is an expensive operation):
|
|
<strong>org.bordercastle.Version</strong></li>
|
|
<li>changed the names of the resulting built library files to have a
|
|
consistent naming pattern</li>
|
|
<li>added new constructors for the provider classes to allow instantiating
|
|
multiple ones with different names, so they can be used in parallel when needed</li>
|
|
</ul>
|
|
|
|
<h2>Current version</h2>
|
|
<p>
|
|
The current version of BorderCastle is derived from the
|
|
<strong>BouncyCastle version 1.81</strong>.
|
|
</p>
|
|
<p>
|
|
The BorderCastle JCE provider is signed with a special JCE code signing
|
|
certificate for JCE provider signing (issued by the "JCE Code Signing CA,
|
|
Oracle Corporation").
|
|
Check the
|
|
<a href="https://www.boarderzone.net/code/bz/bordercastle/wiki/BorderCastle-JCE-Signing"
|
|
class="extLnk" target="_blank">wiki</a> for more information.
|
|
</p>
|
|
<p>
|
|
This allows the provider to be used for both, on Android and with "normal"
|
|
Java on desktop/server systems where the Oracle JRE requires JCE providers
|
|
to be signed.
|
|
</p>
|
|
|
|
<h2>License</h2>
|
|
<p>
|
|
BorderCastle is licensed under the same
|
|
<a href="https://www.bouncycastle.org/licence.html" class="extLnk" target="_blank">adaptation
|
|
of the MIT X11 License</a> as the original BouncyCastle library.
|
|
</p>
|
|
|
|
<h2>Downloads</h2>
|
|
<p>
|
|
Binary signed downloads can be found on the
|
|
<a href="https://www.boarderzone.net/code/bz/bordercastle/releases"
|
|
class="extLnk" target="_blank">Releases page</a>.
|
|
</p>
|
|
|
|
<h2>Building</h2>
|
|
<p>
|
|
The
|
|
<a href="https://www.boarderzone.net/code/bz/bordercastle/wiki"
|
|
class="extLnk" target="_blank">wiki</a>
|
|
describes the necessary steps for
|
|
<a href="https://www.boarderzone.net/code/bz/bordercastle/wiki/Building-BorderCastle"
|
|
class="extLnk" target="_blank">building</a>
|
|
and the
|
|
<a href="https://www.boarderzone.net/code/bz/bordercastle/wiki/BorderCastle-Libraries"
|
|
class="extLnk" target="_blank">resulting files</a>.
|
|
</p>
|
|
|
|
<h2>Contributors</h2>
|
|
<p>
|
|
<ul>
|
|
<li>a great thanks to the original team from
|
|
<a href="https://www.bouncycastle.org/engage/contributors/" class="extLnk" target="_blank">BouncyCastle</a>
|
|
for providing and maintaining this powerful piece of software!
|
|
<li><a href="https://github.com/rtyley" class="extLnk" target="_blank">Roberto Tyley</a>
|
|
who came up with the initial idea of creating the Android port called SpongyCastle</li>
|
|
<li><a href="https://www.darioincalza.com/" class="extLnk" target="_blank">Dario Incalza</a>
|
|
who helped writing and extending the scripts for code re-organization</li>
|
|
</ul>
|
|
</p>
|
|
|
|
</div>
|
|
|
|
<div id="footer">
|
|
<div id="block-block-3" class="clear-block block block-block">
|
|
<div class="content">
|
|
<p>Copyright © 1990-2025 Leon Poyyayil (private)</p>
|
|
</div>
|
|
</div>
|
|
<div id="block-block-4" class="clear-block block block-block">
|
|
<div class="content">
|
|
<p>E-Mail: <a href="mailto:webmaster@boarderzone.net" title="get in touch">webmaster@boarderzone.net</a></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</body>
|
|
</html>
|