diff --git a/src/common/pqclean_shims/aes.h b/src/common/pqclean_shims/aes.h index 36d0d6301..70c116b8c 100644 --- a/src/common/pqclean_shims/aes.h +++ b/src/common/pqclean_shims/aes.h @@ -19,8 +19,11 @@ static void aes128_keyexp(aes128ctx *r, const unsigned char *key) { } static void aes128_ecb(unsigned char *out, const unsigned char *in, size_t nblocks, aes128ctx *ctx) { - OQS_AES128_ECB_enc_sch(in, nblocks * AES_BLOCKBYTES, ctx, out); - OQS_AES128_free_schedule(ctx); + OQS_AES128_ECB_enc_sch(in, nblocks * AES_BLOCKBYTES, *ctx, out); + OQS_AES128_free_schedule(*ctx); + // FIXME: PQClean AES API expects that aes128_ecb can be called multiple + // times with the same key schedule, but this instantiation does not, since + // it frees the key schedule immediately } #endif diff --git a/src/kem/frodokem/kem_frodokem640aes.c b/src/kem/frodokem/kem_frodokem640aes.c index 30e06792c..40e4d89d1 100644 --- a/src/kem/frodokem/kem_frodokem640aes.c +++ b/src/kem/frodokem/kem_frodokem640aes.c @@ -28,23 +28,23 @@ OQS_KEM *OQS_KEM_frodokem_640_aes_new() { return kem; } -int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); -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); +int PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); +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) { - return (OQS_STATUS) PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_keypair(public_key, 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) { - return (OQS_STATUS) PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_enc(ciphertext, shared_secret, 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) { - return (OQS_STATUS) PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); + return (OQS_STATUS) PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); } #endif