v2 / vlib / crypto / pem / pem_test.v
711 lines · 674 sloc · 31.07 KB · 008aaad99981918c51194d7aaaaaccb4c258f244
Raw
1module pem
2
3// example PEM structures from the RFC
4fn test_decode_rfc1421() {
5 for i in 0 .. test_data_rfc1421.len {
6 decoded, rest := decode(test_data_rfc1421[i]) or { Block{}, '' }
7 assert decoded == expected_results_rfc1421[i]
8 assert decoded == decode_only(test_data_rfc1421[i]) or { Block{} }
9 assert rest == ''
10 }
11}
12
13fn test_decode() {
14 for i in 0 .. test_data.len {
15 decoded, rest := decode(test_data[i]) or { Block{}, '' }
16 assert decoded == expected_results[i]
17 assert decoded == decode_only(test_data[i]) or { Block{} }
18 assert rest == expected_rest[i]
19 }
20}
21
22fn test_encode_rfc1421() {
23 for i in 0 .. test_data_rfc1421.len {
24 encoded := expected_results_rfc1421[i].encode() or { '' }
25 decoded, rest := decode(encoded) or { Block{}, '' }
26 assert rest == ''
27 assert decoded == expected_results_rfc1421[i]
28 assert decoded == decode_only(encoded) or { Block{} }
29 }
30}
31
32fn test_encode() {
33 for i in 0 .. test_data.len {
34 encoded := expected_results[i].encode() or { '' }
35 decoded, rest := decode(encoded) or { Block{}, '' }
36 assert rest == ''
37 assert decoded == expected_results[i]
38 assert decoded == decode_only(encoded) or { Block{} }
39 }
40}
41
42fn test_encode_config() {
43 for i in 0 .. test_data.len {
44 encoded := expected_results[i].encode(EncodeConfig{31, '\r\n'}) or { '' }
45 decoded, rest := decode(encoded) or { Block{}, '' }
46 assert rest == ''
47 assert decoded == expected_results[i]
48 assert decoded == decode_only(encoded) or { Block{} }
49 }
50}
51
52fn test_decode_no_pem() {
53 for test in test_data_no_pem {
54 if _, _ := decode(test) {
55 assert false, 'decode should return `none` on input without PEM data'
56 }
57 if _ := decode_only(test) {
58 assert false, 'decode_only should return `none` on input without PEM data'
59 }
60 }
61}
62
63const test_data_no_pem = [
64 '',
65 '-----BEGIN',
66 '-----BEGIN -----',
67 '-----END',
68]
69
70// https://datatracker.ietf.org/doc/html/rfc7468#section-4
71const test_data_rfc1421 = [
72 '-----BEGIN PRIVACY-ENHANCED MESSAGE-----
73Proc-Type: 4,MIC-ONLY
74Content-Domain: RFC822
75Originator-Certificate:
76MIIBlTCCAScCAWUwDQYJKoZIhvcNAQECBQAwUTELMAkGA1UEBhMCVVMxIDAeBgNV
77BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDzAN
78BgNVBAsTBk5PVEFSWTAeFw05MTA5MDQxODM4MTdaFw05MzA5MDMxODM4MTZaMEUx
79CzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEU
80MBIGA1UEAxMLVGVzdCBVc2VyIDEwWTAKBgRVCAEBAgICAANLADBIAkEAwHZHl7i+
81yJcqDtjJCowzTdBJrdAiLAnSC+CnnjOJELyuQiBgkGrgIh3j8/x0fM+YrsyF1u3F
82LZPVtzlndhYFJQIDAQABMA0GCSqGSIb3DQEBAgUAA1kACKr0PqphJYw1j+YPtcIq
83iWlFPuN5jJ79Khfg7ASFxskYkEMjRNZV/HZDZQEhtVaU7Jxfzs2wfX5byMp2X3U/
845XUXGx7qusDgHQGs7Jk9W8CW1fuSWUgN4w==
85Issuer-Certificate:
86MIIB3DCCAUgCAQowDQYJKoZIhvcNAQECBQAwTzELMAkGA1UEBhMCVVMxIDAeBgNV
87BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDTAL
88BgNVBAsTBFRMQ0EwHhcNOTEwOTAxMDgwMDAwWhcNOTIwOTAxMDc1OTU5WjBRMQsw
89CQYDVQQGEwJVUzEgMB4GA1UEChMXUlNBIERhdGEgU2VjdXJpdHksIEluYy4xDzAN
90BgNVBAsTBkJldGEgMTEPMA0GA1UECxMGTk9UQVJZMHAwCgYEVQgBAQICArwDYgAw
91XwJYCsnp6lQCxYykNlODwutF/jMJ3kL+3PjYyHOwk+/9rLg6X65B/LD4bJHtO5XW
92cqAz/7R7XhjYCm0PcqbdzoACZtIlETrKrcJiDYoP+DkZ8k1gCk7hQHpbIwIDAQAB
93MA0GCSqGSIb3DQEBAgUAA38AAICPv4f9Gx/tY4+p+4DB7MV+tKZnvBoy8zgoMGOx
94dD2jMZ/3HsyWKWgSF0eH/AJB3qr9zosG47pyMnTf3aSy2nBO7CMxpUWRBcXUpE+x
95EREZd9++32ofGBIXaialnOgVUn0OzSYgugiQ077nJLDUj0hQehCizEs5wUJ35a5h
96MIC-Info: RSA-MD5,RSA,
97jV2OfH+nnXHU8bnL8kPAad/mSQlTDZlbVuxvZAOVRZ5q5+Ejl5bQvqNeqOUNQjr6
98EtE7K2QDeVMCyXsdJlA8fA==
99
100LSBBIG1lc3NhZ2UgZm9yIHVzZSBpbiB0ZXN0aW5nLg0KLSBGb2xsb3dpbmcgaXMg
101YSBibGFuayBsaW5lOg0KDQpUaGlzIGlzIHRoZSBlbmQuDQo=
102-----END PRIVACY-ENHANCED MESSAGE-----',
103 '-----BEGIN PRIVACY-ENHANCED MESSAGE-----
104Proc-Type: 4,ENCRYPTED
105Content-Domain: RFC822
106DEK-Info: DES-CBC,BFF968AA74691AC1
107Originator-Certificate:
108MIIBlTCCAScCAWUwDQYJKoZIhvcNAQECBQAwUTELMAkGA1UEBhMCVVMxIDAeBgNV
109BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDzAN
110BgNVBAsTBk5PVEFSWTAeFw05MTA5MDQxODM4MTdaFw05MzA5MDMxODM4MTZaMEUx
111CzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEU
112MBIGA1UEAxMLVGVzdCBVc2VyIDEwWTAKBgRVCAEBAgICAANLADBIAkEAwHZHl7i+
113yJcqDtjJCowzTdBJrdAiLAnSC+CnnjOJELyuQiBgkGrgIh3j8/x0fM+YrsyF1u3F
114LZPVtzlndhYFJQIDAQABMA0GCSqGSIb3DQEBAgUAA1kACKr0PqphJYw1j+YPtcIq
115iWlFPuN5jJ79Khfg7ASFxskYkEMjRNZV/HZDZQEhtVaU7Jxfzs2wfX5byMp2X3U/
1165XUXGx7qusDgHQGs7Jk9W8CW1fuSWUgN4w==
117Key-Info: RSA,
118I3rRIGXUGWAF8js5wCzRTkdhO34PTHdRZY9Tuvm03M+NM7fx6qc5udixps2Lng0+
119wGrtiUm/ovtKdinz6ZQ/aQ==
120Issuer-Certificate:
121MIIB3DCCAUgCAQowDQYJKoZIhvcNAQECBQAwTzELMAkGA1UEBhMCVVMxIDAeBgNV
122BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDTAL
123BgNVBAsTBFRMQ0EwHhcNOTEwOTAxMDgwMDAwWhcNOTIwOTAxMDc1OTU5WjBRMQsw
124CQYDVQQGEwJVUzEgMB4GA1UEChMXUlNBIERhdGEgU2VjdXJpdHksIEluYy4xDzAN
125BgNVBAsTBkJldGEgMTEPMA0GA1UECxMGTk9UQVJZMHAwCgYEVQgBAQICArwDYgAw
126XwJYCsnp6lQCxYykNlODwutF/jMJ3kL+3PjYyHOwk+/9rLg6X65B/LD4bJHtO5XW
127cqAz/7R7XhjYCm0PcqbdzoACZtIlETrKrcJiDYoP+DkZ8k1gCk7hQHpbIwIDAQAB
128MA0GCSqGSIb3DQEBAgUAA38AAICPv4f9Gx/tY4+p+4DB7MV+tKZnvBoy8zgoMGOx
129dD2jMZ/3HsyWKWgSF0eH/AJB3qr9zosG47pyMnTf3aSy2nBO7CMxpUWRBcXUpE+x
130EREZd9++32ofGBIXaialnOgVUn0OzSYgugiQ077nJLDUj0hQehCizEs5wUJ35a5h
131MIC-Info: RSA-MD5,RSA,
132UdFJR8u/TIGhfH65ieewe2lOW4tooa3vZCvVNGBZirf/7nrgzWDABz8w9NsXSexv
133AjRFbHoNPzBuxwmOAFeA0HJszL4yBvhG
134Recipient-ID-Asymmetric:
135MFExCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5j
136LjEPMA0GA1UECxMGQmV0YSAxMQ8wDQYDVQQLEwZOT1RBUlk=,
13766
138Key-Info: RSA,
139O6BS1ww9CTyHPtS3bMLD+L0hejdvX6Qv1HK2ds2sQPEaXhX8EhvVphHYTjwekdWv
1407x0Z3Jx2vTAhOYHMcqqCjA==
141
142qeWlj/YJ2Uf5ng9yznPbtD0mYloSwIuV9FRYx+gzY+8iXd/NQrXHfi6/MhPfPF3d
143jIqCJAxvld2xgqQimUzoS1a4r7kQQ5c/Iua4LqKeq3ciFzEv/MbZhA==
144-----END PRIVACY-ENHANCED MESSAGE-----',
145 '-----BEGIN PRIVACY-ENHANCED MESSAGE-----
146Proc-Type: 4,ENCRYPTED
147Content-Domain: RFC822
148DEK-Info: DES-CBC,F8143EDE5960C597
149Originator-ID-Symmetric: [email protected],,
150Recipient-ID-Symmetric: [email protected],ptf-kmc,3
151Key-Info: DES-ECB,RSA-MD2,9FD3AAD2F2691B9A,
152 B70665BB9BF7CBCDA60195DB94F727D3
153Recipient-ID-Symmetric: [email protected],ptf-kmc,4
154Key-Info: DES-ECB,RSA-MD2,161A3F75DC82EF26,
155 E2EF532C65CBCFF79F83A2658132DB47
156
157LLrHB0eJzyhP+/fSStdW8okeEnv47jxe7SJ/iN72ohNcUk2jHEUSoH1nvNSIWL9M
1588tEjmF/zxB+bATMtPjCUWbz8Lr9wloXIkjHUlBLpvXR0UrUzYbkNpk0agV2IzUpk
159J6UiRRGcDSvzrsoK+oNvqu6z7Xs5Xfz5rDqUcMlK1Z6720dcBWGGsDLpTpSCnpot
160dXd/H5LMDWnonNvPCwQUHt==
161-----END PRIVACY-ENHANCED MESSAGE-----',
162]
163
164const expected_results_rfc1421 = [
165 Block{
166 block_type: 'PRIVACY-ENHANCED MESSAGE'
167 headers: {
168 'Proc-Type': ['4,MIC-ONLY']
169 'Content-Domain': ['RFC822']
170 'Originator-Certificate': [
171 'MIIBlTCCAScCAWUwDQYJKoZIhvcNAQECBQAwUTELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDzANBgNVBAsTBk5PVEFSWTAeFw05MTA5MDQxODM4MTdaFw05MzA5MDMxODM4MTZaMEUxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEUMBIGA1UEAxMLVGVzdCBVc2VyIDEwWTAKBgRVCAEBAgICAANLADBIAkEAwHZHl7i+yJcqDtjJCowzTdBJrdAiLAnSC+CnnjOJELyuQiBgkGrgIh3j8/x0fM+YrsyF1u3FLZPVtzlndhYFJQIDAQABMA0GCSqGSIb3DQEBAgUAA1kACKr0PqphJYw1j+YPtcIqiWlFPuN5jJ79Khfg7ASFxskYkEMjRNZV/HZDZQEhtVaU7Jxfzs2wfX5byMp2X3U/5XUXGx7qusDgHQGs7Jk9W8CW1fuSWUgN4w==',
172 ]
173 'Issuer-Certificate': [
174 'MIIB3DCCAUgCAQowDQYJKoZIhvcNAQECBQAwTzELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDTALBgNVBAsTBFRMQ0EwHhcNOTEwOTAxMDgwMDAwWhcNOTIwOTAxMDc1OTU5WjBRMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXUlNBIERhdGEgU2VjdXJpdHksIEluYy4xDzANBgNVBAsTBkJldGEgMTEPMA0GA1UECxMGTk9UQVJZMHAwCgYEVQgBAQICArwDYgAwXwJYCsnp6lQCxYykNlODwutF/jMJ3kL+3PjYyHOwk+/9rLg6X65B/LD4bJHtO5XWcqAz/7R7XhjYCm0PcqbdzoACZtIlETrKrcJiDYoP+DkZ8k1gCk7hQHpbIwIDAQABMA0GCSqGSIb3DQEBAgUAA38AAICPv4f9Gx/tY4+p+4DB7MV+tKZnvBoy8zgoMGOxdD2jMZ/3HsyWKWgSF0eH/AJB3qr9zosG47pyMnTf3aSy2nBO7CMxpUWRBcXUpE+xEREZd9++32ofGBIXaialnOgVUn0OzSYgugiQ077nJLDUj0hQehCizEs5wUJ35a5h',
175 ]
176 'MIC-Info': [
177 'RSA-MD5,RSA,jV2OfH+nnXHU8bnL8kPAad/mSQlTDZlbVuxvZAOVRZ5q5+Ejl5bQvqNeqOUNQjr6EtE7K2QDeVMCyXsdJlA8fA==',
178 ]
179 }
180 // vfmt off
181 data: [
182 u8(0x2d), 0x20, 0x41, 0x20, 0x6d, 0x65, 0x73, 0x73,
183 0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20,
184 0x75, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x74,
185 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x0d,
186 0x0a, 0x2d, 0x20, 0x46, 0x6f, 0x6c, 0x6c, 0x6f,
187 0x77, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x73, 0x20,
188 0x61, 0x20, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x20,
189 0x6c, 0x69, 0x6e, 0x65, 0x3a, 0x0d, 0x0a, 0x0d,
190 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73,
191 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x64,
192 0x2e, 0x0d, 0x0a,
193 ]
194 // vfmt on
195 },
196 Block{
197 block_type: 'PRIVACY-ENHANCED MESSAGE'
198 headers: {
199 'Proc-Type': [
200 '4,ENCRYPTED',
201 ]
202 'Content-Domain': [
203 'RFC822',
204 ]
205 'DEK-Info': [
206 'DES-CBC,BFF968AA74691AC1',
207 ]
208 'Originator-Certificate': [
209 'MIIBlTCCAScCAWUwDQYJKoZIhvcNAQECBQAwUTELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDzANBgNVBAsTBk5PVEFSWTAeFw05MTA5MDQxODM4MTdaFw05MzA5MDMxODM4MTZaMEUxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEUMBIGA1UEAxMLVGVzdCBVc2VyIDEwWTAKBgRVCAEBAgICAANLADBIAkEAwHZHl7i+yJcqDtjJCowzTdBJrdAiLAnSC+CnnjOJELyuQiBgkGrgIh3j8/x0fM+YrsyF1u3FLZPVtzlndhYFJQIDAQABMA0GCSqGSIb3DQEBAgUAA1kACKr0PqphJYw1j+YPtcIqiWlFPuN5jJ79Khfg7ASFxskYkEMjRNZV/HZDZQEhtVaU7Jxfzs2wfX5byMp2X3U/5XUXGx7qusDgHQGs7Jk9W8CW1fuSWUgN4w==',
210 ]
211 'Key-Info': [
212 'RSA,I3rRIGXUGWAF8js5wCzRTkdhO34PTHdRZY9Tuvm03M+NM7fx6qc5udixps2Lng0+wGrtiUm/ovtKdinz6ZQ/aQ==',
213 'RSA,O6BS1ww9CTyHPtS3bMLD+L0hejdvX6Qv1HK2ds2sQPEaXhX8EhvVphHYTjwekdWv7x0Z3Jx2vTAhOYHMcqqCjA==',
214 ]
215 'Issuer-Certificate': [
216 'MIIB3DCCAUgCAQowDQYJKoZIhvcNAQECBQAwTzELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDTALBgNVBAsTBFRMQ0EwHhcNOTEwOTAxMDgwMDAwWhcNOTIwOTAxMDc1OTU5WjBRMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXUlNBIERhdGEgU2VjdXJpdHksIEluYy4xDzANBgNVBAsTBkJldGEgMTEPMA0GA1UECxMGTk9UQVJZMHAwCgYEVQgBAQICArwDYgAwXwJYCsnp6lQCxYykNlODwutF/jMJ3kL+3PjYyHOwk+/9rLg6X65B/LD4bJHtO5XWcqAz/7R7XhjYCm0PcqbdzoACZtIlETrKrcJiDYoP+DkZ8k1gCk7hQHpbIwIDAQABMA0GCSqGSIb3DQEBAgUAA38AAICPv4f9Gx/tY4+p+4DB7MV+tKZnvBoy8zgoMGOxdD2jMZ/3HsyWKWgSF0eH/AJB3qr9zosG47pyMnTf3aSy2nBO7CMxpUWRBcXUpE+xEREZd9++32ofGBIXaialnOgVUn0OzSYgugiQ077nJLDUj0hQehCizEs5wUJ35a5h',
217 ]
218 'MIC-Info': [
219 'RSA-MD5,RSA,UdFJR8u/TIGhfH65ieewe2lOW4tooa3vZCvVNGBZirf/7nrgzWDABz8w9NsXSexvAjRFbHoNPzBuxwmOAFeA0HJszL4yBvhG',
220 ]
221 'Recipient-ID-Asymmetric': [
222 'MFExCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEPMA0GA1UECxMGQmV0YSAxMQ8wDQYDVQQLEwZOT1RBUlk=,66',
223 ]
224 }
225 // vfmt off
226 data: [
227 u8(0xa9), 0xe5, 0xa5, 0x8f, 0xf6, 0x09, 0xd9, 0x47,
228 0xf9, 0x9e, 0x0f, 0x72, 0xce, 0x73, 0xdb, 0xb4,
229 0x3d, 0x26, 0x62, 0x5a, 0x12, 0xc0, 0x8b, 0x95,
230 0xf4, 0x54, 0x58, 0xc7, 0xe8, 0x33, 0x63, 0xef,
231 0x22, 0x5d, 0xdf, 0xcd, 0x42, 0xb5, 0xc7, 0x7e,
232 0x2e, 0xbf, 0x32, 0x13, 0xdf, 0x3c, 0x5d, 0xdd,
233 0x8c, 0x8a, 0x82, 0x24, 0x0c, 0x6f, 0x95, 0xdd,
234 0xb1, 0x82, 0xa4, 0x22, 0x99, 0x4c, 0xe8, 0x4b,
235 0x56, 0xb8, 0xaf, 0xb9, 0x10, 0x43, 0x97, 0x3f,
236 0x22, 0xe6, 0xb8, 0x2e, 0xa2, 0x9e, 0xab, 0x77,
237 0x22, 0x17, 0x31, 0x2f, 0xfc, 0xc6, 0xd9, 0x84,
238 ]
239 // vfmt on
240 },
241 Block{
242 block_type: 'PRIVACY-ENHANCED MESSAGE'
243 headers: {
244 'Proc-Type': [
245 '4,ENCRYPTED',
246 ]
247 'Content-Domain': [
248 'RFC822',
249 ]
250 'DEK-Info': [
251 'DES-CBC,F8143EDE5960C597',
252 ]
253 'Originator-ID-Symmetric': [
254 '[email protected],,',
255 ]
256 'Recipient-ID-Symmetric': [
257 '[email protected],ptf-kmc,3',
258 '[email protected],ptf-kmc,4',
259 ]
260 'Key-Info': [
261 'DES-ECB,RSA-MD2,9FD3AAD2F2691B9A,B70665BB9BF7CBCDA60195DB94F727D3',
262 'DES-ECB,RSA-MD2,161A3F75DC82EF26,E2EF532C65CBCFF79F83A2658132DB47',
263 ]
264 }
265 // vfmt off
266 data: [
267 u8(0x2c), 0xba, 0xc7, 0x07, 0x47, 0x89, 0xcf, 0x28,
268 0x4f, 0xfb, 0xf7, 0xd2, 0x4a, 0xd7, 0x56, 0xf2,
269 0x89, 0x1e, 0x12, 0x7b, 0xf8, 0xee, 0x3c, 0x5e,
270 0xed, 0x22, 0x7f, 0x88, 0xde, 0xf6, 0xa2, 0x13,
271 0x5c, 0x52, 0x4d, 0xa3, 0x1c, 0x45, 0x12, 0xa0,
272 0x7d, 0x67, 0xbc, 0xd4, 0x88, 0x58, 0xbf, 0x4c,
273 0xf2, 0xd1, 0x23, 0x98, 0x5f, 0xf3, 0xc4, 0x1f,
274 0x9b, 0x01, 0x33, 0x2d, 0x3e, 0x30, 0x94, 0x59,
275 0xbc, 0xfc, 0x2e, 0xbf, 0x70, 0x96, 0x85, 0xc8,
276 0x92, 0x31, 0xd4, 0x94, 0x12, 0xe9, 0xbd, 0x74,
277 0x74, 0x52, 0xb5, 0x33, 0x61, 0xb9, 0x0d, 0xa6,
278 0x4d, 0x1a, 0x81, 0x5d, 0x88, 0xcd, 0x4a, 0x64,
279 0x27, 0xa5, 0x22, 0x45, 0x11, 0x9c, 0x0d, 0x2b,
280 0xf3, 0xae, 0xca, 0x0a, 0xfa, 0x83, 0x6f, 0xaa,
281 0xee, 0xb3, 0xed, 0x7b, 0x39, 0x5d, 0xfc, 0xf9,
282 0xac, 0x3a, 0x94, 0x70, 0xc9, 0x4a, 0xd5, 0x9e,
283 0xbb, 0xdb, 0x47, 0x5c, 0x05, 0x61, 0x86, 0xb0,
284 0x32, 0xe9, 0x4e, 0x94, 0x82, 0x9e, 0x9a, 0x2d,
285 0x75, 0x77, 0x7f, 0x1f, 0x92, 0xcc, 0x0d, 0x69,
286 0xe8, 0x9c, 0xdb, 0xcf, 0x0b, 0x04, 0x14, 0x1e,
287 ]
288 // vfmt on
289 },
290]
291
292const test_data = [
293 // https://qsupport.quantum.com/kb/flare/Content/stornext/SN5_DocSite/Guide_Users/Topics/Example_of_a_server_pem_.htm
294 "--BEG
295An RSA PRIVATE KEY is on it's way!!
296----BEGIN
297I only want to parse the certificate below
298-----BEGIN RSA PRIVATE KEY-----
299izfrNTmQLnfsLzi2Wb9xPz2Qj9fQYGgeug3N2MkDuVHwpPcgkhHkJgCQuuvT+qZI
300MbS2U6wTS24SZk5RunJIUkitRKeWWMS28SLGfkDs1bBYlSPa5smAd3/q1OePi4ae
301dU6YgWuDxzBAKEKVSUu6pA2HOdyQ9N4F1dI+F8w9J990zE93EgyNqZFBBa2L70h4
302M7DrB0gJBWMdUMoxGnun5glLiCMo2JrHZ9RkMiallS1sHMhELx2UAlP8I1+0Mav8
303iMlHGyUW8EJy0paVf09MPpceEcVwDBeX0+G4UQlO551GTFtOSRjcD8U+GkCzka9W
304/SFQrSGe3Gh3SDaOw/4JEMAjWPDLiCglwh0rLIO4VwU6AxzTCuCw3d1ZxQsU6VFQ
305PqHA8haOUATZIrp3886PBThVqALBk9p1Nqn51bXLh13Zy9DZIVx4Z5Ioz/EGuzgR
306d68VW5wybLjYE2r6Q9nHpitSZ4ZderwjIZRes67HdxYFw8unm4Wo6kuGnb5jSSag
307vwBxKzAf3Omn+J6IthTJKuDd13rKZGMcRpQQ6VstwihYt1TahQ/qfJUWPjPcU5ML
3089LkgVwA8Ndi1wp1/sEPe+UlL16L6vO9jUHcueWN7+zSUOE/cDSJyMd9x/ZL8QASA
309ETd5dujVIqlINL2vJKr1o4T+i0RsnpfFiqFmBKlFqww/SKzJeChdyEtpa/dJMrt2
3108S86b6zEmkser+SDYgGketS2DZ4hB+vh2ujSXmS8Gkwrn+BfHMzkbtio8lWbGw0l
311eM1tfdFZ6wMTLkxRhBkBK4JiMiUMvpERyPib6a2L6iXTfH+3RUDS6A==
312-----END RSA PRIVATE KEY-----Extra stuff
313This should be sent back in the second variable
314I will now continue to spam my keyboard to add junk
315lfajsdkfsndckasdjflkasdjclsdfjljjasldfj
316alsdfsdkfasdfasfsdafasdcjaosdicnsad
317
318
319fas90dfsdsdj
320----------------------------------
321-----
322asddfadsfasjfsadf
323-----BEGIN lkfajsdklfjasldkfjalsdjf;kasdflkjsaf
324flajsdfkjasdfajskfjslkdfjaskdjf
325FJASKDJjklfjasdfklsdjf
326BEGIN BEGIN BEGIN
327----BEGIN
328-----END RSA PRIVATE KEY
329: fkalsdjflkasdjf
330private key: fsaddf",
331 'Mollitia magnam ullam ipsam voluptas ipsa
332rerum debitis. Vel nulla ipsum enim perspiciatis adipisci quam. Nihil incidunt ipsum
333--- --BEGIN
334
335
336-- BEGIN ------
337---
338--BEGIN ------
339amet rem rerum explicabo. Cum distinctio ipsum dolorum quae. Suscipit asperiores et aut eos numquam.
340-----BEGIN CERTIFICATE-----
341MIICMzCCAZygAwIBAgIJALiPnVsvq8dsMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNV
342BAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNVBAcTA2ZvbzEMMAoGA1UEChMDZm9v
343MQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2ZvbzAeFw0xMzAzMTkxNTQwMTlaFw0x
344ODAzMTgxNTQwMTlaMFMxCzAJBgNVBAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNV
345BAcTA2ZvbzEMMAoGA1UEChMDZm9vMQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2Zv
346bzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzdGfxi9CNbMf1UUcvDQh7MYB
347OveIHyc0E0KIbhjK5FkCBU4CiZrbfHagaW7ZEcN0tt3EvpbOMxxc/ZQU2WN/s/wP
348xph0pSfsfFsTKM4RhTWD2v4fgk+xZiKd1p0+L4hTtpwnEw0uXRVd0ki6muwV5y/P
349+5FHUeldq+pgTcgzuK8CAwEAAaMPMA0wCwYDVR0PBAQDAgLkMA0GCSqGSIb3DQEB
350BQUAA4GBAJiDAAtY0mQQeuxWdzLRzXmjvdSuL9GoyT3BF/jSnpxz5/58dba8pWen
351v3pj4P3w5DoOso0rzkZy2jEsEitlVM2mLSbQpMM+MUVQCQoiG6W9xuCFuxSrwPIS
352pAqEAuV4DNoxQKKWmhVv+J0ptMWD25Pnpxeq5sXzghfJnslJlQND
353-----END CERTIFICATE-----
354fdsjaf888888888888
355-----
356
357-----END
358-----BEGIN',
359 'Lorem ipsum dolor sit amet
360, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore
361et dolore magna aliqua. Massa id neque aliquam vestibulum
362morbi blandit cursus risus. Elit at imperdiet dui accumsan sit amet nulla. Pulvinar pellentesque habitant
363
364
365morbi tristique senectus. Vulputate
366dignissim suspendisse in est ante in. Egestas dui id ornare arcu. Ultrices mi tempus imperdiet
367nulla malesuada. Elementum nisi quis eleifend quam adipiscing.
368Mi in nulla posuere sollicitudin aliquam ultrices. Elit at imperdiet dui accumsan sit amet nulla facilisi. In hac
369habitasse platea dictumst quisque sagittis. Vestibulum
370lectus mauris ultrices eros in cursus. Blandit volutpat maecenas volutpat blandit. Sed nisi
371lacus sed viverra tellus in hac habitasse platea.
372Nulla facilisi etiam dignissim diam. Donec et odio pellentesque diam volutpat
373commodo sed egestas. Eleifend quam adipiscing
374vitae proin sagittis nisl.
375
376Pharetra et ultrices neque ornare aenean euismod elementum nisi. Sit amet consectetur sed id semper risus in.
377Eget nullam non nisi est. A diam maecenas sed enim. Enim nec dui nunc mattis. Lectus quam id leo in vitae turpis massa sed
378. In eu mi bibendum neque egestas congue. Dui faucibus in ornare quam viverra orci j
379sagittis. Lectus sit amet est placerat in egestas erat imperdiet.
380
381Suspendisse potenti nullam ac tortor. Iaculis nunc sed augue lacus viverra vitae congue eu consequat.
382Lacus vestibulum sed arcu
383non odio euismod. Massa sed elementum tempus egestas sed. Nulla facilisi etiam dignissim diam quis enim
384. Ac ut consequat semper viverra. Eleifend quam adipiscing vitae proin sagittis nisl rhoncus mattis rhoncus. Nunc consequat interdum varius sit amet mattis vulputate enim.
385Orci nulla pellentesque dignissim enim sit amet. Sed vulputate mi sit amet.
386Sagittis vitae et leo duis ut diam. Orci a scelerisque purus semper eget duis
387at tellus at. In hac habitasse platea dictumst vestibulum rhoncus est
388. Fames
389ac turpis egestas integer. Mattis enim ut
390tellus elementum sagittis vitae. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et netus
391et. Id semper risus in hendrerit.
392Et sollicitudin ac orci phasellus egestas. Sem integer vitae justo eget
393magna. Et ligula ullamcorper malesuada proin libero nunc consequat.-----BEGIN CERTIFICATE-----
394MIICMzCCAZygAwIBAgIJALiPnVsvq8dsMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNV
395BAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNVBAcTA2ZvbzEMMAoGA1UEChMDZm9v
396MQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2ZvbzAeFw0xMzAzMTkxNTQwMTlaFw0x
397ODAzMTgxNTQwMTlaMFMxCzAJBgNVBAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNV
398BAcTA2ZvbzEMMAoGA1UEChMDZm9vMQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2Zv
399bzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzdGfxi9CNbMf1UUcvDQh7MYB
400OveIHyc0E0KIbhjK5FkCBU4CiZrbfHagaW7ZEcN0tt3EvpbOMxxc/ZQU2WN/s/wP
401xph0pSfsfFsTKM4RhTWD2v4fgk+xZiKd1p0+L4hTtpwnEw0uXRVd0ki6muwV5y/P
402+5FHUeldq+pgTcgzuK8CAwEAAaMPMA0wCwYDVR0PBAQDAgLkMA0GCSqGSIb3DQEB
403BQUAA4GBAJiDAAtY0mQQeuxWdzLRzXmjvdSuL9GoyT3BF/jSnpxz5/58dba8pWen
404v3pj4P3w5DoOso0rzkZy2jEsEitlVM2mLSbQpMM+MUVQCQoiG6W9xuCFuxSrwPIS
405pAqEAuV4DNoxQKKWmhVv+J0ptMWD25Pnpxeq5sXzghfJnslJlQND
406-----END CERTIFICATE-----YXMuIEVsZWlmZW5kIHF1YW0gYWRpcGlzY2luZyB2aXRh
407ZSBwcm9pbiBzYWdpdHRpcyBuaXNsLgoKUGVsbGVudGVzcXVlIG
408hh
409
410
411
412Yml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4gRWdldCBudW5jIGxvYm9ydGlzIG1hdHRpcyBhb
413GlxdWFtIGZhdWNpYnVzLiBOdWxsYW0g
414dmVoaWN1bGEgaXBzdW0gYSBhcmN1IGN1cnN1cy4gUG9ydHRpdG9yIGVnZXQg
415ZG9sb3IgbW9yYmkgbm9uIGFyY3Ugcml
416
417
418zdXMgcXVpcyB2YXJpdXMgcXVhbS4gRGlnbmlzc2ltIGVuaW0gc2l0IGFtZXQgdmVuZW5hd
419GlzLiBDb25zZWN0ZXR1ciBhIGVyYXQgbmFtIGF0IGxlY3R1cyB1cm5h
420IGR1aXMuIEluIGZlcm1lbnR1bS
421Bwb3N1ZXJlIHVybmEgbmVjIHRpbmNpZHVudCBwcmFlc2VudCBzZW1wZXIgZmV1Z2lhdCBuaWJoLiBOYW
4220gYWxpcXVhbSBzZW0gZXQgdG9ydG9yIGNvbg==',
423]
424
425const expected_results = [
426 Block{
427 block_type: 'RSA PRIVATE KEY'
428 // vfmt off
429 data: [
430 u8(0x8b), 0x37, 0xeb, 0x35, 0x39, 0x90, 0x2e, 0x77,
431 0xec, 0x2f, 0x38, 0xb6, 0x59, 0xbf, 0x71, 0x3f,
432 0x3d, 0x90, 0x8f, 0xd7, 0xd0, 0x60, 0x68, 0x1e,
433 0xba, 0x0d, 0xcd, 0xd8, 0xc9, 0x03, 0xb9, 0x51,
434 0xf0, 0xa4, 0xf7, 0x20, 0x92, 0x11, 0xe4, 0x26,
435 0x00, 0x90, 0xba, 0xeb, 0xd3, 0xfa, 0xa6, 0x48,
436 0x31, 0xb4, 0xb6, 0x53, 0xac, 0x13, 0x4b, 0x6e,
437 0x12, 0x66, 0x4e, 0x51, 0xba, 0x72, 0x48, 0x52,
438 0x48, 0xad, 0x44, 0xa7, 0x96, 0x58, 0xc4, 0xb6,
439 0xf1, 0x22, 0xc6, 0x7e, 0x40, 0xec, 0xd5, 0xb0,
440 0x58, 0x95, 0x23, 0xda, 0xe6, 0xc9, 0x80, 0x77,
441 0x7f, 0xea, 0xd4, 0xe7, 0x8f, 0x8b, 0x86, 0x9e,
442 0x75, 0x4e, 0x98, 0x81, 0x6b, 0x83, 0xc7, 0x30,
443 0x40, 0x28, 0x42, 0x95, 0x49, 0x4b, 0xba, 0xa4,
444 0x0d, 0x87, 0x39, 0xdc, 0x90, 0xf4, 0xde, 0x05,
445 0xd5, 0xd2, 0x3e, 0x17, 0xcc, 0x3d, 0x27, 0xdf,
446 0x74, 0xcc, 0x4f, 0x77, 0x12, 0x0c, 0x8d, 0xa9,
447 0x91, 0x41, 0x05, 0xad, 0x8b, 0xef, 0x48, 0x78,
448 0x33, 0xb0, 0xeb, 0x07, 0x48, 0x09, 0x05, 0x63,
449 0x1d, 0x50, 0xca, 0x31, 0x1a, 0x7b, 0xa7, 0xe6,
450 0x09, 0x4b, 0x88, 0x23, 0x28, 0xd8, 0x9a, 0xc7,
451 0x67, 0xd4, 0x64, 0x32, 0x26, 0xa5, 0x95, 0x2d,
452 0x6c, 0x1c, 0xc8, 0x44, 0x2f, 0x1d, 0x94, 0x02,
453 0x53, 0xfc, 0x23, 0x5f, 0xb4, 0x31, 0xab, 0xfc,
454 0x88, 0xc9, 0x47, 0x1b, 0x25, 0x16, 0xf0, 0x42,
455 0x72, 0xd2, 0x96, 0x95, 0x7f, 0x4f, 0x4c, 0x3e,
456 0x97, 0x1e, 0x11, 0xc5, 0x70, 0x0c, 0x17, 0x97,
457 0xd3, 0xe1, 0xb8, 0x51, 0x09, 0x4e, 0xe7, 0x9d,
458 0x46, 0x4c, 0x5b, 0x4e, 0x49, 0x18, 0xdc, 0x0f,
459 0xc5, 0x3e, 0x1a, 0x40, 0xb3, 0x91, 0xaf, 0x56,
460 0xfd, 0x21, 0x50, 0xad, 0x21, 0x9e, 0xdc, 0x68,
461 0x77, 0x48, 0x36, 0x8e, 0xc3, 0xfe, 0x09, 0x10,
462 0xc0, 0x23, 0x58, 0xf0, 0xcb, 0x88, 0x28, 0x25,
463 0xc2, 0x1d, 0x2b, 0x2c, 0x83, 0xb8, 0x57, 0x05,
464 0x3a, 0x03, 0x1c, 0xd3, 0x0a, 0xe0, 0xb0, 0xdd,
465 0xdd, 0x59, 0xc5, 0x0b, 0x14, 0xe9, 0x51, 0x50,
466 0x3e, 0xa1, 0xc0, 0xf2, 0x16, 0x8e, 0x50, 0x04,
467 0xd9, 0x22, 0xba, 0x77, 0xf3, 0xce, 0x8f, 0x05,
468 0x38, 0x55, 0xa8, 0x02, 0xc1, 0x93, 0xda, 0x75,
469 0x36, 0xa9, 0xf9, 0xd5, 0xb5, 0xcb, 0x87, 0x5d,
470 0xd9, 0xcb, 0xd0, 0xd9, 0x21, 0x5c, 0x78, 0x67,
471 0x92, 0x28, 0xcf, 0xf1, 0x06, 0xbb, 0x38, 0x11,
472 0x77, 0xaf, 0x15, 0x5b, 0x9c, 0x32, 0x6c, 0xb8,
473 0xd8, 0x13, 0x6a, 0xfa, 0x43, 0xd9, 0xc7, 0xa6,
474 0x2b, 0x52, 0x67, 0x86, 0x5d, 0x7a, 0xbc, 0x23,
475 0x21, 0x94, 0x5e, 0xb3, 0xae, 0xc7, 0x77, 0x16,
476 0x05, 0xc3, 0xcb, 0xa7, 0x9b, 0x85, 0xa8, 0xea,
477 0x4b, 0x86, 0x9d, 0xbe, 0x63, 0x49, 0x26, 0xa0,
478 0xbf, 0x00, 0x71, 0x2b, 0x30, 0x1f, 0xdc, 0xe9,
479 0xa7, 0xf8, 0x9e, 0x88, 0xb6, 0x14, 0xc9, 0x2a,
480 0xe0, 0xdd, 0xd7, 0x7a, 0xca, 0x64, 0x63, 0x1c,
481 0x46, 0x94, 0x10, 0xe9, 0x5b, 0x2d, 0xc2, 0x28,
482 0x58, 0xb7, 0x54, 0xda, 0x85, 0x0f, 0xea, 0x7c,
483 0x95, 0x16, 0x3e, 0x33, 0xdc, 0x53, 0x93, 0x0b,
484 0xf4, 0xb9, 0x20, 0x57, 0x00, 0x3c, 0x35, 0xd8,
485 0xb5, 0xc2, 0x9d, 0x7f, 0xb0, 0x43, 0xde, 0xf9,
486 0x49, 0x4b, 0xd7, 0xa2, 0xfa, 0xbc, 0xef, 0x63,
487 0x50, 0x77, 0x2e, 0x79, 0x63, 0x7b, 0xfb, 0x34,
488 0x94, 0x38, 0x4f, 0xdc, 0x0d, 0x22, 0x72, 0x31,
489 0xdf, 0x71, 0xfd, 0x92, 0xfc, 0x40, 0x04, 0x80,
490 0x11, 0x37, 0x79, 0x76, 0xe8, 0xd5, 0x22, 0xa9,
491 0x48, 0x34, 0xbd, 0xaf, 0x24, 0xaa, 0xf5, 0xa3,
492 0x84, 0xfe, 0x8b, 0x44, 0x6c, 0x9e, 0x97, 0xc5,
493 0x8a, 0xa1, 0x66, 0x04, 0xa9, 0x45, 0xab, 0x0c,
494 0x3f, 0x48, 0xac, 0xc9, 0x78, 0x28, 0x5d, 0xc8,
495 0x4b, 0x69, 0x6b, 0xf7, 0x49, 0x32, 0xbb, 0x76,
496 0xf1, 0x2f, 0x3a, 0x6f, 0xac, 0xc4, 0x9a, 0x4b,
497 0x1e, 0xaf, 0xe4, 0x83, 0x62, 0x01, 0xa4, 0x7a,
498 0xd4, 0xb6, 0x0d, 0x9e, 0x21, 0x07, 0xeb, 0xe1,
499 0xda, 0xe8, 0xd2, 0x5e, 0x64, 0xbc, 0x1a, 0x4c,
500 0x2b, 0x9f, 0xe0, 0x5f, 0x1c, 0xcc, 0xe4, 0x6e,
501 0xd8, 0xa8, 0xf2, 0x55, 0x9b, 0x1b, 0x0d, 0x25,
502 0x78, 0xcd, 0x6d, 0x7d, 0xd1, 0x59, 0xeb, 0x03,
503 0x13, 0x2e, 0x4c, 0x51, 0x84, 0x19, 0x01, 0x2b,
504 0x82, 0x62, 0x32, 0x25, 0x0c, 0xbe, 0x91, 0x11,
505 0xc8, 0xf8, 0x9b, 0xe9, 0xad, 0x8b, 0xea, 0x25,
506 0xd3, 0x7c, 0x7f, 0xb7, 0x45, 0x40, 0xd2, 0xe8,
507 ]
508 // vfmt on
509 },
510 Block{
511 block_type: 'CERTIFICATE'
512 // vfmt off
513 data: [
514 u8(0x30), 0x82, 0x02, 0x33, 0x30, 0x82, 0x01, 0x9c,
515 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x09, 0x00,
516 0xb8, 0x8f, 0x9d, 0x5b, 0x2f, 0xab, 0xc7, 0x6c,
517 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
518 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30,
519 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
520 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0c,
521 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13,
522 0x03, 0x66, 0x6f, 0x6f, 0x31, 0x0c, 0x30, 0x0a,
523 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x03, 0x66,
524 0x6f, 0x6f, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03,
525 0x55, 0x04, 0x0a, 0x13, 0x03, 0x66, 0x6f, 0x6f,
526 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04,
527 0x0b, 0x13, 0x03, 0x66, 0x6f, 0x6f, 0x31, 0x0c,
528 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
529 0x03, 0x66, 0x6f, 0x6f, 0x30, 0x1e, 0x17, 0x0d,
530 0x31, 0x33, 0x30, 0x33, 0x31, 0x39, 0x31, 0x35,
531 0x34, 0x30, 0x31, 0x39, 0x5a, 0x17, 0x0d, 0x31,
532 0x38, 0x30, 0x33, 0x31, 0x38, 0x31, 0x35, 0x34,
533 0x30, 0x31, 0x39, 0x5a, 0x30, 0x53, 0x31, 0x0b,
534 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
535 0x02, 0x55, 0x53, 0x31, 0x0c, 0x30, 0x0a, 0x06,
536 0x03, 0x55, 0x04, 0x08, 0x13, 0x03, 0x66, 0x6f,
537 0x6f, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55,
538 0x04, 0x07, 0x13, 0x03, 0x66, 0x6f, 0x6f, 0x31,
539 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a,
540 0x13, 0x03, 0x66, 0x6f, 0x6f, 0x31, 0x0c, 0x30,
541 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x03,
542 0x66, 0x6f, 0x6f, 0x31, 0x0c, 0x30, 0x0a, 0x06,
543 0x03, 0x55, 0x04, 0x03, 0x13, 0x03, 0x66, 0x6f,
544 0x6f, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09,
545 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
546 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30,
547 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xcd, 0xd1,
548 0x9f, 0xc6, 0x2f, 0x42, 0x35, 0xb3, 0x1f, 0xd5,
549 0x45, 0x1c, 0xbc, 0x34, 0x21, 0xec, 0xc6, 0x01,
550 0x3a, 0xf7, 0x88, 0x1f, 0x27, 0x34, 0x13, 0x42,
551 0x88, 0x6e, 0x18, 0xca, 0xe4, 0x59, 0x02, 0x05,
552 0x4e, 0x02, 0x89, 0x9a, 0xdb, 0x7c, 0x76, 0xa0,
553 0x69, 0x6e, 0xd9, 0x11, 0xc3, 0x74, 0xb6, 0xdd,
554 0xc4, 0xbe, 0x96, 0xce, 0x33, 0x1c, 0x5c, 0xfd,
555 0x94, 0x14, 0xd9, 0x63, 0x7f, 0xb3, 0xfc, 0x0f,
556 0xc6, 0x98, 0x74, 0xa5, 0x27, 0xec, 0x7c, 0x5b,
557 0x13, 0x28, 0xce, 0x11, 0x85, 0x35, 0x83, 0xda,
558 0xfe, 0x1f, 0x82, 0x4f, 0xb1, 0x66, 0x22, 0x9d,
559 0xd6, 0x9d, 0x3e, 0x2f, 0x88, 0x53, 0xb6, 0x9c,
560 0x27, 0x13, 0x0d, 0x2e, 0x5d, 0x15, 0x5d, 0xd2,
561 0x48, 0xba, 0x9a, 0xec, 0x15, 0xe7, 0x2f, 0xcf,
562 0xfb, 0x91, 0x47, 0x51, 0xe9, 0x5d, 0xab, 0xea,
563 0x60, 0x4d, 0xc8, 0x33, 0xb8, 0xaf, 0x02, 0x03,
564 0x01, 0x00, 0x01, 0xa3, 0x0f, 0x30, 0x0d, 0x30,
565 0x0b, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04,
566 0x03, 0x02, 0x02, 0xe4, 0x30, 0x0d, 0x06, 0x09,
567 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
568 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x98,
569 0x83, 0x00, 0x0b, 0x58, 0xd2, 0x64, 0x10, 0x7a,
570 0xec, 0x56, 0x77, 0x32, 0xd1, 0xcd, 0x79, 0xa3,
571 0xbd, 0xd4, 0xae, 0x2f, 0xd1, 0xa8, 0xc9, 0x3d,
572 0xc1, 0x17, 0xf8, 0xd2, 0x9e, 0x9c, 0x73, 0xe7,
573 0xfe, 0x7c, 0x75, 0xb6, 0xbc, 0xa5, 0x67, 0xa7,
574 0xbf, 0x7a, 0x63, 0xe0, 0xfd, 0xf0, 0xe4, 0x3a,
575 0x0e, 0xb2, 0x8d, 0x2b, 0xce, 0x46, 0x72, 0xda,
576 0x31, 0x2c, 0x12, 0x2b, 0x65, 0x54, 0xcd, 0xa6,
577 0x2d, 0x26, 0xd0, 0xa4, 0xc3, 0x3e, 0x31, 0x45,
578 0x50, 0x09, 0x0a, 0x22, 0x1b, 0xa5, 0xbd, 0xc6,
579 0xe0, 0x85, 0xbb, 0x14, 0xab, 0xc0, 0xf2, 0x12,
580 0xa4, 0x0a, 0x84, 0x02, 0xe5, 0x78, 0x0c, 0xda,
581 0x31, 0x40, 0xa2, 0x96, 0x9a, 0x15, 0x6f, 0xf8,
582 0x9d, 0x29, 0xb4, 0xc5, 0x83, 0xdb, 0x93, 0xe7,
583 0xa7, 0x17, 0xaa, 0xe6, 0xc5, 0xf3, 0x82, 0x17,
584 0xc9, 0x9e, 0xc9, 0x49, 0x95, 0x03, 0x43,
585 ]
586 // vfmt on
587 },
588 Block{
589 block_type: 'CERTIFICATE'
590 // vfmt off
591 data: [
592 u8(0x30), 0x82, 0x02, 0x33, 0x30, 0x82, 0x01, 0x9c,
593 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x09, 0x00,
594 0xb8, 0x8f, 0x9d, 0x5b, 0x2f, 0xab, 0xc7, 0x6c,
595 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
596 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30,
597 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
598 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0c,
599 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13,
600 0x03, 0x66, 0x6f, 0x6f, 0x31, 0x0c, 0x30, 0x0a,
601 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x03, 0x66,
602 0x6f, 0x6f, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03,
603 0x55, 0x04, 0x0a, 0x13, 0x03, 0x66, 0x6f, 0x6f,
604 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04,
605 0x0b, 0x13, 0x03, 0x66, 0x6f, 0x6f, 0x31, 0x0c,
606 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
607 0x03, 0x66, 0x6f, 0x6f, 0x30, 0x1e, 0x17, 0x0d,
608 0x31, 0x33, 0x30, 0x33, 0x31, 0x39, 0x31, 0x35,
609 0x34, 0x30, 0x31, 0x39, 0x5a, 0x17, 0x0d, 0x31,
610 0x38, 0x30, 0x33, 0x31, 0x38, 0x31, 0x35, 0x34,
611 0x30, 0x31, 0x39, 0x5a, 0x30, 0x53, 0x31, 0x0b,
612 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
613 0x02, 0x55, 0x53, 0x31, 0x0c, 0x30, 0x0a, 0x06,
614 0x03, 0x55, 0x04, 0x08, 0x13, 0x03, 0x66, 0x6f,
615 0x6f, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55,
616 0x04, 0x07, 0x13, 0x03, 0x66, 0x6f, 0x6f, 0x31,
617 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a,
618 0x13, 0x03, 0x66, 0x6f, 0x6f, 0x31, 0x0c, 0x30,
619 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x03,
620 0x66, 0x6f, 0x6f, 0x31, 0x0c, 0x30, 0x0a, 0x06,
621 0x03, 0x55, 0x04, 0x03, 0x13, 0x03, 0x66, 0x6f,
622 0x6f, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09,
623 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
624 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30,
625 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xcd, 0xd1,
626 0x9f, 0xc6, 0x2f, 0x42, 0x35, 0xb3, 0x1f, 0xd5,
627 0x45, 0x1c, 0xbc, 0x34, 0x21, 0xec, 0xc6, 0x01,
628 0x3a, 0xf7, 0x88, 0x1f, 0x27, 0x34, 0x13, 0x42,
629 0x88, 0x6e, 0x18, 0xca, 0xe4, 0x59, 0x02, 0x05,
630 0x4e, 0x02, 0x89, 0x9a, 0xdb, 0x7c, 0x76, 0xa0,
631 0x69, 0x6e, 0xd9, 0x11, 0xc3, 0x74, 0xb6, 0xdd,
632 0xc4, 0xbe, 0x96, 0xce, 0x33, 0x1c, 0x5c, 0xfd,
633 0x94, 0x14, 0xd9, 0x63, 0x7f, 0xb3, 0xfc, 0x0f,
634 0xc6, 0x98, 0x74, 0xa5, 0x27, 0xec, 0x7c, 0x5b,
635 0x13, 0x28, 0xce, 0x11, 0x85, 0x35, 0x83, 0xda,
636 0xfe, 0x1f, 0x82, 0x4f, 0xb1, 0x66, 0x22, 0x9d,
637 0xd6, 0x9d, 0x3e, 0x2f, 0x88, 0x53, 0xb6, 0x9c,
638 0x27, 0x13, 0x0d, 0x2e, 0x5d, 0x15, 0x5d, 0xd2,
639 0x48, 0xba, 0x9a, 0xec, 0x15, 0xe7, 0x2f, 0xcf,
640 0xfb, 0x91, 0x47, 0x51, 0xe9, 0x5d, 0xab, 0xea,
641 0x60, 0x4d, 0xc8, 0x33, 0xb8, 0xaf, 0x02, 0x03,
642 0x01, 0x00, 0x01, 0xa3, 0x0f, 0x30, 0x0d, 0x30,
643 0x0b, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04,
644 0x03, 0x02, 0x02, 0xe4, 0x30, 0x0d, 0x06, 0x09,
645 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
646 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x98,
647 0x83, 0x00, 0x0b, 0x58, 0xd2, 0x64, 0x10, 0x7a,
648 0xec, 0x56, 0x77, 0x32, 0xd1, 0xcd, 0x79, 0xa3,
649 0xbd, 0xd4, 0xae, 0x2f, 0xd1, 0xa8, 0xc9, 0x3d,
650 0xc1, 0x17, 0xf8, 0xd2, 0x9e, 0x9c, 0x73, 0xe7,
651 0xfe, 0x7c, 0x75, 0xb6, 0xbc, 0xa5, 0x67, 0xa7,
652 0xbf, 0x7a, 0x63, 0xe0, 0xfd, 0xf0, 0xe4, 0x3a,
653 0x0e, 0xb2, 0x8d, 0x2b, 0xce, 0x46, 0x72, 0xda,
654 0x31, 0x2c, 0x12, 0x2b, 0x65, 0x54, 0xcd, 0xa6,
655 0x2d, 0x26, 0xd0, 0xa4, 0xc3, 0x3e, 0x31, 0x45,
656 0x50, 0x09, 0x0a, 0x22, 0x1b, 0xa5, 0xbd, 0xc6,
657 0xe0, 0x85, 0xbb, 0x14, 0xab, 0xc0, 0xf2, 0x12,
658 0xa4, 0x0a, 0x84, 0x02, 0xe5, 0x78, 0x0c, 0xda,
659 0x31, 0x40, 0xa2, 0x96, 0x9a, 0x15, 0x6f, 0xf8,
660 0x9d, 0x29, 0xb4, 0xc5, 0x83, 0xdb, 0x93, 0xe7,
661 0xa7, 0x17, 0xaa, 0xe6, 0xc5, 0xf3, 0x82, 0x17,
662 0xc9, 0x9e, 0xc9, 0x49, 0x95, 0x03, 0x43,
663 ]
664 // vfmt on
665 },
666]
667
668const expected_rest = [
669 'Extra stuff
670This should be sent back in the second variable
671I will now continue to spam my keyboard to add junk
672lfajsdkfsndckasdjflkasdjclsdfjljjasldfj
673alsdfsdkfasdfasfsdafasdcjaosdicnsad
674
675
676fas90dfsdsdj
677----------------------------------
678-----
679asddfadsfasjfsadf
680-----BEGIN lkfajsdklfjasldkfjalsdjf;kasdflkjsaf
681flajsdfkjasdfajskfjslkdfjaskdjf
682FJASKDJjklfjasdfklsdjf
683BEGIN BEGIN BEGIN
684----BEGIN
685-----END RSA PRIVATE KEY
686: fkalsdjflkasdjf
687private key: fsaddf',
688 '
689fdsjaf888888888888
690-----
691
692-----END
693-----BEGIN',
694 'YXMuIEVsZWlmZW5kIHF1YW0gYWRpcGlzY2luZyB2aXRh
695ZSBwcm9pbiBzYWdpdHRpcyBuaXNsLgoKUGVsbGVudGVzcXVlIG
696hh
697
698
699
700Yml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4gRWdldCBudW5jIGxvYm9ydGlzIG1hdHRpcyBhb
701GlxdWFtIGZhdWNpYnVzLiBOdWxsYW0g
702dmVoaWN1bGEgaXBzdW0gYSBhcmN1IGN1cnN1cy4gUG9ydHRpdG9yIGVnZXQg
703ZG9sb3IgbW9yYmkgbm9uIGFyY3Ugcml
704
705
706zdXMgcXVpcyB2YXJpdXMgcXVhbS4gRGlnbmlzc2ltIGVuaW0gc2l0IGFtZXQgdmVuZW5hd
707GlzLiBDb25zZWN0ZXR1ciBhIGVyYXQgbmFtIGF0IGxlY3R1cyB1cm5h
708IGR1aXMuIEluIGZlcm1lbnR1bS
709Bwb3N1ZXJlIHVybmEgbmVjIHRpbmNpZHVudCBwcmFlc2VudCBzZW1wZXIgZmV1Z2lhdCBuaWJoLiBOYW
7100gYWxpcXVhbSBzZW0gZXQgdG9ydG9yIGNvbg==',
711]
712