On Wed, 6 Apr 2022 19:41:28 GMT, Xue-Lei Andrew Fan <xue...@openjdk.org> wrote:

>> Can you be more specific like which block of code that you are referring to 
>> as the filtering and modification?
>> I'd expect the intention is to use the parameter specified. Otherwise an 
>> exception should be thrown if the specified parameter is invalid. Only when 
>> no parameter is specified, the provider would try to generate the parameters 
>> using whatever values it has or got.
>
> I read the following methods in com.sun.crypto.provider.CipherCore:
> 
>     void init(int opmode, Key key, AlgorithmParameterSpec params,
>             SecureRandom random)
> 
> where the 'params' are converted to IV byte array for further processing. 
> 
> 
>     void init(int opmode, Key key, AlgorithmParameters params,
>               SecureRandom random)
> 
> where the spec is retrieved from the 'params', and then pass the call to the 
> init() method above.
> 
> 
>     AlgorithmParameters getParameters(String algName) {
> 
> where the returned parameters are re-constructed.
> 
> It may be fine to use a strict spec, but there is a chance to have 
> compatibility impact unless we check the implementation carefully.  It may 
> not worthy the risks as a behavioral update may be not necessary for 
> developers.

How about this then?

     * <p>The returned parameters may be the same that were used to initialize
     * this cipher, or may contain additional default and random parameter
     * values used by the underlying cipher implementation if this
     * cipher can successfully generate the required parameter values when
     * not supplied. Otherwise, {@code null} is returned.

-------------

PR: https://git.openjdk.java.net/jdk/pull/8117

Reply via email to