This is the corecrypto (cc) project. The main goal is to provide low level fast math routines and crypto APIs which can be used in various environments (Kernel, bootloader, userspace, etc.). It is an explicit goal to minimize dependancies between modules and functions so that clients of this library only end up with the routines they need and nothing more. Current corecrypto consists of the following submodules: cc Headers and code common to all of the modules ccasn1 ASN.1 typeid constants and ccoid definition. cccurve25519 Curve25519 Diffie-Hellman routines. ccder DER encoding decoding support ccn Math on vectors of n cc_units cczp Math over a prime field on vectors of n cc_units ccz Variable sized signed integer math routines ccdrbg Deterministic Random Byte Generators ccrng Random Bytes Generators ccdh Diffie-Hellman routines. cced25519 Ed25519 signature routines. ccrsa RSA routines. ccec Eliptic Curve Curves, ec specific math and APIs ccdigest Digest abstraction layer. cchmac HMAC using any ccdigest. ccpbkdf2 PKKDF2 using any ccdigest. ccmd2 MD2 digest implementations. ccmd4 MD4 digest implementations. ccmd5 MD5 digest implementations. ccripemd RIPE-MD digest implementations. ccsha1 SHA-1 digest implementations. ccsha2 SHA-2 digest implementations. ccmode Symmetric cipher chaining mode interfaces. ccpad Symmetric cipher padding code. ccaes AES symmetric cipher implementations. ccblowfish Blowfish symmetric cipher implementations. cccast Cast symmetric cipher implementations. ccdes DES and 3DES symmetric cipher implementations. ccrc2 RC2 symmetric cipher implementations. ccrc4 RC4 symmetric cipher implementations. ccperf Performance testing harness. cctest Common utilities for creating self tests and XCunit tests. Each module has the following subdirectories: corecrypto headers for this module src sources for this module doc documentation, references, etc. xcunit XCTest based unit tests for this module. crypto_tests sources for executable tests for this module test_vectors test vectors for this module tools sources for random helper tools. The following subdirections don't follow the module layout yet: corecrypto_kext Supporting files for kernel extension build and fips support. corecrypto_dylib Supporting files for userspace shared lib build and fips support.