Commit 5f0319c0 authored by Adam Langley's avatar Adam Langley

asn1: allow '*' in PrintableString.

Although technically incorrect, we want this in order to parse X.509
certificates where a wildcard hostname ("*.example.com") has been put
into a PrintableString.

Fixes #850.

R=rsc
CC=golang-dev
https://golang.org/cl/1615043
parent fb279e73
...@@ -324,7 +324,11 @@ func isPrintable(b byte) bool { ...@@ -324,7 +324,11 @@ func isPrintable(b byte) bool {
b == ' ' || b == ' ' ||
b == ':' || b == ':' ||
b == '=' || b == '=' ||
b == '?' b == '?' ||
// This is techincally not allowed in a PrintableString.
// However, x509 certificates with wildcard strings don't
// always use the correct string type so we permit it.
b == '*'
} }
// IA5String // IA5String
......
...@@ -75,6 +75,7 @@ var marshalTests = []marshalTest{ ...@@ -75,6 +75,7 @@ var marshalTests = []marshalTest{
marshalTest{"test", "130474657374"}, marshalTest{"test", "130474657374"},
marshalTest{ia5StringTest{"test"}, "3006160474657374"}, marshalTest{ia5StringTest{"test"}, "3006160474657374"},
marshalTest{printableStringTest{"test"}, "3006130474657374"}, marshalTest{printableStringTest{"test"}, "3006130474657374"},
marshalTest{printableStringTest{"test*"}, "30071305746573742a"},
marshalTest{rawContentsStruct{nil, 64}, "3003020140"}, marshalTest{rawContentsStruct{nil, 64}, "3003020140"},
marshalTest{rawContentsStruct{[]byte{0x30, 3, 1, 2, 3}, 64}, "3003010203"}, marshalTest{rawContentsStruct{[]byte{0x30, 3, 1, 2, 3}, 64}, "3003010203"},
marshalTest{RawValue{Tag: 1, Class: 2, IsCompound: false, Bytes: []byte{1, 2, 3}}, "8103010203"}, marshalTest{RawValue{Tag: 1, Class: 2, IsCompound: false, Bytes: []byte{1, 2, 3}}, "8103010203"},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment