RFR JDK-8179614: Test for jarsigner on verifying jars that are signed and timestamped by other JDK releases

Weijun Wang weijun.wang at oracle.com
Fri Jun 9 12:05:59 UTC 2017

The test can be more friendly with default values.

For example, in createCertificates(), you can generate certs that use 
default sigalg and keysize (i.e. without specifying -siglag and 
-keysize), and give them aliases with "default" or "null" inside.

And in jar signing when signing with one -sigalg you can also choose 
cert generated with different or default sigalgs.

BTW, I remember certain pairs of -keysize and -sigalg do not work 
together. For example, 1024 bit of DSA key cannot be used with 
SHA512withDSA signature algorithm. Have you noticed it?


On 06/09/2017 04:44 PM, sha.jiang at oracle.com wrote:
> Hi Sean and Max,
> Thanks for your comments.
> Please review the updated webrev: 
> http://cr.openjdk.java.net/~jjiang/8179614/webrev.01/
> The test has been modified significantly. The main points are:
> 1. Adds cases on EC. Now the test supports key algorithms RSA, DSA and EC.
> 2. Adds cases on SHA-512. Now the test supports digest algorithms SHA-1, 
> SHA-256 and SHA-512.
> 3. Adds cases on key size. Exactly, [384, 571] for EC, [1024, 2048] for 
> RSA and DSA.
> 4. Adds cases on default signature algorithm. Now the test report can 
> display the default algorithmat column [Signature Algorithm].
> 5. Adds property -Djava.security.egd=file:/dev/./urandom for keytool and 
> jarsigner commands.
> 6. Create a separated application, JdkUtils.java, to determine the JDK 
> build version (java.runtime.version) and check if a signature algorithm 
> is supported by a JDK.
> 7. Introduces a new property, named javaSecurityFile, for allowing users 
> to specify alternative java security properties file.
> 8. Renames report column [Cert Type] to [Certificate]. This column 
> displays the certificate identifiers, which is a combination of key 
> algorithm, digest algorithm, key size and expired mark (if any).
> 9. The test summary also be updated accordingly.
> Best regards,
> John Jiang
> On 07/06/2017 23:11, Sean Mullan wrote:
>> On 6/6/17 9:14 PM, sha.jiang at oracle.com wrote:
>>> Hi Sean,
>>> On 07/06/2017 04:27, Sean Mullan wrote:
>>>> Hi John,
>>>> This looks like a very useful test. I have not gone through all of 
>>>> the code, but here are a few comments for now until I have more time:
>>>> - add tests for EC keys
>>>> - add tests for SHA-512 variants of the signature algorithms
>>>> - add tests for larger key sizes (ex: 2048 for DSA/RSA)
>>>> - you can use the diamond operator <> in various places
>>>> - might be more compact if jdkList() used Files.lines() to parse the 
>>>> file into a stream then an array
>>> I did consider about the above two points. Because the test will be 
>>> backported to JDK 6, so I only used the features those supported by 
>>> JDK 6.
>>> I supposed that would make the backport easier. Does it make sense?
>> Yes, that makes sense.
>> --Sean
>>> Best regards,
>>> John Jiang
>>>> - did you consider using the jarsigner API (jdk.security.jarsigner) 
>>>> instead of the command-line? I think this would be better (if 
>>>> possible) and it would give us some more tests of that API.
>>>> --Sean
>>>> On 6/5/17 6:31 AM, sha.jiang at oracle.com wrote:
>>>>> Hi,
>>>>> Please review this manual test for checking if a jar, which is 
>>>>> signed and timestamped by a JDK build, could be verified by other 
>>>>> JDK builds.
>>>>> It also can be used to check if the default timestamp digest 
>>>>> algorithm on signing is SHA-256.
>>>>> For more details, please look through the test summary.
>>>>> Issue: https://bugs.openjdk.java.net/browse/JDK-8179614
>>>>> Webrev: http://cr.openjdk.java.net/~jjiang/8179614/webrev.00/
>>>>> Best regards,
>>>>> John Jiang

More information about the security-dev mailing list