Skip to content

Initial Bouncy Castle Migration Guide#251

Open
cconlon wants to merge 1 commit intowolfSSL:masterfrom
cconlon:bcMigrationGuide
Open

Initial Bouncy Castle Migration Guide#251
cconlon wants to merge 1 commit intowolfSSL:masterfrom
cconlon:bcMigrationGuide

Conversation

@cconlon
Copy link
Member

@cconlon cconlon commented Feb 12, 2026

This PR adds an initial Bouncy Castle Migration guide (English).

make bc-migration

Creates HTML and PDF output:

./build/BouncyCastle-Migration-html/
./build/BouncyCastle-wolfSSL-Migration-Guide.pdf

Current content outline:

  1. Introduction
  2. Overview of Differences
  3. JCE Provider Migration
  4. JSSE Provider Migration
  5. BC Proprietary API Migration
  6. FIPS 140-3 Considerations
  7. Troubleshooting
  8. Support

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an initial English “Bouncy Castle Migration Guide” to the documentation build system, including a new make target to generate PDF/HTML output alongside existing manuals.

Changes:

  • Add BouncyCastle-Migration/ manual (MkDocs + Pandoc header + chapters 1–8).
  • Wire the new manual into the root build (make bc-migration and make all) and README build list.
  • Provide migration guidance for JCE/JSSE usage, FIPS considerations, troubleshooting, and support.

Reviewed changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
README.md Documents the new make bc-migration build target.
Makefile Adds bc-migration target and includes it in all.
BouncyCastle-Migration/Makefile Defines sources and output PDF name for the new manual.
BouncyCastle-Migration/mkdocs.yml MkDocs config and navigation for the migration guide site build.
BouncyCastle-Migration/header.txt Pandoc PDF header customization for page breaks/headers/code wrapping.
BouncyCastle-Migration/src/chapter01.md Introduction, audience, scope, and motivation.
BouncyCastle-Migration/src/chapter02.md High-level differences between BC and wolfSSL Java providers.
BouncyCastle-Migration/src/chapter03.md JCE provider migration and WKS KeyStore migration guidance.
BouncyCastle-Migration/src/chapter04.md JSSE provider migration guidance.
BouncyCastle-Migration/src/chapter05.md Proprietary BC API migration examples (cert extensions, SANs, RSA, utilities).
BouncyCastle-Migration/src/chapter06.md FIPS 140-3 considerations for wolfJCE/wolfJSSE usage.
BouncyCastle-Migration/src/chapter07.md Troubleshooting and common migration issues.
BouncyCastle-Migration/src/chapter08.md Support channels and related documentation links.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@cconlon cconlon assigned padelsbach and unassigned cconlon Feb 12, 2026
if (overflow == 1) {
/* AIA URI list was truncated, certificate has more URIs
* than the internal buffer can hold */
} else if (overflow == WolfSSL.NOT_COMPILED_IN) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems to be the only example which checks for NOT_COMPILED_IN, but there are many routines which return this. Any specific reason to call it out here?

**wolfCrypt:**

```java
byte[] pem = Files.readAllBytes(Paths.get("key.pem"));

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some of the wolfSSL/wolfCrypt examples don't have the relevant import lines. Should we add those for clarity or equivalence with the BC examples?

To use FIPS 140-3 validated cryptography:

1. Obtain a wolfCrypt FIPS 140-3 release from wolfSSL (requires a commercial license).
2. Build the native wolfSSL library with FIPS support enabled.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be appropriate to add guidance on version compatibility between wolfSSL and the java code? Or maybe this is info they would receive with the license?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants