Nikolay Sivov (@nsivov) commented about dlls/bcrypt/tests/bcrypt.c:
+ status = BCryptGenerateKeyPair(alg, &key, 0, 0); + ok(status == STATUS_SUCCESS, "got %#lx\n", status); + + status = BCryptFinalizeKeyPair(key, 0); + ok(status == STATUS_INVALID_PARAMETER, "got %#lx\n", status); + BCryptDestroyKey(key); + BCryptCloseAlgorithmProvider(alg, 0); + + status = BCryptOpenAlgorithmProvider(&alg, BCRYPT_ECDSA_ALGORITHM, NULL, 0); + ok(status == STATUS_SUCCESS, "got %#lx\n", status); + + status = BCryptSetProperty(alg, BCRYPT_ECC_CURVE_NAME, (UCHAR *)BCRYPT_ECC_CURVE_SECP256R1, sizeof(BCRYPT_ECC_CURVE_SECP256R1), 0); + ok(status == STATUS_SUCCESS, "got %#lx\n", status); + + status = BCryptGenerateKeyPair(alg, &key, 255, 0); + todo_wine ok(status == STATUS_INVALID_PARAMETER, "got %#lx\n", status); This size is what we should validate against curve_strength() in principle? I don't mean that we need that now, especially because the size is fixed for ECC case.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/8980#note_116049