* or key generation parameters for key types that support them (DSA, DH and EC).
*
* @remarks Supported key lengths:
- * - RSA: length >= 256bits
+ * - RSA: length >= 512bits
* - DSA: length >= 512bits, multiple of 64
* - DH: a value taken from #yaca_key_bit_length_dh_rfc_e or
* (YACA_KEY_LENGTH_DH_GENERATOR_* | prime_length_in_bits),
goto exit;
}
+ if ((key_type == YACA_KEY_TYPE_RSA_PRIV || key_type == YACA_KEY_TYPE_RSA_PUB) &&
+ (EVP_PKEY_size(pkey) < YACA_KEY_LENGTH_512BIT / 8)) {
+ ret = YACA_ERROR_INVALID_PARAMETER;
+ goto exit;
+ }
+
ret = yaca_zalloc(sizeof(struct yaca_key_evp_s), (void**)&nk);
if (ret != YACA_ERROR_NONE)
goto exit;
if (evp_id == EVP_PKEY_RSA) {
if ((key_bit_len & YACA_KEYLEN_COMPONENT_TYPE_MASK) != YACA_KEYLEN_COMPONENT_TYPE_BITS ||
- key_bit_len > INT_MAX || key_bit_len % 8 != 0) {
+ key_bit_len > INT_MAX || key_bit_len < 512 || key_bit_len % 8 != 0) {
ret = YACA_ERROR_INVALID_PARAMETER;
goto exit;
}