Skip to content

X500Name crash #2226

@lhuynh-cs

Description

@lhuynh-cs
import java.io.IOException;

import javax.security.auth.x500.X500Principal;

import org.bouncycastle.asn1.x500.X500Name;
import org.bouncycastle.asn1.x500.X500NameBuilder;
import org.bouncycastle.asn1.x500.style.BCStyle;

public class TestParseDN {
	public static void main(String[] arg) throws IOException {
		String cn = "=^_^=";
		String dn = "CN=" + cn;

		X500Principal principal = new X500Principal(dn);
		System.out.println("Using X500Principal: " + principal.getName());
		
		X500NameBuilder builder = new X500NameBuilder(BCStyle.INSTANCE);
		builder.addRDN(BCStyle.CN, cn);
		X500Name x500Name = builder.build();
		System.out.println("Using X500NameBuilder: " + x500Name.toString());
		
		X500Name x500 = new X500Name(dn);
		System.out.println("Using X500Name: " + x500.toString());
	}
}

The output is (BC 1.83):

Using X500Principal: CN=\=^_^\=
Using X500NameBuilder: CN=\=^_^\=
Exception in thread "main" java.lang.IllegalArgumentException: badly formatted directory string
	at org.bouncycastle.asn1.x500.style.IETFUtils.nextToken(IETFUtils.java:218)
	at org.bouncycastle.asn1.x500.style.IETFUtils.addRDN(IETFUtils.java:191)
	at org.bouncycastle.asn1.x500.style.IETFUtils.addRDNs(IETFUtils.java:154)
	at org.bouncycastle.asn1.x500.style.IETFUtils.rDNsFromString(IETFUtils.java:137)
	at org.bouncycastle.asn1.x500.style.BCStyle.fromString(BCStyle.java:349)
	at org.bouncycastle.asn1.x500.X500Name.<init>(X500Name.java:161)
	at org.bouncycastle.asn1.x500.X500Name.<init>(X500Name.java:154)
	at test.TestParseDN.main(TestParseDN.java:27)

With String cn = "\\=^_^\\="; X500NameBuilder parsing is incorrect:

Using X500Principal: CN=\=^_^\=
Using X500NameBuilder: CN=\=^_^\\\=
Using X500Name: CN=\=^_^\=

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions