* Permit incorrectly DER sorted SET for decoding X500 names.
* Add comment to explain.
while (x500NameSequenceReader.HasData)
{
- rdnReaders.Add(x500NameSequenceReader.ReadSetOf());
+ // To match Windows' behavior, permit multi-value RDN SETs to not
+ // be DER sorted.
+ rdnReaders.Add(x500NameSequenceReader.ReadSetOf(skipSortOrderValidation: true));
}
// We need to allocate a StringBuilder to hold the data as we're building it, and there's the usual
Assert.Equal("OID.1.1.1.2.2.3=123 654 7890, CN=Test", dn.Decode(X500DistinguishedNameFlags.None));
}
+ [Fact]
+ public static void OrganizationUnitMultiValueWithIncorrectlySortedDerSet()
+ {
+ X500DistinguishedName dn = new X500DistinguishedName(
+ "301C311A300B060355040B13047A7A7A7A300B060355040B130461616161".HexToByteArray());
+
+ Assert.Equal("OU=zzzz + OU=aaaa", dn.Decode(X500DistinguishedNameFlags.None));
+ }
+
public static readonly object[][] WhitespaceBeforeCases =
{
// Regular space.