pqc/crypto_sign/dilithium4/clean/symmetric.c
Matthias J. Kannwischer e56b2e5556
Add Dilithium (#172)
* fixes dynamic memory allocation test. previously a function called freeze() would trigger it

* this adds DilithiumII. Preprocessor conditionals still need to be removed

* fix ms Makefile

* fix MS compiler warnings

* clean-up

* remove preprocessor conditionals

* add dilithium3

* add dilithium4

* add duplicate consistency checks

* SHA2 state constants in common

* clean up symmetric.h

* Port SPHINCS+-SHA256 to sha256ctx struct

* Implement ctx struct for fips202

* Port Kyber{512,768,1024} to fips202 ctx struct

* Port NewHope to fips202 structs

* Port SPHINCS+-SHAKE256 to fips202 ctx structs

* Use opaque fips202 structs in MQDSS

* port dilithium to use fips202 ctx structs

* include -Wredundant-decls

* remove comment; format NTT constants

* reduce casts in power2round
2019-06-11 04:18:05 -05:00

33 lines
855 B
C

#include "symmetric.h"
#include "fips202.h"
void PQCLEAN_DILITHIUM4_CLEAN_shake128_stream_init(shake128ctx *state,
const unsigned char seed[SEEDBYTES],
uint16_t nonce) {
unsigned int i;
unsigned char buf[SEEDBYTES + 2];
for (i = 0; i < SEEDBYTES; ++i) {
buf[i] = seed[i];
}
buf[SEEDBYTES] = (uint8_t) nonce;
buf[SEEDBYTES + 1] = (uint8_t) (nonce >> 8);
shake128_absorb(state, buf, sizeof(buf));
}
void PQCLEAN_DILITHIUM4_CLEAN_shake256_stream_init(shake256ctx *state,
const unsigned char seed[CRHBYTES],
uint16_t nonce) {
unsigned int i;
unsigned char buf[CRHBYTES + 2];
for (i = 0; i < CRHBYTES; ++i) {
buf[i] = seed[i];
}
buf[CRHBYTES] = (uint8_t) nonce;
buf[CRHBYTES + 1] = (uint8_t) (nonce >> 8);
shake256_absorb(state, buf, sizeof(buf));
}