/* This Source Code Form is subject to the terms of the Mozilla Public *License,v.2.0.IfacopyoftheMPLwasnotdistributedwiththis
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/* Consistency check between libcrux_mlkem1024_portable.h and kyber.h */
PR_STATIC_ASSERT(MLKEM1024_PUBLIC_KEY_BYTES == LIBCRUX_ML_KEM_MLKEM1024_CPA_PKE_PUBLIC_KEY_SIZE);
PR_STATIC_ASSERT(MLKEM1024_PRIVATE_KEY_BYTES == LIBCRUX_ML_KEM_MLKEM1024_SECRET_KEY_SIZE);
PR_STATIC_ASSERT(MLKEM1024_CIPHERTEXT_BYTES == LIBCRUX_ML_KEM_MLKEM1024_CPA_PKE_CIPHERTEXT_SIZE);
staticbool
valid_params(KyberParams params)
{ switch (params) { #ifndef NSS_DISABLE_KYBER case params_kyber768_round3: case params_kyber768_round3_test_mode: #endif case params_ml_kem768: case params_ml_kem768_test_mode: case params_ml_kem1024: case params_ml_kem1024_test_mode: returntrue; default: returnfalse;
}
}
staticbool
valid_pubkey(KyberParams params, const SECItem *pubkey)
{ switch (params) { case params_kyber768_round3: case params_kyber768_round3_test_mode: case params_ml_kem768: case params_ml_kem768_test_mode: return pubkey && pubkey->len == KYBER768_PUBLIC_KEY_BYTES; case params_ml_kem1024: case params_ml_kem1024_test_mode: return pubkey && pubkey->len == MLKEM1024_PUBLIC_KEY_BYTES; default: returnfalse;
}
}
staticbool
valid_privkey(KyberParams params, const SECItem *privkey)
{ switch (params) { case params_kyber768_round3: case params_kyber768_round3_test_mode: case params_ml_kem768: case params_ml_kem768_test_mode: return privkey && privkey->len == KYBER768_PRIVATE_KEY_BYTES; case params_ml_kem1024: case params_ml_kem1024_test_mode: return privkey && privkey->len == MLKEM1024_PRIVATE_KEY_BYTES; default: returnfalse;
}
}
staticbool
valid_ciphertext(KyberParams params, const SECItem *ciphertext)
{ switch (params) { case params_kyber768_round3: case params_kyber768_round3_test_mode: case params_ml_kem768: case params_ml_kem768_test_mode: return ciphertext && ciphertext->len == KYBER768_CIPHERTEXT_BYTES; case params_ml_kem1024: case params_ml_kem1024_test_mode: return ciphertext && ciphertext->len == MLKEM1024_CIPHERTEXT_BYTES; default: returnfalse;
}
}
staticbool
valid_secret(KyberParams params, const SECItem *secret)
{ switch (params) { case params_kyber768_round3: case params_kyber768_round3_test_mode: case params_ml_kem768: case params_ml_kem768_test_mode: case params_ml_kem1024: case params_ml_kem1024_test_mode: return secret && secret->len == KYBER_SHARED_SECRET_BYTES; default: returnfalse;
}
}
staticbool
valid_keypair_seed(KyberParams params, const SECItem *seed)
{ switch (params) { case params_kyber768_round3: case params_kyber768_round3_test_mode: case params_ml_kem768: case params_ml_kem768_test_mode: case params_ml_kem1024: case params_ml_kem1024_test_mode: return !seed || seed->len == KYBER_KEYPAIR_COIN_BYTES; default: returnfalse;
}
}
staticbool
valid_enc_seed(KyberParams params, const SECItem *seed)
{ switch (params) { case params_kyber768_round3: case params_ml_kem768: return !seed; case params_kyber768_round3_test_mode: case params_ml_kem768_test_mode: case params_ml_kem1024: case params_ml_kem1024_test_mode: return !seed || seed->len == KYBER_SHARED_SECRET_BYTES; default: returnfalse;
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.