For full details of the SHA-3 Submission Requirements,
see the Federal Register Notice (November 2, 2007).
*Note: Submitters may provide additional implementations to demonstrate specific properties of their algorithms. See Additional Implementations for further details.
2.C.1 Reference Implementation
A reference implementation shall be submitted in order to promote the understanding of how the candidate algorithm may be implemented. This implementation shall consist of source code written in ANSI C; appropriate comments should be included in the code, and the code should clearly map to the algorithm description included under Section 2.B.1. Since this implementation is intended for reference purposes, clarity in programming is more important than efficiency.
The reference implementation shall be capable of fully demonstrating the operation of the candidate algorithm. The reference implementation shall support all message digest sizes specified in Section 3. Additionally, it must support all other message digest sizes that are claimed to be supported by the algorithm.
NIST will specify a set of cryptographic service calls, namely a cryptographic API, for the ANSI C implementations, which will be made available at http://www.nist.gov/hash-competition. All ANSI C submissions shall implement that API so that the NIST test system can be compatible with all the submissions.
Separate source code for implementing the required KATs with the reference implementation shall also be included. This code shall be able to process input specified in the format indicated by NIST (on the web site as referred to under Section 2.B.3) and run the required tests.
The reference implementation shall be provided in a directory labeled: \Reference Implementation.
2.C.2 Optimized Implementations
Two optimized implementations of the candidate algorithm shall be submitted - one implementation that is optimized for a 32-bit platform, and another for a 64-bit platform. The optimized implementations shall be specified in the ANSI C programming language. These implementations will be evaluated on 32- and 64-bit platforms.
General Requirements for Both Optimized Implementations:
respectively.