libconstrainedcrypto provides a random set of basic crypto algorithms
originating from Google-internal code.

This is *NOT* a general purpose crypto library. Our goal is to standardize on
only one native crypto library for the Android platform, and that library is
BoringSSL. Wherever possible, you should prefer BoringSSL's libcrypto over
libconstrainedcrypto. In particular, all code running in Android user space
should use BoringSSL.

There a few rare exceptions where BoringSSL is can't be used yet (such as
bare-bones bootloaders etc.). There is a plan to reduce BoringSSL' libcrypto's
dependency footprint to make libcrypto usable in these environments as well
though.

A number of projects still rely on libconstrainedcrypto (formerly known as
libmincrypt) due to historic reasons, the goal is to clean these up and switch
them over to BoringSSL wherever possible.
