GPL-3.0-only crate linked into every dependent application
`packages/ndk/rust` depended on `crystals-dilithium`, which is GPL-3.0-only, while NDK ships under MIT. The crate was not optional at build time: `build.dart` compiled it unconditionally, and the ordinary Schnorr verifier lived in the same `src/lib.rs` as the quantum-secure signer, so an application that never touched post-quantum code still linked the GPL-3.0-only object code. Statically linking GPL-3.0-only code makes the combined binary a derivative work, obliging every downstream application to distribute under GPL-3.0. That is a hard problem for closed-source consumers, and GPL-3.0 is also widely held to be incompatible with App Store distribution terms.
Evidence, measured rather than inferred
packages/ndk/rust depended on crystals-dilithium, which is GPL-3.0-only, while NDK ships under MIT. build.dart compiled it unconditionally, and the ordinary Schnorr verifier lived in the same src/lib.rs as the quantum-secure signer.
Impact
An application that never touched post-quantum code still linked GPL-3.0-only object code. Statically linking it makes the combined binary a derivative work, obliging every downstream application to distribute under GPL-3.0. That is a hard problem for closed-source consumers, and GPL-3.0 is widely held to be incompatible with App Store distribution terms.
Recommendation
Replace the dependency with `fips204`, which is MIT OR Apache-2.0 and imposes none of that. Merged upstream in pull request #712.