Requirements

This page outlines the requirements for using aws-lc-rs on each target platform.

aws-lc-rs uses aws-lc-sys or aws-lc-fips-sys to provide raw FFI bindings to AWS-LC. Thus, there are additional build tools required for building these crates into your Rust application.

Quick Summary

Build TypeC/C++ CompilerCMakeBindgenGo
Non-FIPS (aws-lc-sys)RequiredNever requiredNever requiredNever required
FIPS (aws-lc-fips-sys)RequiredAlways requiredRequired*Always required

* Bindgen is required for FIPS builds unless the target has pre-generated bindings.

Pre-generated Bindings

Non-FIPS (aws-lc-sys): Pre-generated "universal" bindings are provided that cover all functions used by aws-lc-rs. These bindings work across all supported platforms, so bindgen is never required for aws-lc-rs users.

Note: If you take a direct dependency on aws-lc-sys (not through aws-lc-rs), it defaults to using the more complete target-specific bindings. See the pre-generated bindings in aws-lc-sys/src/.

FIPS (aws-lc-fips-sys): Pre-generated bindings are available for a limited set of targets. See aws-lc-fips-sys/src/ for the list. Bindgen is required for all other targets.

Tested Platforms

A mostly complete set of platforms for which we test our builds can be found in our CI workflow configuration.

Platform-Specific Requirements