mirror of
https://github.com/open-quantum-safe/liboqs.git
synced 2025-10-04 00:02:01 -04:00
* Add copy_from_libjade.yml Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Modify copy_from_upstream.py Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Add patches for libjade Kyber code Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update alg_support.cmake templates Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update KEM famiy templates Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Fix copy_from_upstream.py Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Correct copy_from_upstream.py Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Modify copy_from_upstream.yml Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update KEM family templates Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Fix copy_from_upstream.py Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Fix KEM family templates Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Fix KEM family templates Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update templates for build system files Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update build system files Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Fix add_enable_by_alg_conditional.libjade Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Run copy_from_upstream.py Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update KEM family templates Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update KEM templates Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update KEM templates Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update copy_from_upstream.yml with libjade implementation info Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update KEM templates Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Edit KEM templates Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Run copy_from_upstream.py Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update copy_from_upstream.py Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Fix KEM temlates Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Run copy_from_upstream.py Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Add libjade_shim Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Add jasmin/libjade namespaces to test_binary.py Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update testing Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Allow manually triggering CI tests Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Change container for upstreamcheck in unix.yml Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update copy_from_upstream.py Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Edit unix.yml Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Edit unix.yml Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Restrict copying of code from libjade repo to relevant files Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Remove irrelevant libjade code Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Remove redundant KEM templates Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update KEM template to accomodate new dir structure Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Debug: tweak unix.yml Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Re-build libjade with jasmin version used in CI Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Debug: undo unix.yml tweak Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Allow MSVC to ignore libjade_shims Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Simplify name scheme for libjade code Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update alg docs, libjade code name scheme, and license Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update copy_from_upstream documentation Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Fix copy_from_upstream.py and simply libjade code name scheme Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update alg docs and CBOM Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Correct alg doc generation Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Generate CBOM with unique bom-ref Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Cleanup unix.yml Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * fix patches to include api.c; fix kem templates Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * fix kyber patch Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * turn off weekly constant time tests for libjade implementations Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * update documentation Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * change upstream to stable libjade release Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * fix kyber documentation Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * fix kyber documentation Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * fix kem template again Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * fix weekly.yml and unix.yml to test libjade code Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * rename libjade asm files from *.s to *.S Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * end libjade_kyber*/api.c files with newline Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * fix kem template to prevent duplicate symbols in object files Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * fix indentation in weekly.yml Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * skip testing libjade on macos-14 in CI Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * use release tag/branch with libjade upstream url instead of commit Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * fix build error when OQS_ENABLE_LIBJADE_KEM_ALG=OFF Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * initialize LIBJADE_RANDOMBYTES when OQS_LIBJADE_BUILD=OFF Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * remove redundant comment Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * fix comment typo Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * make string explicit when comparing with variable in cmake Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * add libjade kyber licensing to README.md Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * remove reference to oldpqclean_kyber* code from libjade if branchin kem_kyber_*.c Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update CMakeLists.txt Co-authored-by: Spencer Wilson <spencer.wilson@uwaterloo.ca> Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * track jasminc version in copy_from_libjade.yml; check jasminc version in copy_from_upstream.py Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * add OQS_LIBJADE_BUILD to build flags output Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * remove link from CONFIGURE.md Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Update libjade to dual license Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Patch gcc version for MacOS CI runs Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Fix doc generation Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * Fix libjade docs Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * fix license info in README.md Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> * update libjade_randombytes spdx-license Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> --------- Signed-off-by: Pravek Sharma <sharmapravek@gmail.com> Co-authored-by: Spencer Wilson <spencer.wilson@uwaterloo.ca>
306 lines
12 KiB
Diff
306 lines
12 KiB
Diff
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 <oqs/rand.h>
|
|
+#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 <stdint.h>
|
|
|
|
-#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 <oqs/rand.h>
|
|
+#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 <stdint.h>
|
|
|
|
-#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 <oqs/rand.h>
|
|
+#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 <stdint.h>
|
|
|
|
-#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 <oqs/rand.h>
|
|
+#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 <stdint.h>
|
|
|
|
-#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
|