/*
- * Copyright (C) 2024 Tobias Brunner, codelabs GmbH
+ * Copyright (C) 2024-2025 Tobias Brunner, codelabs GmbH
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
#include "wolfssl_common.h"
-#ifdef WOLFSSL_HAVE_KYBER
+#ifdef WOLFSSL_HAVE_MLKEM
-#include <wolfssl/wolfcrypt/kyber.h>
-#ifdef WOLFSSL_WC_KYBER
-#include <wolfssl/wolfcrypt/wc_kyber.h>
-#endif
-#if defined(HAVE_LIBOQS)
-#include <wolfssl/wolfcrypt/ext_kyber.h>
+#include <wolfssl/wolfcrypt/mlkem.h>
+#ifdef WOLFSSL_WC_MLKEM
+#include <wolfssl/wolfcrypt/wc_mlkem.h>
#endif
typedef struct private_key_exchange_t private_key_exchange_t;
}
this->shared_secret = chunk_alloc(ss_len);
- /* FIXME: can't use the wc_MlKemKey alias here as it's incorrectly mapped
- * to wc_KyberKey_Encapsulate */
- if (wc_KyberKey_Decapsulate(this->kem, this->shared_secret.ptr,
+ if (wc_MlKemKey_Decapsulate(this->kem, this->shared_secret.ptr,
ciphertext.ptr, ciphertext.len) != 0)
{
DBG1(DBG_LIB, "%N decapsulation failed",
switch (method)
{
-#ifdef WOLFSSL_KYBER512
+#ifdef WOLFSSL_WC_ML_KEM_512
case ML_KEM_512:
type = WC_ML_KEM_512;
break;
#endif
-#ifdef WOLFSSL_KYBER768
+#ifdef WOLFSSL_WC_ML_KEM_768
case ML_KEM_768:
type = WC_ML_KEM_768;
break;
#endif
-#ifdef WOLFSSL_KYBER1024
+#ifdef WOLFSSL_WC_ML_KEM_1024
case ML_KEM_1024:
type = WC_ML_KEM_1024;
break;
return &this->public;
}
-#endif /* WOLFSSL_HAVE_KYBER */
+#endif /* WOLFSSL_HAVE_MLKEM */
#endif
#endif /* HAVE_ECC_VERIFY */
#endif /* HAVE_ECC */
-#ifdef WOLFSSL_HAVE_KYBER
+#ifdef WOLFSSL_HAVE_MLKEM
PLUGIN_REGISTER(KE, wolfssl_kem_create),
PLUGIN_PROVIDE(KE, ML_KEM_512),
PLUGIN_PROVIDE(KE, ML_KEM_768),