diff --git a/scripts/copy_from_pqclean.sh b/scripts/copy_from_pqclean.sh deleted file mode 100755 index c16cd697c..000000000 --- a/scripts/copy_from_pqclean.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -set -e - -if [ "x${PQCLEAN_DIR}" == "x" ]; then - echo "Must specify PQCLEAN_DIR environment variable" - exit 1 -fi - -for SCHEME in frodokem640aes frodokem640shake frodokem976aes frodokem976shake frodokem1344aes frodokem1344shake; do - rm -rf src/kem/frodokem/pqclean_${SCHEME}_clean - cp -pr ${PQCLEAN_DIR}/crypto_kem/${SCHEME}/clean src/kem/frodokem/pqclean_${SCHEME}_clean - rm src/kem/frodokem/pqclean_${SCHEME}_clean/Makefile* -done \ No newline at end of file diff --git a/scripts/copy_from_pqclean/copy_from_pqclean.py b/scripts/copy_from_pqclean/copy_from_pqclean.py new file mode 100755 index 000000000..2ff3f6eb5 --- /dev/null +++ b/scripts/copy_from_pqclean/copy_from_pqclean.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python3 + +import copy +import jinja2 +import os +import shutil +import subprocess +import yaml + +if 'PQCLEAN_DIR' not in os.environ: + print("Must set environment variable PQCLEAN_DIR") + exit(1) + +def file_get_contents(filename, encoding=None): + with open(filename, mode='r', encoding=encoding) as fh: + return fh.read() + +def file_put_contents(filename, s, encoding=None): + with open(filename, mode='w', encoding=encoding) as fh: + fh.write(s) + +def generator(destination_filename, template_filename, pqclean_dir, family, scheme_desired): + template = file_get_contents(os.path.join('scripts', 'copy_from_pqclean', template_filename)) + f = copy.deepcopy(family) + f['family'] = f['name'] + if scheme_desired != None: + f['schemes'] = [x for x in f['schemes'] if x == scheme_desired] + assert(len(f['schemes']) == 1) + for scheme in f['schemes']: + scheme['metadata'] = yaml.safe_load(file_get_contents(os.path.join(pqclean_dir, 'crypto_kem', scheme['pqclean_scheme'], 'META.yml'))) + scheme['metadata']['implementations'] = [imp for imp in scheme['metadata']['implementations'] if imp['name'] == scheme['implementation']] + assert(len(scheme['metadata']['implementations']) == 1) + scheme['metadata']['ind_cca'] = 'true' + file_put_contents(destination_filename, jinja2.Template(template).render(f)) + +instructions = file_get_contents(os.path.join('scripts', 'copy_from_pqclean', 'copy_from_pqclean.yml'), encoding='utf-8') +instructions = yaml.safe_load(instructions) + +for family in instructions: + for scheme in family['schemes']: + shutil.rmtree(os.path.join('src', 'kem', family['name'], 'pqclean_{}_clean'.format(scheme['pqclean_scheme'])), ignore_errors=True) + subprocess.run([ + 'cp', + '-pr', + os.path.join(os.environ['PQCLEAN_DIR'], 'crypto_kem', scheme['pqclean_scheme'], scheme['implementation']), + os.path.join('src', 'kem', family['name'], 'pqclean_{}_clean'.format(scheme['pqclean_scheme'])) + ]) + os.remove(os.path.join('src', 'kem', family['name'], 'pqclean_{}_clean'.format(scheme['pqclean_scheme']), 'Makefile')) + os.remove(os.path.join('src', 'kem', family['name'], 'pqclean_{}_clean'.format(scheme['pqclean_scheme']), 'Makefile.Microsoft_nmake')) + + generator( + os.path.join('src', 'kem', family['name'], 'kem_{}.h'.format(family['name'])), + os.path.join('src', 'kem', 'family', 'kem_family.h'), + os.environ['PQCLEAN_DIR'], + family, + None, + ) + + generator( + os.path.join('src', 'kem', family['name'], 'Makefile.am'), + os.path.join('src', 'kem', 'family', 'Makefile.am'), + os.environ['PQCLEAN_DIR'], + family, + None, + ) + + for scheme in family['schemes']: + generator( + os.path.join('src', 'kem', family['name'], 'kem_{}.c'.format(scheme['pqclean_scheme'])), + os.path.join('src', 'kem', 'family', 'kem_scheme.c'), + os.environ['PQCLEAN_DIR'], + family, + scheme, + ) \ No newline at end of file diff --git a/scripts/copy_from_pqclean/copy_from_pqclean.yml b/scripts/copy_from_pqclean/copy_from_pqclean.yml new file mode 100644 index 000000000..e49632ebd --- /dev/null +++ b/scripts/copy_from_pqclean/copy_from_pqclean.yml @@ -0,0 +1,57 @@ +- + name: frodokem + schemes: + - + scheme: 640_aes + pqclean_scheme: frodokem640aes + implementation: clean + sources: + - kem.c + - matrix_aes.c + - noise.c + - util.c + - + scheme: 640_shake + pqclean_scheme: frodokem640shake + implementation: clean + sources: + - kem.c + - matrix_shake.c + - noise.c + - util.c + - + scheme: 976_aes + pqclean_scheme: frodokem976aes + implementation: clean + sources: + - kem.c + - matrix_aes.c + - noise.c + - util.c + - + scheme: 976_shake + pqclean_scheme: frodokem976shake + implementation: clean + sources: + - kem.c + - matrix_shake.c + - noise.c + - util.c + - + scheme: 1344_aes + pqclean_scheme: frodokem1344aes + implementation: clean + sources: + - kem.c + - matrix_aes.c + - noise.c + - util.c + - + scheme: 1344_shake + pqclean_scheme: frodokem1344shake + implementation: clean + sources: + - kem.c + - matrix_shake.c + - noise.c + - util.c diff --git a/scripts/copy_from_pqclean/src/kem/family/Makefile.am b/scripts/copy_from_pqclean/src/kem/family/Makefile.am new file mode 100644 index 000000000..4ebcccc0f --- /dev/null +++ b/scripts/copy_from_pqclean/src/kem/family/Makefile.am @@ -0,0 +1,12 @@ +AUTOMAKE_OPTIONS = foreign +noinst_LTLIBRARIES = libkem{{ family }}.la +noinst_LTLIBRARIES += {% for scheme in schemes %}libkem{{ scheme['pqclean_scheme'] }}.la {%endfor %} + +libkem{{ family }}_la_LIBADD = {% for scheme in schemes %}libkem{{ scheme['pqclean_scheme'] }}.la {%endfor %} +libkem{{ family }}_la_SOURCES = + +{% for scheme in schemes -%} +libkem{{ scheme['pqclean_scheme'] }}_la_SOURCES = kem_{{ scheme['pqclean_scheme'] }}.c {% for source in scheme['sources'] %}pqclean_{{ scheme['pqclean_scheme'] }}_clean/{{ source }} {% endfor %} +libkem{{ scheme['pqclean_scheme'] }}_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims + +{% endfor -%} diff --git a/scripts/copy_from_pqclean/src/kem/family/kem_family.h b/scripts/copy_from_pqclean/src/kem/family/kem_family.h new file mode 100644 index 000000000..2ffe6f52b --- /dev/null +++ b/scripts/copy_from_pqclean/src/kem/family/kem_family.h @@ -0,0 +1,21 @@ +#ifndef __OQS_KEM_{{ family|upper }}_H +#define __OQS_KEM_{{ family|upper }}_H + +#include + +{% for scheme in schemes -%} +#ifdef OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }} +#define OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_length_public_key {{ scheme['metadata']['length-public-key'] }} +#define OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_length_secret_key {{ scheme['metadata']['length-secret-key'] }} +#define OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_length_ciphertext {{ scheme['metadata']['length-ciphertext'] }} +#define OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_length_shared_secret {{ scheme['metadata']['length-shared-secret'] }} +OQS_KEM *OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_new(); +OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t *public_key, uint8_t *secret_key); +OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key); +OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key); +#endif + +{% endfor -%} + +#endif + diff --git a/scripts/copy_from_pqclean/src/kem/family/kem_scheme.c b/scripts/copy_from_pqclean/src/kem/family/kem_scheme.c new file mode 100644 index 000000000..913412645 --- /dev/null +++ b/scripts/copy_from_pqclean/src/kem/family/kem_scheme.c @@ -0,0 +1,47 @@ +#include + +#include + +{% for scheme in schemes -%} +#ifdef OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }} + +OQS_KEM *OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_new() { + + OQS_KEM *kem = malloc(sizeof(OQS_KEM)); + if (kem == NULL) { + return NULL; + } + kem->method_name = OQS_KEM_alg_{{ family }}_{{ scheme['scheme'] }}; + kem->alg_version = "{{ scheme['metadata']['implementations'][0]['version'] }}"; + + kem->claimed_nist_level = {{ scheme['metadata']['claimed-nist-level'] }}; + kem->ind_cca = {{ scheme['metadata']['ind_cca'] }}; + + kem->length_public_key = OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_length_public_key; + kem->length_secret_key = OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_length_secret_key; + kem->length_ciphertext = OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_length_ciphertext; + kem->length_shared_secret = OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_length_shared_secret; + + kem->keypair = OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair; + kem->encaps = OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps; + kem->decaps = OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps; + + return kem; +} + +int PQCLEAN_{{ scheme['pqclean_scheme']|upper }}_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); +int PQCLEAN_{{ scheme['pqclean_scheme']|upper }}_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); +int PQCLEAN_{{ scheme['pqclean_scheme']|upper }}_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); + +OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t *public_key, uint8_t *secret_key) { + return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme']|upper }}_CLEAN_crypto_kem_keypair(public_key, secret_key); +} +OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { + return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme']|upper }}_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); +} +OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { + return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme']|upper }}_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); +} + +#endif +{% endfor -%} diff --git a/src/kem/frodokem/Makefile.am b/src/kem/frodokem/Makefile.am index fc5e67e6f..342a5dd12 100644 --- a/src/kem/frodokem/Makefile.am +++ b/src/kem/frodokem/Makefile.am @@ -1,24 +1,25 @@ AUTOMAKE_OPTIONS = foreign noinst_LTLIBRARIES = libkemfrodokem.la -noinst_LTLIBRARIES += libkemfrodokem640aes.la libkemfrodokem640shake.la libkemfrodokem976aes.la libkemfrodokem976shake.la libkemfrodokem1344aes.la libkemfrodokem1344shake.la +noinst_LTLIBRARIES += libkemfrodokem640aes.la libkemfrodokem640shake.la libkemfrodokem976aes.la libkemfrodokem976shake.la libkemfrodokem1344aes.la libkemfrodokem1344shake.la -libkemfrodokem_la_LIBADD = libkemfrodokem640aes.la libkemfrodokem640shake.la libkemfrodokem976aes.la libkemfrodokem976shake.la libkemfrodokem1344aes.la libkemfrodokem1344shake.la +libkemfrodokem_la_LIBADD = libkemfrodokem640aes.la libkemfrodokem640shake.la libkemfrodokem976aes.la libkemfrodokem976shake.la libkemfrodokem1344aes.la libkemfrodokem1344shake.la libkemfrodokem_la_SOURCES = -libkemfrodokem640aes_la_SOURCES = kem_frodokem640aes.c pqclean_frodokem640aes_clean/kem.c pqclean_frodokem640aes_clean/matrix_aes.c pqclean_frodokem640aes_clean/noise.c pqclean_frodokem640aes_clean/util.c +libkemfrodokem640aes_la_SOURCES = kem_frodokem640aes.c pqclean_frodokem640aes_clean/kem.c pqclean_frodokem640aes_clean/matrix_aes.c pqclean_frodokem640aes_clean/noise.c pqclean_frodokem640aes_clean/util.c libkemfrodokem640aes_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims -libkemfrodokem640shake_la_SOURCES = kem_frodokem640shake.c pqclean_frodokem640shake_clean/kem.c pqclean_frodokem640shake_clean/matrix_shake.c pqclean_frodokem640shake_clean/noise.c pqclean_frodokem640shake_clean/util.c +libkemfrodokem640shake_la_SOURCES = kem_frodokem640shake.c pqclean_frodokem640shake_clean/kem.c pqclean_frodokem640shake_clean/matrix_shake.c pqclean_frodokem640shake_clean/noise.c pqclean_frodokem640shake_clean/util.c libkemfrodokem640shake_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims -libkemfrodokem976aes_la_SOURCES = kem_frodokem976aes.c pqclean_frodokem976aes_clean/kem.c pqclean_frodokem976aes_clean/matrix_aes.c pqclean_frodokem976aes_clean/noise.c pqclean_frodokem976aes_clean/util.c +libkemfrodokem976aes_la_SOURCES = kem_frodokem976aes.c pqclean_frodokem976aes_clean/kem.c pqclean_frodokem976aes_clean/matrix_aes.c pqclean_frodokem976aes_clean/noise.c pqclean_frodokem976aes_clean/util.c libkemfrodokem976aes_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims -libkemfrodokem976shake_la_SOURCES = kem_frodokem976shake.c pqclean_frodokem976shake_clean/kem.c pqclean_frodokem976shake_clean/matrix_shake.c pqclean_frodokem976shake_clean/noise.c pqclean_frodokem976shake_clean/util.c +libkemfrodokem976shake_la_SOURCES = kem_frodokem976shake.c pqclean_frodokem976shake_clean/kem.c pqclean_frodokem976shake_clean/matrix_shake.c pqclean_frodokem976shake_clean/noise.c pqclean_frodokem976shake_clean/util.c libkemfrodokem976shake_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims -libkemfrodokem1344aes_la_SOURCES = kem_frodokem1344aes.c pqclean_frodokem1344aes_clean/kem.c pqclean_frodokem1344aes_clean/matrix_aes.c pqclean_frodokem1344aes_clean/noise.c pqclean_frodokem1344aes_clean/util.c +libkemfrodokem1344aes_la_SOURCES = kem_frodokem1344aes.c pqclean_frodokem1344aes_clean/kem.c pqclean_frodokem1344aes_clean/matrix_aes.c pqclean_frodokem1344aes_clean/noise.c pqclean_frodokem1344aes_clean/util.c libkemfrodokem1344aes_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims -libkemfrodokem1344shake_la_SOURCES = kem_frodokem1344shake.c pqclean_frodokem1344shake_clean/kem.c pqclean_frodokem1344shake_clean/matrix_shake.c pqclean_frodokem1344shake_clean/noise.c pqclean_frodokem1344shake_clean/util.c +libkemfrodokem1344shake_la_SOURCES = kem_frodokem1344shake.c pqclean_frodokem1344shake_clean/kem.c pqclean_frodokem1344shake_clean/matrix_shake.c pqclean_frodokem1344shake_clean/noise.c pqclean_frodokem1344shake_clean/util.c libkemfrodokem1344shake_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims + diff --git a/src/kem/frodokem/kem_frodokem1344aes.c b/src/kem/frodokem/kem_frodokem1344aes.c index 36f9b2249..a95b7338a 100644 --- a/src/kem/frodokem/kem_frodokem1344aes.c +++ b/src/kem/frodokem/kem_frodokem1344aes.c @@ -11,7 +11,7 @@ OQS_KEM *OQS_KEM_frodokem_1344_aes_new() { return NULL; } kem->method_name = OQS_KEM_alg_frodokem_1344_aes; - kem->alg_version = "https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55"; + kem->alg_version = "https://github.com/Microsoft/PQCrypto-LWEKE/commit/d5bbd0417ba111b08a959c0042a1dcc65fb14a89"; kem->claimed_nist_level = 5; kem->ind_cca = true; @@ -32,18 +32,13 @@ int PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned int PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_keypair(uint8_t *public_key, - uint8_t *secret_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_keypair(uint8_t *public_key, uint8_t *secret_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_keypair(public_key, secret_key); } -OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_encaps(uint8_t *ciphertext, - uint8_t *shared_secret, - const uint8_t *public_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } -OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_decaps(uint8_t *shared_secret, - const unsigned char *ciphertext, - const uint8_t *secret_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/frodokem/kem_frodokem1344shake.c b/src/kem/frodokem/kem_frodokem1344shake.c index 1fb1790b7..796836e21 100644 --- a/src/kem/frodokem/kem_frodokem1344shake.c +++ b/src/kem/frodokem/kem_frodokem1344shake.c @@ -11,7 +11,7 @@ OQS_KEM *OQS_KEM_frodokem_1344_shake_new() { return NULL; } kem->method_name = OQS_KEM_alg_frodokem_1344_shake; - kem->alg_version = "https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55"; + kem->alg_version = "https://github.com/Microsoft/PQCrypto-LWEKE/commit/d5bbd0417ba111b08a959c0042a1dcc65fb14a89"; kem->claimed_nist_level = 5; kem->ind_cca = true; @@ -32,18 +32,13 @@ int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_keypair(unsigned char *pk, unsign int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_keypair(uint8_t *public_key, - uint8_t *secret_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_keypair(uint8_t *public_key, uint8_t *secret_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_keypair(public_key, secret_key); } -OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_encaps(uint8_t *ciphertext, - uint8_t *shared_secret, - const uint8_t *public_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } -OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_decaps(uint8_t *shared_secret, - const unsigned char *ciphertext, - const uint8_t *secret_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/frodokem/kem_frodokem640aes.c b/src/kem/frodokem/kem_frodokem640aes.c index 08d2015aa..e9856256c 100644 --- a/src/kem/frodokem/kem_frodokem640aes.c +++ b/src/kem/frodokem/kem_frodokem640aes.c @@ -11,7 +11,7 @@ OQS_KEM *OQS_KEM_frodokem_640_aes_new() { return NULL; } kem->method_name = OQS_KEM_alg_frodokem_640_aes; - kem->alg_version = "https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55"; + kem->alg_version = "https://github.com/Microsoft/PQCrypto-LWEKE/commit/d5bbd0417ba111b08a959c0042a1dcc65fb14a89"; kem->claimed_nist_level = 1; kem->ind_cca = true; @@ -32,18 +32,13 @@ int PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned int PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -OQS_API OQS_STATUS OQS_KEM_frodokem_640_aes_keypair(uint8_t *public_key, - uint8_t *secret_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_640_aes_keypair(uint8_t *public_key, uint8_t *secret_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_keypair(public_key, secret_key); } -OQS_API OQS_STATUS OQS_KEM_frodokem_640_aes_encaps(uint8_t *ciphertext, - uint8_t *shared_secret, - const uint8_t *public_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_640_aes_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } -OQS_API OQS_STATUS OQS_KEM_frodokem_640_aes_decaps(uint8_t *shared_secret, - const unsigned char *ciphertext, - const uint8_t *secret_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_640_aes_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/frodokem/kem_frodokem640shake.c b/src/kem/frodokem/kem_frodokem640shake.c index ed41ea203..dad513662 100644 --- a/src/kem/frodokem/kem_frodokem640shake.c +++ b/src/kem/frodokem/kem_frodokem640shake.c @@ -11,7 +11,7 @@ OQS_KEM *OQS_KEM_frodokem_640_shake_new() { return NULL; } kem->method_name = OQS_KEM_alg_frodokem_640_shake; - kem->alg_version = "https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55"; + kem->alg_version = "https://github.com/Microsoft/PQCrypto-LWEKE/commit/d5bbd0417ba111b08a959c0042a1dcc65fb14a89"; kem->claimed_nist_level = 1; kem->ind_cca = true; @@ -32,18 +32,13 @@ int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigne int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -OQS_API OQS_STATUS OQS_KEM_frodokem_640_shake_keypair(uint8_t *public_key, - uint8_t *secret_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_640_shake_keypair(uint8_t *public_key, uint8_t *secret_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_keypair(public_key, secret_key); } -OQS_API OQS_STATUS OQS_KEM_frodokem_640_shake_encaps(uint8_t *ciphertext, - uint8_t *shared_secret, - const uint8_t *public_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_640_shake_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } -OQS_API OQS_STATUS OQS_KEM_frodokem_640_shake_decaps(uint8_t *shared_secret, - const unsigned char *ciphertext, - const uint8_t *secret_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_640_shake_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/frodokem/kem_frodokem976aes.c b/src/kem/frodokem/kem_frodokem976aes.c index 7d78145ab..af162a5b1 100644 --- a/src/kem/frodokem/kem_frodokem976aes.c +++ b/src/kem/frodokem/kem_frodokem976aes.c @@ -11,7 +11,7 @@ OQS_KEM *OQS_KEM_frodokem_976_aes_new() { return NULL; } kem->method_name = OQS_KEM_alg_frodokem_976_aes; - kem->alg_version = "https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55"; + kem->alg_version = "https://github.com/Microsoft/PQCrypto-LWEKE/commit/d5bbd0417ba111b08a959c0042a1dcc65fb14a89"; kem->claimed_nist_level = 3; kem->ind_cca = true; @@ -32,18 +32,13 @@ int PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned int PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_keypair(uint8_t *public_key, - uint8_t *secret_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_keypair(uint8_t *public_key, uint8_t *secret_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_keypair(public_key, secret_key); } -OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_encaps(uint8_t *ciphertext, - uint8_t *shared_secret, - const uint8_t *public_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } -OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_decaps(uint8_t *shared_secret, - const unsigned char *ciphertext, - const uint8_t *secret_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } diff --git a/src/kem/frodokem/kem_frodokem976shake.c b/src/kem/frodokem/kem_frodokem976shake.c index 7724bc511..1ae277145 100644 --- a/src/kem/frodokem/kem_frodokem976shake.c +++ b/src/kem/frodokem/kem_frodokem976shake.c @@ -11,7 +11,7 @@ OQS_KEM *OQS_KEM_frodokem_976_shake_new() { return NULL; } kem->method_name = OQS_KEM_alg_frodokem_976_shake; - kem->alg_version = "https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55"; + kem->alg_version = "https://github.com/Microsoft/PQCrypto-LWEKE/commit/d5bbd0417ba111b08a959c0042a1dcc65fb14a89"; kem->claimed_nist_level = 3; kem->ind_cca = true; @@ -32,18 +32,13 @@ int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigne int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); -OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_keypair(uint8_t *public_key, - uint8_t *secret_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_keypair(uint8_t *public_key, uint8_t *secret_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_keypair(public_key, secret_key); } -OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_encaps(uint8_t *ciphertext, - uint8_t *shared_secret, - const uint8_t *public_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); } -OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_decaps(uint8_t *shared_secret, - const unsigned char *ciphertext, - const uint8_t *secret_key) { +OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key) { return (OQS_STATUS) PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); }