diff --git a/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c b/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c new file mode 100644 index 0000000..78436e7 --- /dev/null +++ b/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c @@ -0,0 +1,20 @@ +#include +#include "api.h" + +int libjade_kyber512_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { + uint8_t keypair_coins[JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES]; + OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2); + OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2); + return jade_kem_kyber_kyber512_amd64_avx2_keypair_derand(public_key, secret_key, keypair_coins); +} + +int libjade_kyber512_avx2_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { + uint8_t enc_coins[JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES]; + OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES); + return jade_kem_kyber_kyber512_amd64_avx2_enc_derand(ciphertext, shared_secret, public_key, enc_coins); +} + +int libjade_kyber512_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { + return jade_kem_kyber_kyber512_amd64_avx2_dec( shared_secret, ciphertext, secret_key); +} + diff --git a/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h b/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h index 5148fd5..419112e 100644 --- a/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h +++ b/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h @@ -3,16 +3,8 @@ #include -#define JADE_KEM_kyber_kyber512_amd64_avx2_SECRETKEYBYTES 1632 -#define JADE_KEM_kyber_kyber512_amd64_avx2_PUBLICKEYBYTES 800 -#define JADE_KEM_kyber_kyber512_amd64_avx2_CIPHERTEXTBYTES 768 #define JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES 64 #define JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES 32 -#define JADE_KEM_kyber_kyber512_amd64_avx2_BYTES 32 - -#define JADE_KEM_kyber_kyber512_amd64_avx2_ALGNAME "Kyber512" -#define JADE_KEM_kyber_kyber512_amd64_avx2_ARCH "amd64" -#define JADE_KEM_kyber_kyber512_amd64_avx2_IMPL "avx2" int jade_kem_kyber_kyber512_amd64_avx2_keypair_derand( uint8_t *public_key, @@ -20,7 +12,7 @@ int jade_kem_kyber_kyber512_amd64_avx2_keypair_derand( const uint8_t *coins ); -int jade_kem_kyber_kyber512_amd64_avx2_keypair( +int libjade_kyber512_avx2_keypair( uint8_t *public_key, uint8_t *secret_key ); @@ -32,7 +24,7 @@ int jade_kem_kyber_kyber512_amd64_avx2_enc_derand( const uint8_t *coins ); -int jade_kem_kyber_kyber512_amd64_avx2_enc( +int libjade_kyber512_avx2_enc( uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key @@ -44,4 +36,10 @@ int jade_kem_kyber_kyber512_amd64_avx2_dec( const uint8_t *secret_key ); +int libjade_kyber512_avx2_dec( + uint8_t *shared_secret, + const uint8_t *ciphertext, + const uint8_t *secret_key +); + #endif diff --git a/src/crypto_kem/kyber/kyber512/amd64/ref/api.c b/src/crypto_kem/kyber/kyber512/amd64/ref/api.c new file mode 100644 index 0000000..e06e406 --- /dev/null +++ b/src/crypto_kem/kyber/kyber512/amd64/ref/api.c @@ -0,0 +1,20 @@ +#include +#include "api.h" + +int libjade_kyber512_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { + uint8_t keypair_coins[JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES]; + OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2); + OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2); + return jade_kem_kyber_kyber512_amd64_ref_keypair_derand(public_key, secret_key, keypair_coins); +} + +int libjade_kyber512_ref_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { + uint8_t enc_coins[JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES]; + OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES); + return jade_kem_kyber_kyber512_amd64_ref_enc_derand(ciphertext, shared_secret, public_key, enc_coins); +} + +int libjade_kyber512_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { + return jade_kem_kyber_kyber512_amd64_ref_dec(shared_secret, ciphertext, secret_key); +} + diff --git a/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h b/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h index 38127cf..fcce52b 100644 --- a/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h +++ b/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h @@ -3,17 +3,8 @@ #include -#define JADE_KEM_kyber_kyber512_amd64_ref_SECRETKEYBYTES 1632 -#define JADE_KEM_kyber_kyber512_amd64_ref_PUBLICKEYBYTES 800 -#define JADE_KEM_kyber_kyber512_amd64_ref_CIPHERTEXTBYTES 768 #define JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES 64 #define JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES 32 -#define JADE_KEM_kyber_kyber512_amd64_ref_BYTES 32 - -#define JADE_KEM_kyber_kyber512_amd64_ref_ALGNAME "Kyber512" -#define JADE_KEM_kyber_kyber512_amd64_ref_ARCH "amd64" -#define JADE_KEM_kyber_kyber512_amd64_ref_IMPL "ref" - int jade_kem_kyber_kyber512_amd64_ref_keypair_derand( uint8_t *public_key, @@ -21,7 +12,7 @@ int jade_kem_kyber_kyber512_amd64_ref_keypair_derand( const uint8_t *coins ); -int jade_kem_kyber_kyber512_amd64_ref_keypair( +int libjade_kyber512_ref_keypair( uint8_t *public_key, uint8_t *secret_key ); @@ -33,7 +24,7 @@ int jade_kem_kyber_kyber512_amd64_ref_enc_derand( const uint8_t *coins ); -int jade_kem_kyber_kyber512_amd64_ref_enc( +int libjade_kyber512_ref_enc( uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key @@ -45,4 +36,10 @@ int jade_kem_kyber_kyber512_amd64_ref_dec( const uint8_t *secret_key ); +int libjade_kyber512_ref_dec( + uint8_t *shared_secret, + const uint8_t *ciphertext, + const uint8_t *secret_key +); + #endif diff --git a/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c b/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c new file mode 100644 index 0000000..9eeab1d --- /dev/null +++ b/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c @@ -0,0 +1,20 @@ +#include +#include "api.h" + +int libjade_kyber768_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { + uint8_t keypair_coins[JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES]; + OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2); + OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2); + return jade_kem_kyber_kyber768_amd64_avx2_keypair_derand(public_key, secret_key, keypair_coins); +} + +int libjade_kyber768_avx2_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { + uint8_t enc_coins[JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES]; + OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES); + return jade_kem_kyber_kyber768_amd64_avx2_enc_derand(ciphertext, shared_secret, public_key, enc_coins); +} + +int libjade_kyber768_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { + return jade_kem_kyber_kyber768_amd64_avx2_dec(shared_secret, ciphertext, secret_key); +} + diff --git a/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h b/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h index d3b3500..ac36577 100644 --- a/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h +++ b/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h @@ -3,16 +3,8 @@ #include -#define JADE_KEM_kyber_kyber768_amd64_avx2_SECRETKEYBYTES 2400 -#define JADE_KEM_kyber_kyber768_amd64_avx2_PUBLICKEYBYTES 1184 -#define JADE_KEM_kyber_kyber768_amd64_avx2_CIPHERTEXTBYTES 1088 #define JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES 64 #define JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES 32 -#define JADE_KEM_kyber_kyber768_amd64_avx2_BYTES 32 - -#define JADE_KEM_kyber_kyber768_amd64_avx2_ALGNAME "Kyber768" -#define JADE_KEM_kyber_kyber768_amd64_avx2_ARCH "amd64" -#define JADE_KEM_kyber_kyber768_amd64_avx2_IMPL "avx2" int jade_kem_kyber_kyber768_amd64_avx2_keypair_derand( uint8_t *public_key, @@ -20,7 +12,7 @@ int jade_kem_kyber_kyber768_amd64_avx2_keypair_derand( const uint8_t *coins ); -int jade_kem_kyber_kyber768_amd64_avx2_keypair( +int libjade_kyber768_avx2_keypair( uint8_t *public_key, uint8_t *secret_key ); @@ -32,7 +24,7 @@ int jade_kem_kyber_kyber768_amd64_avx2_enc_derand( const uint8_t *coins ); -int jade_kem_kyber_kyber768_amd64_avx2_enc( +int libjade_kyber768_avx2_enc( uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key @@ -44,4 +36,10 @@ int jade_kem_kyber_kyber768_amd64_avx2_dec( const uint8_t *secret_key ); +int libjade_kyber768_avx2_dec( + uint8_t *shared_secret, + const uint8_t *ciphertext, + const uint8_t *secret_key +); + #endif diff --git a/src/crypto_kem/kyber/kyber768/amd64/ref/api.c b/src/crypto_kem/kyber/kyber768/amd64/ref/api.c new file mode 100644 index 0000000..b9a29b6 --- /dev/null +++ b/src/crypto_kem/kyber/kyber768/amd64/ref/api.c @@ -0,0 +1,20 @@ +#include +#include "api.h" + +int libjade_kyber768_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { + uint8_t keypair_coins[JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES]; + OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2); + OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2); + return jade_kem_kyber_kyber768_amd64_ref_keypair_derand(public_key, secret_key, keypair_coins); +} + +int libjade_kyber768_ref_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { + uint8_t enc_coins[JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES]; + OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES); + return jade_kem_kyber_kyber768_amd64_ref_enc_derand(ciphertext, shared_secret, public_key, enc_coins); +} + +int libjade_kyber768_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { + return jade_kem_kyber_kyber768_amd64_ref_dec(shared_secret, ciphertext, secret_key); +} + diff --git a/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h b/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h index e23e1bf..0c453e0 100644 --- a/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h +++ b/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h @@ -3,16 +3,8 @@ #include -#define JADE_KEM_kyber_kyber768_amd64_ref_SECRETKEYBYTES 2400 -#define JADE_KEM_kyber_kyber768_amd64_ref_PUBLICKEYBYTES 1184 -#define JADE_KEM_kyber_kyber768_amd64_ref_CIPHERTEXTBYTES 1088 #define JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES 64 #define JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES 32 -#define JADE_KEM_kyber_kyber768_amd64_ref_BYTES 32 - -#define JADE_KEM_kyber_kyber768_amd64_ref_ALGNAME "Kyber768" -#define JADE_KEM_kyber_kyber768_amd64_ref_ARCH "amd64" -#define JADE_KEM_kyber_kyber768_amd64_ref_IMPL "ref" int jade_kem_kyber_kyber768_amd64_ref_keypair_derand( uint8_t *public_key, @@ -20,7 +12,7 @@ int jade_kem_kyber_kyber768_amd64_ref_keypair_derand( const uint8_t *coins ); -int jade_kem_kyber_kyber768_amd64_ref_keypair( +int libjade_kyber768_ref_keypair( uint8_t *public_key, uint8_t *secret_key ); @@ -32,7 +24,7 @@ int jade_kem_kyber_kyber768_amd64_ref_enc_derand( const uint8_t *coins ); -int jade_kem_kyber_kyber768_amd64_ref_enc( +int libjade_kyber768_ref_enc( uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key @@ -44,4 +36,10 @@ int jade_kem_kyber_kyber768_amd64_ref_dec( const uint8_t *secret_key ); +int libjade_kyber768_ref_dec( + uint8_t *shared_secret, + const uint8_t *ciphertext, + const uint8_t *secret_key +); + #endif