Vladimir Kotal wrote:
> mark powers wrote:
>> kcf_callprov.c
>> --------------
>> mcp-0    line 119    I don't think the assert is that useful since
>>                     key != NULL is checked before the function is 
>> called.
>
> I added it just for the case of someone calling 
> kcf_check_prov_mech_keylen() in the future without checking the key 
> pointer first. It is just a safety belt. It's not necessary so I have 
> removed it.
>
>> mcp-0    lines 122-129    This code is duplicated three times in this
>>                          function. It could be moved to before the
>>                          actual check on line 180.
>
> Those instances are not the same. For CRYPTO_KEY_RAW key types it uses 
> key->ck_length, for CRYPTO_KEY_ATTR_LIST it has to get the attribute 
> length first. Also, CRYPTO_KEY_RAW key lengths are converted from bits 
> to bytes using the CRYPTO_BITS2BYTES macro. In fact, they are doing 
> different conversions - shifting versus multiplication. Lastly, moving 
> the whole block (assuming generic macro for both types) before the 
> switch statement would be suboptimal for CRYPTO_KEY_REFERENCE key type 
> and other types.
>
> I can make a macro just for the CRYPTO_KEY_ATTR_LIST key type 
> assignments where there is indeed a duplication - would this be okay ?

I think the macro would be overkill since it would only be used twice.
You're right that the code is more complex than I thought.
However, I think you could factor out

mech_info = &(KCF_TO_PROV_MECHINFO(provider, mech_type));

and move to just before the switch.


>
>> mcp-3    Related to Krishna's comment (KY-1), wouldn't it be better to
>>         always return CRYPTO_KEY_SIZE_RANGE instead of
>>         CRYPTO_MECH_NOT_SUPPORTED?
>
> This is easy to do for kcf_get_hardware_provider() in case the 
> provider is not logical provider. As for the other cases, I am not 
> sure - the key length check is now part of provider selection (it's 
> one of the criteria for selection) so from this perspective it should 
> fall under CRYPTO_MECH_NOT_SUPPORTED.

Seems to me that more descriptive error codes should trump generic ones, 
but perhaps that
is outside the scope of this bug fix.

>
> Incremental webrev (on top of already approved changes) is here:
>   http://cr.opensolaris.org/~vkotal/kcf-keylen_check-6786946.onnv.Mark/
>
>
> v.


Reply via email to