-
Notifications
You must be signed in to change notification settings - Fork 17
Description
1. Context
OpenSearch currently ships Bouncy Castle FIPS (BCFIPS) jars only in the FIPS distribution (built with -Pcrypto.standard=FIPS-140-3). The default distribution does not include these jars. Because plugins inherit jars from lib/, this creates complexity for any plugin aiming to support FIPS:
- Plugins like Security must maintain separate builds to manage whether BCFIPS jars must be excluded or bundled.
- When both core and a plugin supply BCFIPS jars, installation fails due to jar-hell.
2. Decision
We will make the default OpenSearch distribution FIPS-capable by shipping BCFIPS jars in lib/ and exposing them via api scope.
To support this:
- Plugins will be expected to treat BCFIPS as a provided dependency rather than bundling their own.
3. Rationale
Benefits
- First-party and third-party plugins no longer need custom FIPS builds.
- The default distro provides the same providers and algorithms used in the FIPS build.
- Plugins stop bundling their own BC/BCFIPS jars.
Considerations
-
Community plugins using BC/BCFIPS may need minor adaptation.
-
Default distro will include additional crypto jars.
- FIPS behavior remains opt-in; provider ordering remains unchanged unless FIPS mode is explicitly enabled.
4. Alternatives Considered
A. Maintain FIPS-only distribution for BCFIPS (status quo)
- Pros: No change for community plugin authors;
- Cons: Continues requiring dual builds for first-party plugins;
B. Broader jar-hell relaxation without shipping BCFIPS by default
For this alternative:
-
Plugin install logic will be updated to ignore jar-hell only when the conflicting jar is identical (matching GAV + checksum).
-
Pros: Helps with conflict handling.
-
Cons: Does not address the core problem: plugins still lack a consistent FIPS-capable baseline.
5. Outcome
- The default distribution becomes FIPS-capable, simplifying plugin development and unifying the runtime crypto environment.