bordercastle/website/index.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 &#xa9; 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>