pub const KYBER_K: usize = 3;

pub const KYBER_N: usize = 256;
pub const KYBER_Q: usize = 3329;

pub const KYBER_ETA1: usize = 2;
pub const KYBER_ETA2: usize = 2;

pub const KYBER_SYMBYTES: usize = 32;

pub const KYBER_SSBYTES: usize = 32;

pub const KYBER_POLYBYTES: usize = 384;
pub const KYBER_POLYVECBYTES: usize = KYBER_K * KYBER_POLYBYTES;

pub const KYBER_POLYCOMPRESSEDBYTES: usize = 128;
pub const KYBER_POLYVECCOMPRESSEDBYTES: usize = KYBER_K * 320;

pub const KYBER_INDCPA_PUBLICKEYBYTES: usize = KYBER_POLYVECBYTES + KYBER_SYMBYTES;
pub const KYBER_INDCPA_SECRETKEYBYTES: usize = KYBER_POLYVECBYTES;
pub const KYBER_INDCPA_BYTES: usize = KYBER_POLYVECCOMPRESSEDBYTES + KYBER_POLYCOMPRESSEDBYTES;

pub const KYBER_PUBLICKEYBYTES: usize = KYBER_INDCPA_PUBLICKEYBYTES;
pub const KYBER_SECRETKEYBYTES: usize =
    KYBER_INDCPA_SECRETKEYBYTES + KYBER_INDCPA_PUBLICKEYBYTES + 2 * KYBER_SYMBYTES;
pub const KYBER_CIPHERTEXTBYTES: usize = KYBER_INDCPA_BYTES;

// Kyber-512 constants (k=2)
pub const KYBER_512_K: usize = 2;
pub const KYBER_512_POLYVECBYTES: usize = KYBER_512_K * KYBER_POLYBYTES;
pub const KYBER_512_POLYVECCOMPRESSEDBYTES: usize = KYBER_512_K * 320;
pub const KYBER_512_INDCPA_PUBLICKEYBYTES: usize = KYBER_512_POLYVECBYTES + KYBER_SYMBYTES;
pub const KYBER_512_INDCPA_SECRETKEYBYTES: usize = KYBER_512_POLYVECBYTES;
pub const KYBER_512_INDCPA_BYTES: usize =
    KYBER_512_POLYVECCOMPRESSEDBYTES + KYBER_POLYCOMPRESSEDBYTES;
pub const KYBER_512_PUBLICKEYBYTES: usize = KYBER_512_INDCPA_PUBLICKEYBYTES;
pub const KYBER_512_SECRETKEYBYTES: usize =
    KYBER_512_INDCPA_SECRETKEYBYTES + KYBER_512_INDCPA_PUBLICKEYBYTES + 2 * KYBER_SYMBYTES;
pub const KYBER_512_CIPHERTEXTBYTES: usize = KYBER_512_INDCPA_BYTES;

// Kyber-768 constants (k=3)
pub const KYBER_768_K: usize = 3;
pub const KYBER_768_POLYVECBYTES: usize = KYBER_768_K * KYBER_POLYBYTES;
pub const KYBER_768_POLYVECCOMPRESSEDBYTES: usize = KYBER_768_K * 320;
pub const KYBER_768_INDCPA_PUBLICKEYBYTES: usize = KYBER_768_POLYVECBYTES + KYBER_SYMBYTES;
pub const KYBER_768_INDCPA_SECRETKEYBYTES: usize = KYBER_768_POLYVECBYTES;
pub const KYBER_768_INDCPA_BYTES: usize =
    KYBER_768_POLYVECCOMPRESSEDBYTES + KYBER_POLYCOMPRESSEDBYTES;
pub const KYBER_768_PUBLICKEYBYTES: usize = KYBER_768_INDCPA_PUBLICKEYBYTES;
pub const KYBER_768_SECRETKEYBYTES: usize =
    KYBER_768_INDCPA_SECRETKEYBYTES + KYBER_768_INDCPA_PUBLICKEYBYTES + 2 * KYBER_SYMBYTES;
pub const KYBER_768_CIPHERTEXTBYTES: usize = KYBER_768_INDCPA_BYTES;

// Kyber-1024 constants (k=4)
pub const KYBER_1024_K: usize = 4;
pub const KYBER_1024_POLYVECBYTES: usize = KYBER_1024_K * KYBER_POLYBYTES;
pub const KYBER_1024_POLYVECCOMPRESSEDBYTES: usize = KYBER_1024_K * 320;
pub const KYBER_1024_INDCPA_PUBLICKEYBYTES: usize = KYBER_1024_POLYVECBYTES + KYBER_SYMBYTES;
pub const KYBER_1024_INDCPA_SECRETKEYBYTES: usize = KYBER_1024_POLYVECBYTES;
pub const KYBER_1024_INDCPA_BYTES: usize =
    KYBER_1024_POLYVECCOMPRESSEDBYTES + KYBER_POLYCOMPRESSEDBYTES;
pub const KYBER_1024_PUBLICKEYBYTES: usize = KYBER_1024_INDCPA_PUBLICKEYBYTES;
pub const KYBER_1024_SECRETKEYBYTES: usize =
    KYBER_1024_INDCPA_SECRETKEYBYTES + KYBER_1024_INDCPA_PUBLICKEYBYTES + 2 * KYBER_SYMBYTES;
pub const KYBER_1024_CIPHERTEXTBYTES: usize = KYBER_1024_INDCPA_BYTES;
