Skip to content

Runtime fips crypto provider pluto cfsgnal - #992

Draft
sky1122 wants to merge 8 commits into
bottlerocket-os:developfrom
sky1122:runtime-fips-crypto-provider-pluto-cfsgnal
Draft

Runtime fips crypto provider pluto cfsgnal#992
sky1122 wants to merge 8 commits into
bottlerocket-os:developfrom
sky1122:runtime-fips-crypto-provider-pluto-cfsgnal

Conversation

@sky1122

@sky1122 sky1122 commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Issue number:

Closes #

Description of changes:

Testing done:

Terms of contribution:

By submitting this pull request, I agree that this contribution is dual-licensed under the terms of both the Apache License, version 2.0, and the MIT license.

sky1122 added 8 commits July 21, 2026 16:42
Add a centralized CryptoProvider crate that provides runtime FIPS
detection and TLS algorithm selection for Bottlerocket Rust binaries.

When the kernel FIPS flag is enabled (/proc/sys/crypto/fips_enabled = 1),
the provider restricts TLS to FIPS-approved algorithms only (AES-GCM
cipher suites, P-256/P-384 key exchange). On non-FIPS systems, the full
algorithm set is available.

Signed-off-by: Jingwei Wang <jweiw@amazon.com>
The FIPS compliance checks were previously packaged separately and only
installed on FIPS-specific variants. This prevented runtime FIPS
detection on standard variants where FIPS may be enabled at boot via
the kernel flag.

Signed-off-by: Jingwei Wang <jweiw@amazon.com>
Add a local carry of the aws-smithy-http-client crate from smithy-rs
with support for custom CryptoProvider injection. This enables
Bottlerocket binaries to configure TLS at runtime rather than relying
on compile-time feature flags for FIPS crypto selection.

This replaces aws-smithy-experimental as the HTTP client abstraction
for binaries that need explicit control over TLS configuration.

Signed-off-by: Jingwei Wang <jweiw@amazon.com>
Replace the deprecated aws-smithy-experimental crate with
aws-smithy-http-client for HTTP client construction in pluto. The new
crate provides explicit TLS provider selection and proxy configuration
through the ConnectorBuilder API.

Signed-off-by: Jingwei Wang <jweiw@amazon.com>
Replace aws-smithy-experimental with aws-smithy-http-client for
CloudFormation signal HTTP client construction. The new crate provides
explicit TLS provider selection and proxy configuration through the
ConnectorBuilder API.

Signed-off-by: Jingwei Wang <jweiw@amazon.com>
Remove the deprecated aws-smithy-experimental crate from the workspace.
This crate has been superseded by aws-smithy-http-client which provides
the same HTTP client functionality with support for custom CryptoProvider
injection.

No binaries depend on aws-smithy-experimental after the pluto and
cfsignal move to aws-smithy-http-client.

Signed-off-by: Jingwei Wang <jweiw@amazon.com>
Replace compile-time FIPS crypto selection with runtime detection via
bottlerocket-crypto-provider. The provider reads /proc/sys/crypto/fips_enabled
at startup and selects FIPS-restricted or default cipher suites accordingly.

The direct aws-lc-rs and rustls dependencies are removed since they are
now provided transitively through bottlerocket-crypto-provider.

Signed-off-by: Jingwei Wang <jweiw@amazon.com>
Replace compile-time FIPS crypto selection with runtime detection via
bottlerocket-crypto-provider. The provider reads /proc/sys/crypto/fips_enabled
at startup and selects FIPS-restricted or default cipher suites accordingly.

The direct aws-lc-rs and rustls dependencies are removed since they are
now provided transitively through bottlerocket-crypto-provider.

Signed-off-by: Jingwei Wang <jweiw@amazon.com>
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.

1 participant