Is it better to append the new lines to the 2nd paragraph?

Thanks
Max

> On Jul 18, 2018, at 9:46 AM, Valerie Peng <valerie.p...@oracle.com> wrote:
> 
> 
> Ok, let's use "must" then. I have also added the part about default 
> parameters.
> Hope that all is clear now.
> 
> Latest webrev: http://cr.openjdk.java.net/~valeriep/8206171/webrev.03/
> Latest CSR: https://bugs.openjdk.java.net/browse/JDK-8206864
> 
> Thanks,
> Valerie
> 
> On 7/17/2018 5:50 PM, Weijun Wang wrote:
>> 
>>> On Jul 18, 2018, at 8:23 AM, Valerie Peng <valerie.p...@oracle.com> wrote:
>>> 
>>> Hi Max,
>>> 
>>> Thanks for the suggestions. Please find comments inline.
>>> 
>>> On 7/16/2018 7:38 PM, Weijun Wang wrote:
>>>> CSR at https://bugs.openjdk.java.net/browse/JDK-8206864.
>>>> 
>>>> - At the end of the 1st paragraph, you have now
>>>> 
>>>>>   However, for signature algorithm such as "RSASSA-PSS", it requires 
>>>>> parameters and the one used for signing must be supplied for verification 
>>>>> to succeed. It may be better to return null instead of returning 
>>>>> provider-specific default parameters.
>>>> I suggest we don't talk about the reason (params must be the same for 
>>>> signing and verification), we can just say something like "If there is no 
>>>> provider-specific default parameters, this method should return null 
>>>> before user sets one".
>>> Alright, I initially didn't put down the reason. But since Brad asked about 
>>> it, I add it to the CSR in case Joe raise the same question. I will update 
>>> the CSR per your suggestion.
>>>> - null may be returned
>>>> 
>>>> How about "{@code null} must be returned"?
>>> How about "should"? Is there a guideline on when to use "may/should/must"? 
>>> Anyone knows?
>> Even if there were guidelines on this for Java, I think we should just stick 
>> to https://tools.ietf.org/html/rfc2119, except that the capitalization is 
>> not necessary.
>> 
>> "Must" is precise here.
>> 
>>> I thought must is mostly used in mandating input arguments must not be 
>>> null. But don't recall it being used much for return values.
>> "must return" appears 39 times in java/ and "should return" 19 (simple grep, 
>> no line break).
>> 
>> --Max
>> 
>>> Thanks,
>>> Valerie
>>> 
>>>> Everything else looks fine.
>>>> 
>>>> Thanks
>>>> Max
>>>> 
>>>>> On Jul 17, 2018, at 9:46 AM, Valerie Peng <valerie.p...@oracle.com> wrote:
>>>>> 
>>>>> Hi Max,
>>>>> 
>>>>> Good catch on the SignatureSpi class and SunMSCAPI provider, I will 
>>>>> include them.
>>>>> 
>>>>> As for the part about "randomly generated", I am leaning toward not 
>>>>> having it as I don't see  a value of specifying this.
>>>>> 
>>>>> Webrev and CSR has been updated.
>>>>> 
>>>>> New webrev: http://cr.openjdk.java.net/~valeriep/8206171/webrev.02/
>>>>> 
>>>>> Thanks,
>>>>> Valerie
>>>>> 
>>>>> On 7/16/2018 4:29 PM, Weijun Wang wrote:
>>>>>> Valerie
>>>>>> 
>>>>>> Would you like to retain the word "randomly generated" somewhere?
>>>>>> 
>>>>>> Also, the SignatureSpi class needs to be updated in the same way.
>>>>>> 
>>>>>> Can you also update the implementation in the MSCAPI Signature object?
>>>>>> 
>>>>>> Thanks
>>>>>> Max
>>>>>> 
>>>>>>> On Jul 17, 2018, at 6:16 AM, Valerie Peng <valerie.p...@oracle.com> 
>>>>>>> wrote:
>>>>>>> 
>>>>>>> 
>>>>>>> No issues found and it seems ok to return null if no parameters is set. 
>>>>>>> Thus, I have updated the webrev and CSR accordingly.
>>>>>>> 
>>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8206171
>>>>>>> Webrev: http://cr.openjdk.java.net/~valeriep/8206171/webrev.01/
>>>>>>> CSR: https://bugs.openjdk.java.net/browse/JDK-8206864
>>>>>>> 
>>>>>>> Thanks,
>>>>>>> Valerie
>>>>>>> 
>>>>>>> On 7/13/2018 11:05 AM, Valerie Peng wrote:
>>>>>>>> Hmm, I like the idea of expanding null to cover both cases.
>>>>>>>> I will explore it more and see.
>>>>>>>> Thanks for the feedback,
>>>>>>>> Valerie
>>>>>>>> 
>>>>>>>> On 7/13/2018 6:56 AM, Sean Mullan wrote:
>>>>>>>>> On 7/12/18 10:23 PM, Weijun Wang wrote:
>>>>>>>>>>> On Jul 13, 2018, at 10:01 AM, Valerie Peng 
>>>>>>>>>>> <valerie.p...@oracle.com> wrote:
>>>>>>>>>>> 
>>>>>>>>>>> Hi Max,
>>>>>>>>>>> 
>>>>>>>>>>> The javadoc is for Signature.getParameters(), so null can be 
>>>>>>>>>>> returned for signature algorithms which do not use parameters, e.g. 
>>>>>>>>>>> SHA256withDSA. As Signature class covers all signature algorithms, 
>>>>>>>>>>> I am not sure about mentioning specific algorithm names as it may 
>>>>>>>>>>> be lengthy and even misleading unless we list out all applicable 
>>>>>>>>>>> algorithms.
>>>>>>>>>> Sure.
>>>>>>>>>> 
>>>>>>>>>>> The part of "default and randomly generated" is inherited from 
>>>>>>>>>>> existing javadoc. I think "default" in the aforementioned sentence 
>>>>>>>>>>> means "hardcoded values". For example, something like salt length 
>>>>>>>>>>> will likely have a fixed default value. Since we have no control 
>>>>>>>>>>> over 3rd party providers, I think we may have to keep this for 
>>>>>>>>>>> backward compatibility reason. For RSASSA-PSS sig algorithm, it 
>>>>>>>>>>> errors out if the required parameter is not given. Thus, I added 
>>>>>>>>>>> the sentence "If there are no provider-specific default values, the 
>>>>>>>>>>> underlying signature implementation may also fail".
>>>>>>>>>> OK, now I understand "a combination of default and randomly 
>>>>>>>>>> generated" means some part of the parameter is hardcoded and some is 
>>>>>>>>>> random. Anyway, let's keep it unchanged.
>>>>>>>>>> 
>>>>>>>>>> Then, how about simply "If there are no provider-specific values" 
>>>>>>>>>> which covers both hardcoded and random values?
>>>>>>>>>> 
>>>>>>>>>> "the underlying signature implementation may also fail" is still not 
>>>>>>>>>> clear to me. If I had not read the CSR I would thought an exception 
>>>>>>>>>> will be thrown when update/sign is called.
>>>>>>>>>> 
>>>>>>>>>>> As for @throws, I debated about it. The main reason for not adding 
>>>>>>>>>>> one is consistency. Many (or should I say most) security classes do 
>>>>>>>>>>> not have @throws for ProviderException. If we were to add @throws 
>>>>>>>>>>> ProviderException here, we should do it across the board. Besides, 
>>>>>>>>>>> it is recommended to NOT document runtime exceptions which callers 
>>>>>>>>>>> are not prepared to handle.
>>>>>>>>>> I assume other getParameters() had not added it is because it 
>>>>>>>>>> happened they can return one.
>>>>>>>>>> 
>>>>>>>>>> While people does not catch runtime exceptions but my understanding 
>>>>>>>>>> is that if you mentioned "fail" in the spec maybe it's better to add 
>>>>>>>>>> a @throws for it.
>>>>>>>>>> 
>>>>>>>>>> For example, @throws SecurityException for File/Files operations.
>>>>>>>>> Thinking more about this, I would be more inclined to recommend that 
>>>>>>>>> you change the meaning of null as the return value to cover both 
>>>>>>>>> cases:
>>>>>>>>> 
>>>>>>>>> @return the parameters used with this signature, or null if this 
>>>>>>>>> signature does not use any parameters or does not support default or 
>>>>>>>>> randomly generated parameter values
>>>>>>>>> 
>>>>>>>>> I don't think it is critical to make a distinction between these 2 
>>>>>>>>> cases, because if the programmer doesn't initialize it with 
>>>>>>>>> parameters it will get a SignatureException anyway when it tries to 
>>>>>>>>> call sign or verify.
>>>>>>>>> 
>>>>>>>>> It's not perfect, but probably the best you can do working within the 
>>>>>>>>> constraints of that API and minimizing compatibility risk.
>>>>>>>>> 
>>>>>>>>> --Sean
>>>>>>>>> 
>>>>>>>>>> Thanks
>>>>>>>>>> Max
>>>>>>>>>> 
>>>>>>>>>>> Thanks,
>>>>>>>>>>> Valerie
>>>>>>>>>>> 
>>>>>>>>>>> On 7/10/2018 7:16 PM, Weijun Wang wrote:
>>>>>>>>>>>> Hi Valerie
>>>>>>>>>>>> 
>>>>>>>>>>>> About "it *may* return", do you mean it could also return null? My 
>>>>>>>>>>>> understanding is no.
>>>>>>>>>>>> 
>>>>>>>>>>>> Is it better to clarify when the implementation "may also fail"? 
>>>>>>>>>>>> From the CSR, it's this method. Can you add a @throws spec to this 
>>>>>>>>>>>> method then?
>>>>>>>>>>>> 
>>>>>>>>>>>> Also, I am a little confused by "default and randomly generated". 
>>>>>>>>>>>> Does this actually mean "default (might be randomly generated)"? 
>>>>>>>>>>>> The "it may" sentence mentions "default and randomly generated" 
>>>>>>>>>>>> but the "if there" only says "default", which sounds like the the 
>>>>>>>>>>>> "randomly generated" case could be different.
>>>>>>>>>>>> 
>>>>>>>>>>>> Thanks
>>>>>>>>>>>> Max
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>>> On Jul 11, 2018, at 5:12 AM, Valerie Peng 
>>>>>>>>>>>>> <valerie.p...@oracle.com> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Hi Brad,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Would you have time to review the fix for JDK-8206171: 
>>>>>>>>>>>>> Signature#getParameters for RSASSA-PSS throws ProviderException 
>>>>>>>>>>>>> when not initialized?
>>>>>>>>>>>>> No source code changes, but just updating javadoc to mention the 
>>>>>>>>>>>>> possible failure case.
>>>>>>>>>>>>> Otherwise, JCK team expects a parameter object or null being 
>>>>>>>>>>>>> returned.
>>>>>>>>>>>>> I filed a CSR to track the javadoc clarification.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8206171
>>>>>>>>>>>>> Webrev: http://cr.openjdk.java.net/~valeriep/8206171/webrev.00/
>>>>>>>>>>>>> CSR: https://bugs.openjdk.java.net/browse/JDK-8206864
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>> Valerie
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
> 

Reply via email to