RFR: 8349890 : Option -Djava.security.debug=x509,ava breaks special chars [v3]

Sean Mullan mullan at openjdk.org
Fri Apr 4 14:08:57 UTC 2025


On Fri, 4 Apr 2025 03:18:31 GMT, Koushik Muthukrishnan Thirupattur <duke at openjdk.org> wrote:

>> **A DESCRIPTION OF THE PROBLEM :**
>> Enabling -Djava.security.debug=x509,ava affects how special characters in certificates are processed. The expected behavior is that debugging should not interfere with the normal encoding of certificate fields.
>> 
>> **Fix:**
>> The Debugging will no longer interfere with these fields, unless you call toString().
>
> Koushik Muthukrishnan Thirupattur has updated the pull request incrementally with one additional commit since the last revision:
> 
>   8349890:Option -Djava.security.debug=x509,ava breaks special chars

test/jdk/sun/security/x509/X500Name/PrintX500NameInDebugModeWithAvaOption.java line 39:

> 37:     public static void main(String[] args) throws Exception {
> 38: 
> 39:         X500Name name = new X500Name("cn=john doe + l=ca\\+lifornia + l =sf, O=Ñ");

Use `X500Principal` objects for testing instead of `X500Name`. `X500Principal` is a public/standard API, so it is better to ensure that the issue is fixed via standard APIs. Then you also don't need the `@modules` line.

Also change name of test to `PrintX500PrincipalInDebugModeWithAvaOption`.

test/jdk/sun/security/x509/X500Name/PrintX500NameInDebugModeWithAvaOption.java line 47:

> 45:         //Test the name in RFC2253 format. This should skip the hex conversion to return
> 46:         //"\u00d1" for special character "Ñ"
> 47:         Asserts.assertTrue(name.getRFC2253Name().contains("\u00d1"), "String does not contain expected value");

Here you can call `X500Principal.getName()` instead which emits an RFC 2253 name.

test/jdk/sun/security/x509/X500Name/PrintX500NameInDebugModeWithAvaOption.java line 51:

> 49:         //Test the name in canonical name in RFC2253 format. This should skip the hex conversion to return
> 50:         //"n\u0303" for special character "Ñ"
> 51:         Asserts.assertTrue(name.getRFC2253CanonicalName().contains("n\u0303"),"String does not contain expected value");

Here you can call `X500Principal.getName(X500Principal.CANONICAL)` instead which emits a canonical RFC 2253 name.

test/jdk/sun/security/x509/X500Name/PrintX500NameInDebugModeWithAvaOption.java line 51:

> 49:         //Test the name in canonical name in RFC2253 format. This should skip the hex conversion to return
> 50:         //"n\u0303" for special character "Ñ"
> 51:         Asserts.assertTrue(name.getRFC2253CanonicalName().contains("n\u0303"),"String does not contain expected value");

Nit, add space after the comma, same comment on line 43 and 56. Or break up into 2 lines as some of the lines are a bit long.

test/jdk/sun/security/x509/X500Name/PrintX500NameInDebugModeWithAvaOption.java line 56:

> 54:         //Test to print name in RFC1779 format. This should skip the hex conversion to print
> 55:         //"\u00d1" for special character "Ñ"
> 56:         Asserts.assertTrue(name.getRFC1779Name().contains("\u00d1"),"String does not contain expected value");

Here you can call `X500Principal.getName(X500Principal.RFC1779)` instead which emits a RFC 1779 name.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/24360#discussion_r2028855420
PR Review Comment: https://git.openjdk.org/jdk/pull/24360#discussion_r2028869879
PR Review Comment: https://git.openjdk.org/jdk/pull/24360#discussion_r2028872261
PR Review Comment: https://git.openjdk.org/jdk/pull/24360#discussion_r2028875687
PR Review Comment: https://git.openjdk.org/jdk/pull/24360#discussion_r2028874116


More information about the security-dev mailing list