/hila5

HILA5 KEM/DEM. Reference and Optimized Implementations + NIST PQC Submission Documents

Primary LanguageCOtherNOASSERTION

README

	This file, a description of every file in the distribution.
	2017-11-24  Markku-Juhani O. Saarinen <mjos@iki.fi>

	For more information, see https://mjos.fi/hila5


Supporting_Documentation/hila5spec.pdf

	Specification of the HILA5 KEM and Public Key Encryption algorithm.	
	Organized per NIST's call for post-quantum proposals. 
	* Amended on 2018-03-22 to version 1.01, correcting a single mention 
	of IND-CCA to IND-CPA on Page 17, and adding a reference footnote.


LICENSE

	MIT License (which is very permissive). Applies to all code
	in this distribution.


KAT/PQCkemKAT_1824.req
KAT/PQCkemKAT_1824.rsp

	NIST Known Answer Test (KAT) data, automatically generated.


KAT/src/PQCgenKAT_kem.c
KAT/src/rng.h
KAT/src/rng.c

	Code to generate KAT files (used by testing code) from NIST.
	Slightly modified to eliminate some warnings.


Reference_Implementation/api.h
Reference_Implementation/hila5_endian.h
Reference_Implementation/hila5_sha3.h
Reference_Implementation/hila5_sha3_ref.c
Reference_Implementation/kem.c
Reference_Implementation/Makefile

	Tiny C99 Reference implementation. This is optimized for brevity
	and readability as it is used in specification -- it is therefore
	really slow and should not be used for production.

	Main functionality is provided by kem.c. A basic SHA3 and SHAKE
	implementation is contained in hila5_sha3_ref.c. The reference
	code is fully written by author and submitter.

	For testing, you may try "make test", which will generate KEM
	files and compare those with the real ones.


Optimized_Implementation/api.h
Optimized_Implementation/hila5_endian.h
Optimized_Implementation/hila5_sha3.h
Optimized_Implementation/hila5_sha3_opt.c
Optimized_Implementation/kem.c
Optimized_Implementation/Makefile
Optimized_Implementation/ms_ntt.c
Optimized_Implementation/ms_ntt_const.c
Optimized_Implementation/ms_priv.h

	C99 Optimized implementation, which uses the proper NTT algorithms.
	Here you may also do a "make test."

	Main functionality is provided by kem.c. hila5_sha_opt.c provides
	optimized version of the SHA-3 hash function and SHAKE XOF, with
	parts adopted from Ronny Van Keer (Keccak team). The NTT sources
	(ms_ntt*) have been adopted (= heavily hacked) from Microsoft's
	free lattice library, released under MIT license.


Additional_Implementations/avx2/api.h
Additional_Implementations/avx2/hila5_endian.h
Additional_Implementations/avx2/hila5_sha3.h
Additional_Implementations/avx2/hila5_sha3_opt.c
Additional_Implementations/avx2/kem.c
Additional_Implementations/avx2/Makefile
Additional_Implementations/avx2/ms_ntt_const.c
Additional_Implementations/avx2/ms_ntt_misc.c
Additional_Implementations/avx2/ms_priv.h
Additional_Implementations/avx2/ms_x64_ntt.S

	AVX2 Optimized Implementation. Very similar to the Optimized
	Implementation; adopts vectorized AVX2 instruction set NTT code from
	Microsoft Lattice Library. The assembler code from Microsoft uses
	".intel_syntax noprefix" and is not position independent so you may
	need -no-pie in addition to -march=native option.