mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
vlib: add a crypto.pem module (#17034)
This commit is contained in:
parent
ba1b31700e
commit
fed6524803
67
vlib/crypto/pem/decode.v
Normal file
67
vlib/crypto/pem/decode.v
Normal file
@ -0,0 +1,67 @@
|
||||
module pem
|
||||
|
||||
import encoding.base64
|
||||
|
||||
// `decode` reads `data` and returns the first parsed PEM Block along with the rest of
|
||||
// the string. `none` is returned when a header is expected, but not present
|
||||
// or when a start of '-----BEGIN' or end of '-----END' can't be found in `data`
|
||||
pub fn decode(data string) ?(Block, string) {
|
||||
mut rest := data[data.index(pem_begin)?..]
|
||||
mut block := Block{
|
||||
block_type: rest[pem_begin.len..].all_before(pem_eol)
|
||||
}
|
||||
block.headers, rest = parse_headers(rest[pem_begin.len..].all_after(pem_eol).trim_left(' \n\t\v\f\r'))?
|
||||
|
||||
block_end_index := rest.index(pem_end)?
|
||||
b64_data := rest[..block_end_index].replace_each(['\r', '', '\n', '', '\t', '', ' ', ''])
|
||||
|
||||
block_data_len := block_end_index / 4 * 3
|
||||
block.data = []u8{len: block_data_len, cap: block_data_len + 3, init: 0}
|
||||
decoded_len := base64.decode_in_buffer(&b64_data, &block.data[0])
|
||||
block.data = block.data[..decoded_len]
|
||||
|
||||
return block, rest[rest.index(pem_end)? + pem_end.len..].all_after_first(pem_eol)
|
||||
}
|
||||
|
||||
fn parse_headers(block string) ?(map[string][]string, string) {
|
||||
headers_str := block.all_before(pem_end).all_before('\n\n')
|
||||
|
||||
// check that something was split or if it's empty
|
||||
if headers_str.len == block.all_before(pem_end).len || headers_str.len == 0 {
|
||||
return map[string][]string{}, block
|
||||
}
|
||||
|
||||
// seperate lines instead of iterating over them,
|
||||
// so that we can manually index them
|
||||
headers_seperated := headers_str.split_into_lines()
|
||||
|
||||
// index the key/value seperator ':', otherwise
|
||||
// return none because it should exist
|
||||
// the initialisation of this function already tells us headers are present
|
||||
mut colon_index := headers_seperated[0].index(colon) or { return none }
|
||||
|
||||
mut headers := map[string][]string{}
|
||||
mut index := 0
|
||||
|
||||
for index < headers_seperated.len - 1 {
|
||||
line := headers_seperated[index]
|
||||
if line.len == 0 {
|
||||
break
|
||||
}
|
||||
|
||||
key := line[..colon_index].trim_space()
|
||||
mut val := line[colon_index + 1..].trim_space()
|
||||
|
||||
for colon_index = 0; index < headers_seperated.len - 1 && colon_index == 0; {
|
||||
index++
|
||||
colon_index = headers_seperated[index].index(colon) or {
|
||||
val += headers_seperated[index].trim_space()
|
||||
0
|
||||
}
|
||||
}
|
||||
|
||||
headers[key] << val
|
||||
}
|
||||
|
||||
return headers, block.all_after('\n\n')
|
||||
}
|
59
vlib/crypto/pem/encode.v
Normal file
59
vlib/crypto/pem/encode.v
Normal file
@ -0,0 +1,59 @@
|
||||
module pem
|
||||
|
||||
import encoding.base64
|
||||
import arrays
|
||||
|
||||
// `encode_config` encodes the given block into a
|
||||
// string using the EncodeConfig. It returns an error if `block_type` is undefined
|
||||
// or if a value in `headers` contains an invalid character ':'
|
||||
//
|
||||
// default EncodeConfig values wrap lines at 64 bytes and use '\n' for newlines
|
||||
pub fn (block Block) encode(config EncodeConfig) !string {
|
||||
if block.block_type == '' {
|
||||
return error('crypto.pem: `encode` called with undefined `block_type`')
|
||||
}
|
||||
if block.headers.keys().any(it.contains(':')) || block.headers.values().any(it.contains(':')) {
|
||||
return error('crypto.pem: invalid header character `:`')
|
||||
}
|
||||
|
||||
// to avoid repeated struct access
|
||||
newline := config.line_ending
|
||||
length := config.line_length
|
||||
|
||||
mut inner := ''
|
||||
if block.headers.len > 0 {
|
||||
// Proc-Type must be written first if it is present
|
||||
if block.headers['Proc-Type'].len > 0 {
|
||||
inner += 'Proc-Type: 4,${block.headers['Proc-Type'][0].trim_string_left('4,')}' +
|
||||
newline
|
||||
}
|
||||
|
||||
for key, value in block.headers {
|
||||
if key == 'Proc-Type' {
|
||||
continue
|
||||
}
|
||||
|
||||
for _, subvalue in value {
|
||||
inner += '${key}: '
|
||||
if key.len + subvalue.len < length {
|
||||
inner += subvalue
|
||||
} else {
|
||||
inner += newline + wrap_lines(subvalue, newline, length)
|
||||
}
|
||||
inner += newline
|
||||
}
|
||||
}
|
||||
|
||||
inner += newline
|
||||
}
|
||||
|
||||
inner += wrap_lines(base64.encode(block.data), newline, length)
|
||||
|
||||
return '${pem_begin}${block.block_type}${pem_eol}${newline}' + '${inner}' +
|
||||
'${pem_end}${block.block_type}${pem_eol}'
|
||||
}
|
||||
|
||||
[inline]
|
||||
fn wrap_lines(str string, newline string, length int) string {
|
||||
return arrays.chunk(str.bytes(), length).map(it.bytestr()).join(newline)
|
||||
}
|
79
vlib/crypto/pem/pem.v
Normal file
79
vlib/crypto/pem/pem.v
Normal file
@ -0,0 +1,79 @@
|
||||
// Implements PEM (Privacy Enhanced Mail) data encoding
|
||||
// according to RFC 1421
|
||||
module pem
|
||||
|
||||
const (
|
||||
pem_begin = '-----BEGIN '
|
||||
pem_end = '\n-----END '
|
||||
pem_eol = '-----'
|
||||
colon = ':'
|
||||
)
|
||||
|
||||
[params]
|
||||
pub struct EncodeConfig {
|
||||
pub mut:
|
||||
// inner text wrap around
|
||||
line_length int = 64
|
||||
// line ending (alternatively '\r\n')
|
||||
line_ending string = '\n'
|
||||
}
|
||||
|
||||
// Headers as described in RFC 1421 Section 9
|
||||
pub enum Header {
|
||||
proctype
|
||||
contentdomain
|
||||
dekinfo
|
||||
origid_asymm
|
||||
origid_symm
|
||||
recipid_asymm
|
||||
recipid_symm
|
||||
cert
|
||||
issuercert
|
||||
micinfo
|
||||
keyinfo
|
||||
crl
|
||||
}
|
||||
|
||||
// `str` returns the string representation of the header
|
||||
pub fn (header Header) str() string {
|
||||
return match header {
|
||||
.proctype { 'Proc-Type' }
|
||||
.contentdomain { 'Content-Domain' }
|
||||
.dekinfo { 'DEK-Info' }
|
||||
.origid_asymm { 'Originator-ID-Asymmetric' }
|
||||
.origid_symm { 'Originator-ID-Symmetric' }
|
||||
.recipid_asymm { 'Recipient-ID-Asymmetric' }
|
||||
.recipid_symm { 'Recipient-ID-Symmetric' }
|
||||
.cert { 'Originator-Certificate' }
|
||||
.issuercert { 'Issuer-Certificate' }
|
||||
.micinfo { 'MIC-Info' }
|
||||
.keyinfo { 'Key-Info' }
|
||||
.crl { 'CRL' }
|
||||
}
|
||||
}
|
||||
|
||||
pub struct Block {
|
||||
pub mut:
|
||||
// from preamble
|
||||
block_type string
|
||||
// optional headers
|
||||
headers map[string][]string
|
||||
// decoded contents
|
||||
data []u8
|
||||
}
|
||||
|
||||
// returns a new `Block` with the specified block_type
|
||||
[inline]
|
||||
pub fn new(block_type string) Block {
|
||||
return Block{
|
||||
block_type: block_type
|
||||
}
|
||||
}
|
||||
|
||||
// returns the selected key using the Header enum
|
||||
//
|
||||
// same as `block.headers[key.str()]`
|
||||
[inline]
|
||||
pub fn (block Block) header_by_key(key Header) []string {
|
||||
return block.headers[key.str()]
|
||||
}
|
688
vlib/crypto/pem/pem_test.v
Normal file
688
vlib/crypto/pem/pem_test.v
Normal file
@ -0,0 +1,688 @@
|
||||
module pem
|
||||
|
||||
// example PEM structures from the RFC
|
||||
fn test_decode_rfc1421() {
|
||||
for i in 0 .. pem.test_data_rfc1421.len {
|
||||
decoded, rest := decode(pem.test_data_rfc1421[i]) or { Block{}, '' }
|
||||
assert decoded == pem.expected_results_rfc1421[i]
|
||||
assert rest == ''
|
||||
}
|
||||
}
|
||||
|
||||
fn test_decode() {
|
||||
for i in 0 .. pem.test_data.len {
|
||||
decoded, rest := decode(pem.test_data[i]) or { Block{}, '' }
|
||||
assert decoded == pem.expected_results[i]
|
||||
assert rest == pem.expected_rest[i]
|
||||
}
|
||||
}
|
||||
|
||||
fn test_encode_rfc1421() {
|
||||
for i in 0 .. pem.test_data_rfc1421.len {
|
||||
encoded := pem.expected_results_rfc1421[i].encode() or { '' }
|
||||
decoded, rest := decode(encoded) or { Block{}, '' }
|
||||
assert rest == ''
|
||||
assert decoded == pem.expected_results_rfc1421[i]
|
||||
}
|
||||
}
|
||||
|
||||
fn test_encode() {
|
||||
for i in 0 .. pem.test_data.len {
|
||||
encoded := pem.expected_results[i].encode() or { '' }
|
||||
decoded, rest := decode(encoded) or { Block{}, '' }
|
||||
assert rest == ''
|
||||
assert decoded == pem.expected_results[i]
|
||||
}
|
||||
}
|
||||
|
||||
fn test_encode_config() {
|
||||
for i in 0 .. pem.test_data.len {
|
||||
encoded := pem.expected_results[i].encode(EncodeConfig{31, '\r\n'}) or { '' }
|
||||
decoded, rest := decode(encoded) or { Block{}, '' }
|
||||
assert rest == ''
|
||||
assert decoded == pem.expected_results[i]
|
||||
}
|
||||
}
|
||||
|
||||
// https://datatracker.ietf.org/doc/html/rfc7468#section-4
|
||||
const test_data_rfc1421 = [
|
||||
'-----BEGIN PRIVACY-ENHANCED MESSAGE-----
|
||||
Proc-Type: 4,MIC-ONLY
|
||||
Content-Domain: RFC822
|
||||
Originator-Certificate:
|
||||
MIIBlTCCAScCAWUwDQYJKoZIhvcNAQECBQAwUTELMAkGA1UEBhMCVVMxIDAeBgNV
|
||||
BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDzAN
|
||||
BgNVBAsTBk5PVEFSWTAeFw05MTA5MDQxODM4MTdaFw05MzA5MDMxODM4MTZaMEUx
|
||||
CzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEU
|
||||
MBIGA1UEAxMLVGVzdCBVc2VyIDEwWTAKBgRVCAEBAgICAANLADBIAkEAwHZHl7i+
|
||||
yJcqDtjJCowzTdBJrdAiLAnSC+CnnjOJELyuQiBgkGrgIh3j8/x0fM+YrsyF1u3F
|
||||
LZPVtzlndhYFJQIDAQABMA0GCSqGSIb3DQEBAgUAA1kACKr0PqphJYw1j+YPtcIq
|
||||
iWlFPuN5jJ79Khfg7ASFxskYkEMjRNZV/HZDZQEhtVaU7Jxfzs2wfX5byMp2X3U/
|
||||
5XUXGx7qusDgHQGs7Jk9W8CW1fuSWUgN4w==
|
||||
Issuer-Certificate:
|
||||
MIIB3DCCAUgCAQowDQYJKoZIhvcNAQECBQAwTzELMAkGA1UEBhMCVVMxIDAeBgNV
|
||||
BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDTAL
|
||||
BgNVBAsTBFRMQ0EwHhcNOTEwOTAxMDgwMDAwWhcNOTIwOTAxMDc1OTU5WjBRMQsw
|
||||
CQYDVQQGEwJVUzEgMB4GA1UEChMXUlNBIERhdGEgU2VjdXJpdHksIEluYy4xDzAN
|
||||
BgNVBAsTBkJldGEgMTEPMA0GA1UECxMGTk9UQVJZMHAwCgYEVQgBAQICArwDYgAw
|
||||
XwJYCsnp6lQCxYykNlODwutF/jMJ3kL+3PjYyHOwk+/9rLg6X65B/LD4bJHtO5XW
|
||||
cqAz/7R7XhjYCm0PcqbdzoACZtIlETrKrcJiDYoP+DkZ8k1gCk7hQHpbIwIDAQAB
|
||||
MA0GCSqGSIb3DQEBAgUAA38AAICPv4f9Gx/tY4+p+4DB7MV+tKZnvBoy8zgoMGOx
|
||||
dD2jMZ/3HsyWKWgSF0eH/AJB3qr9zosG47pyMnTf3aSy2nBO7CMxpUWRBcXUpE+x
|
||||
EREZd9++32ofGBIXaialnOgVUn0OzSYgugiQ077nJLDUj0hQehCizEs5wUJ35a5h
|
||||
MIC-Info: RSA-MD5,RSA,
|
||||
jV2OfH+nnXHU8bnL8kPAad/mSQlTDZlbVuxvZAOVRZ5q5+Ejl5bQvqNeqOUNQjr6
|
||||
EtE7K2QDeVMCyXsdJlA8fA==
|
||||
|
||||
LSBBIG1lc3NhZ2UgZm9yIHVzZSBpbiB0ZXN0aW5nLg0KLSBGb2xsb3dpbmcgaXMg
|
||||
YSBibGFuayBsaW5lOg0KDQpUaGlzIGlzIHRoZSBlbmQuDQo=
|
||||
-----END PRIVACY-ENHANCED MESSAGE-----',
|
||||
'-----BEGIN PRIVACY-ENHANCED MESSAGE-----
|
||||
Proc-Type: 4,ENCRYPTED
|
||||
Content-Domain: RFC822
|
||||
DEK-Info: DES-CBC,BFF968AA74691AC1
|
||||
Originator-Certificate:
|
||||
MIIBlTCCAScCAWUwDQYJKoZIhvcNAQECBQAwUTELMAkGA1UEBhMCVVMxIDAeBgNV
|
||||
BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDzAN
|
||||
BgNVBAsTBk5PVEFSWTAeFw05MTA5MDQxODM4MTdaFw05MzA5MDMxODM4MTZaMEUx
|
||||
CzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEU
|
||||
MBIGA1UEAxMLVGVzdCBVc2VyIDEwWTAKBgRVCAEBAgICAANLADBIAkEAwHZHl7i+
|
||||
yJcqDtjJCowzTdBJrdAiLAnSC+CnnjOJELyuQiBgkGrgIh3j8/x0fM+YrsyF1u3F
|
||||
LZPVtzlndhYFJQIDAQABMA0GCSqGSIb3DQEBAgUAA1kACKr0PqphJYw1j+YPtcIq
|
||||
iWlFPuN5jJ79Khfg7ASFxskYkEMjRNZV/HZDZQEhtVaU7Jxfzs2wfX5byMp2X3U/
|
||||
5XUXGx7qusDgHQGs7Jk9W8CW1fuSWUgN4w==
|
||||
Key-Info: RSA,
|
||||
I3rRIGXUGWAF8js5wCzRTkdhO34PTHdRZY9Tuvm03M+NM7fx6qc5udixps2Lng0+
|
||||
wGrtiUm/ovtKdinz6ZQ/aQ==
|
||||
Issuer-Certificate:
|
||||
MIIB3DCCAUgCAQowDQYJKoZIhvcNAQECBQAwTzELMAkGA1UEBhMCVVMxIDAeBgNV
|
||||
BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDTAL
|
||||
BgNVBAsTBFRMQ0EwHhcNOTEwOTAxMDgwMDAwWhcNOTIwOTAxMDc1OTU5WjBRMQsw
|
||||
CQYDVQQGEwJVUzEgMB4GA1UEChMXUlNBIERhdGEgU2VjdXJpdHksIEluYy4xDzAN
|
||||
BgNVBAsTBkJldGEgMTEPMA0GA1UECxMGTk9UQVJZMHAwCgYEVQgBAQICArwDYgAw
|
||||
XwJYCsnp6lQCxYykNlODwutF/jMJ3kL+3PjYyHOwk+/9rLg6X65B/LD4bJHtO5XW
|
||||
cqAz/7R7XhjYCm0PcqbdzoACZtIlETrKrcJiDYoP+DkZ8k1gCk7hQHpbIwIDAQAB
|
||||
MA0GCSqGSIb3DQEBAgUAA38AAICPv4f9Gx/tY4+p+4DB7MV+tKZnvBoy8zgoMGOx
|
||||
dD2jMZ/3HsyWKWgSF0eH/AJB3qr9zosG47pyMnTf3aSy2nBO7CMxpUWRBcXUpE+x
|
||||
EREZd9++32ofGBIXaialnOgVUn0OzSYgugiQ077nJLDUj0hQehCizEs5wUJ35a5h
|
||||
MIC-Info: RSA-MD5,RSA,
|
||||
UdFJR8u/TIGhfH65ieewe2lOW4tooa3vZCvVNGBZirf/7nrgzWDABz8w9NsXSexv
|
||||
AjRFbHoNPzBuxwmOAFeA0HJszL4yBvhG
|
||||
Recipient-ID-Asymmetric:
|
||||
MFExCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5j
|
||||
LjEPMA0GA1UECxMGQmV0YSAxMQ8wDQYDVQQLEwZOT1RBUlk=,
|
||||
66
|
||||
Key-Info: RSA,
|
||||
O6BS1ww9CTyHPtS3bMLD+L0hejdvX6Qv1HK2ds2sQPEaXhX8EhvVphHYTjwekdWv
|
||||
7x0Z3Jx2vTAhOYHMcqqCjA==
|
||||
|
||||
qeWlj/YJ2Uf5ng9yznPbtD0mYloSwIuV9FRYx+gzY+8iXd/NQrXHfi6/MhPfPF3d
|
||||
jIqCJAxvld2xgqQimUzoS1a4r7kQQ5c/Iua4LqKeq3ciFzEv/MbZhA==
|
||||
-----END PRIVACY-ENHANCED MESSAGE-----',
|
||||
'-----BEGIN PRIVACY-ENHANCED MESSAGE-----
|
||||
Proc-Type: 4,ENCRYPTED
|
||||
Content-Domain: RFC822
|
||||
DEK-Info: DES-CBC,F8143EDE5960C597
|
||||
Originator-ID-Symmetric: linn@zendia.enet.dec.com,,
|
||||
Recipient-ID-Symmetric: linn@zendia.enet.dec.com,ptf-kmc,3
|
||||
Key-Info: DES-ECB,RSA-MD2,9FD3AAD2F2691B9A,
|
||||
B70665BB9BF7CBCDA60195DB94F727D3
|
||||
Recipient-ID-Symmetric: pem-dev@tis.com,ptf-kmc,4
|
||||
Key-Info: DES-ECB,RSA-MD2,161A3F75DC82EF26,
|
||||
E2EF532C65CBCFF79F83A2658132DB47
|
||||
|
||||
LLrHB0eJzyhP+/fSStdW8okeEnv47jxe7SJ/iN72ohNcUk2jHEUSoH1nvNSIWL9M
|
||||
8tEjmF/zxB+bATMtPjCUWbz8Lr9wloXIkjHUlBLpvXR0UrUzYbkNpk0agV2IzUpk
|
||||
J6UiRRGcDSvzrsoK+oNvqu6z7Xs5Xfz5rDqUcMlK1Z6720dcBWGGsDLpTpSCnpot
|
||||
dXd/H5LMDWnonNvPCwQUHt==
|
||||
-----END PRIVACY-ENHANCED MESSAGE-----',
|
||||
]
|
||||
|
||||
const expected_results_rfc1421 = [
|
||||
Block{
|
||||
block_type: 'PRIVACY-ENHANCED MESSAGE'
|
||||
headers: {
|
||||
'Proc-Type': ['4,MIC-ONLY']
|
||||
'Content-Domain': ['RFC822']
|
||||
'Originator-Certificate': [
|
||||
'MIIBlTCCAScCAWUwDQYJKoZIhvcNAQECBQAwUTELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDzANBgNVBAsTBk5PVEFSWTAeFw05MTA5MDQxODM4MTdaFw05MzA5MDMxODM4MTZaMEUxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEUMBIGA1UEAxMLVGVzdCBVc2VyIDEwWTAKBgRVCAEBAgICAANLADBIAkEAwHZHl7i+yJcqDtjJCowzTdBJrdAiLAnSC+CnnjOJELyuQiBgkGrgIh3j8/x0fM+YrsyF1u3FLZPVtzlndhYFJQIDAQABMA0GCSqGSIb3DQEBAgUAA1kACKr0PqphJYw1j+YPtcIqiWlFPuN5jJ79Khfg7ASFxskYkEMjRNZV/HZDZQEhtVaU7Jxfzs2wfX5byMp2X3U/5XUXGx7qusDgHQGs7Jk9W8CW1fuSWUgN4w==',
|
||||
]
|
||||
'Issuer-Certificate': [
|
||||
'MIIB3DCCAUgCAQowDQYJKoZIhvcNAQECBQAwTzELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDTALBgNVBAsTBFRMQ0EwHhcNOTEwOTAxMDgwMDAwWhcNOTIwOTAxMDc1OTU5WjBRMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXUlNBIERhdGEgU2VjdXJpdHksIEluYy4xDzANBgNVBAsTBkJldGEgMTEPMA0GA1UECxMGTk9UQVJZMHAwCgYEVQgBAQICArwDYgAwXwJYCsnp6lQCxYykNlODwutF/jMJ3kL+3PjYyHOwk+/9rLg6X65B/LD4bJHtO5XWcqAz/7R7XhjYCm0PcqbdzoACZtIlETrKrcJiDYoP+DkZ8k1gCk7hQHpbIwIDAQABMA0GCSqGSIb3DQEBAgUAA38AAICPv4f9Gx/tY4+p+4DB7MV+tKZnvBoy8zgoMGOxdD2jMZ/3HsyWKWgSF0eH/AJB3qr9zosG47pyMnTf3aSy2nBO7CMxpUWRBcXUpE+xEREZd9++32ofGBIXaialnOgVUn0OzSYgugiQ077nJLDUj0hQehCizEs5wUJ35a5h',
|
||||
]
|
||||
'MIC-Info': [
|
||||
'RSA-MD5,RSA,jV2OfH+nnXHU8bnL8kPAad/mSQlTDZlbVuxvZAOVRZ5q5+Ejl5bQvqNeqOUNQjr6EtE7K2QDeVMCyXsdJlA8fA==',
|
||||
]
|
||||
}
|
||||
// vfmt off
|
||||
data: [
|
||||
u8(0x2d), 0x20, 0x41, 0x20, 0x6d, 0x65, 0x73, 0x73,
|
||||
0x61, 0x67, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20,
|
||||
0x75, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x74,
|
||||
0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x0d,
|
||||
0x0a, 0x2d, 0x20, 0x46, 0x6f, 0x6c, 0x6c, 0x6f,
|
||||
0x77, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x73, 0x20,
|
||||
0x61, 0x20, 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x20,
|
||||
0x6c, 0x69, 0x6e, 0x65, 0x3a, 0x0d, 0x0a, 0x0d,
|
||||
0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73,
|
||||
0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x64,
|
||||
0x2e, 0x0d, 0x0a,
|
||||
]
|
||||
// vfmt on
|
||||
},
|
||||
Block{
|
||||
block_type: 'PRIVACY-ENHANCED MESSAGE'
|
||||
headers: {
|
||||
'Proc-Type': [
|
||||
'4,ENCRYPTED',
|
||||
]
|
||||
'Content-Domain': [
|
||||
'RFC822',
|
||||
]
|
||||
'DEK-Info': [
|
||||
'DES-CBC,BFF968AA74691AC1',
|
||||
]
|
||||
'Originator-Certificate': [
|
||||
'MIIBlTCCAScCAWUwDQYJKoZIhvcNAQECBQAwUTELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDzANBgNVBAsTBk5PVEFSWTAeFw05MTA5MDQxODM4MTdaFw05MzA5MDMxODM4MTZaMEUxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEUMBIGA1UEAxMLVGVzdCBVc2VyIDEwWTAKBgRVCAEBAgICAANLADBIAkEAwHZHl7i+yJcqDtjJCowzTdBJrdAiLAnSC+CnnjOJELyuQiBgkGrgIh3j8/x0fM+YrsyF1u3FLZPVtzlndhYFJQIDAQABMA0GCSqGSIb3DQEBAgUAA1kACKr0PqphJYw1j+YPtcIqiWlFPuN5jJ79Khfg7ASFxskYkEMjRNZV/HZDZQEhtVaU7Jxfzs2wfX5byMp2X3U/5XUXGx7qusDgHQGs7Jk9W8CW1fuSWUgN4w==',
|
||||
]
|
||||
'Key-Info': [
|
||||
'RSA,I3rRIGXUGWAF8js5wCzRTkdhO34PTHdRZY9Tuvm03M+NM7fx6qc5udixps2Lng0+wGrtiUm/ovtKdinz6ZQ/aQ==',
|
||||
'RSA,O6BS1ww9CTyHPtS3bMLD+L0hejdvX6Qv1HK2ds2sQPEaXhX8EhvVphHYTjwekdWv7x0Z3Jx2vTAhOYHMcqqCjA==',
|
||||
]
|
||||
'Issuer-Certificate': [
|
||||
'MIIB3DCCAUgCAQowDQYJKoZIhvcNAQECBQAwTzELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDTALBgNVBAsTBFRMQ0EwHhcNOTEwOTAxMDgwMDAwWhcNOTIwOTAxMDc1OTU5WjBRMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXUlNBIERhdGEgU2VjdXJpdHksIEluYy4xDzANBgNVBAsTBkJldGEgMTEPMA0GA1UECxMGTk9UQVJZMHAwCgYEVQgBAQICArwDYgAwXwJYCsnp6lQCxYykNlODwutF/jMJ3kL+3PjYyHOwk+/9rLg6X65B/LD4bJHtO5XWcqAz/7R7XhjYCm0PcqbdzoACZtIlETrKrcJiDYoP+DkZ8k1gCk7hQHpbIwIDAQABMA0GCSqGSIb3DQEBAgUAA38AAICPv4f9Gx/tY4+p+4DB7MV+tKZnvBoy8zgoMGOxdD2jMZ/3HsyWKWgSF0eH/AJB3qr9zosG47pyMnTf3aSy2nBO7CMxpUWRBcXUpE+xEREZd9++32ofGBIXaialnOgVUn0OzSYgugiQ077nJLDUj0hQehCizEs5wUJ35a5h',
|
||||
]
|
||||
'MIC-Info': [
|
||||
'RSA-MD5,RSA,UdFJR8u/TIGhfH65ieewe2lOW4tooa3vZCvVNGBZirf/7nrgzWDABz8w9NsXSexvAjRFbHoNPzBuxwmOAFeA0HJszL4yBvhG',
|
||||
]
|
||||
'Recipient-ID-Asymmetric': [
|
||||
'MFExCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEPMA0GA1UECxMGQmV0YSAxMQ8wDQYDVQQLEwZOT1RBUlk=,66',
|
||||
]
|
||||
}
|
||||
// vfmt off
|
||||
data: [
|
||||
u8(0xa9), 0xe5, 0xa5, 0x8f, 0xf6, 0x09, 0xd9, 0x47,
|
||||
0xf9, 0x9e, 0x0f, 0x72, 0xce, 0x73, 0xdb, 0xb4,
|
||||
0x3d, 0x26, 0x62, 0x5a, 0x12, 0xc0, 0x8b, 0x95,
|
||||
0xf4, 0x54, 0x58, 0xc7, 0xe8, 0x33, 0x63, 0xef,
|
||||
0x22, 0x5d, 0xdf, 0xcd, 0x42, 0xb5, 0xc7, 0x7e,
|
||||
0x2e, 0xbf, 0x32, 0x13, 0xdf, 0x3c, 0x5d, 0xdd,
|
||||
0x8c, 0x8a, 0x82, 0x24, 0x0c, 0x6f, 0x95, 0xdd,
|
||||
0xb1, 0x82, 0xa4, 0x22, 0x99, 0x4c, 0xe8, 0x4b,
|
||||
0x56, 0xb8, 0xaf, 0xb9, 0x10, 0x43, 0x97, 0x3f,
|
||||
0x22, 0xe6, 0xb8, 0x2e, 0xa2, 0x9e, 0xab, 0x77,
|
||||
0x22, 0x17, 0x31, 0x2f, 0xfc, 0xc6, 0xd9, 0x84,
|
||||
]
|
||||
// vfmt on
|
||||
},
|
||||
Block{
|
||||
block_type: 'PRIVACY-ENHANCED MESSAGE'
|
||||
headers: {
|
||||
'Proc-Type': [
|
||||
'4,ENCRYPTED',
|
||||
]
|
||||
'Content-Domain': [
|
||||
'RFC822',
|
||||
]
|
||||
'DEK-Info': [
|
||||
'DES-CBC,F8143EDE5960C597',
|
||||
]
|
||||
'Originator-ID-Symmetric': [
|
||||
'linn@zendia.enet.dec.com,,',
|
||||
]
|
||||
'Recipient-ID-Symmetric': [
|
||||
'linn@zendia.enet.dec.com,ptf-kmc,3',
|
||||
'pem-dev@tis.com,ptf-kmc,4',
|
||||
]
|
||||
'Key-Info': [
|
||||
'DES-ECB,RSA-MD2,9FD3AAD2F2691B9A,B70665BB9BF7CBCDA60195DB94F727D3',
|
||||
'DES-ECB,RSA-MD2,161A3F75DC82EF26,E2EF532C65CBCFF79F83A2658132DB47',
|
||||
]
|
||||
}
|
||||
// vfmt off
|
||||
data: [
|
||||
u8(0x2c), 0xba, 0xc7, 0x07, 0x47, 0x89, 0xcf, 0x28,
|
||||
0x4f, 0xfb, 0xf7, 0xd2, 0x4a, 0xd7, 0x56, 0xf2,
|
||||
0x89, 0x1e, 0x12, 0x7b, 0xf8, 0xee, 0x3c, 0x5e,
|
||||
0xed, 0x22, 0x7f, 0x88, 0xde, 0xf6, 0xa2, 0x13,
|
||||
0x5c, 0x52, 0x4d, 0xa3, 0x1c, 0x45, 0x12, 0xa0,
|
||||
0x7d, 0x67, 0xbc, 0xd4, 0x88, 0x58, 0xbf, 0x4c,
|
||||
0xf2, 0xd1, 0x23, 0x98, 0x5f, 0xf3, 0xc4, 0x1f,
|
||||
0x9b, 0x01, 0x33, 0x2d, 0x3e, 0x30, 0x94, 0x59,
|
||||
0xbc, 0xfc, 0x2e, 0xbf, 0x70, 0x96, 0x85, 0xc8,
|
||||
0x92, 0x31, 0xd4, 0x94, 0x12, 0xe9, 0xbd, 0x74,
|
||||
0x74, 0x52, 0xb5, 0x33, 0x61, 0xb9, 0x0d, 0xa6,
|
||||
0x4d, 0x1a, 0x81, 0x5d, 0x88, 0xcd, 0x4a, 0x64,
|
||||
0x27, 0xa5, 0x22, 0x45, 0x11, 0x9c, 0x0d, 0x2b,
|
||||
0xf3, 0xae, 0xca, 0x0a, 0xfa, 0x83, 0x6f, 0xaa,
|
||||
0xee, 0xb3, 0xed, 0x7b, 0x39, 0x5d, 0xfc, 0xf9,
|
||||
0xac, 0x3a, 0x94, 0x70, 0xc9, 0x4a, 0xd5, 0x9e,
|
||||
0xbb, 0xdb, 0x47, 0x5c, 0x05, 0x61, 0x86, 0xb0,
|
||||
0x32, 0xe9, 0x4e, 0x94, 0x82, 0x9e, 0x9a, 0x2d,
|
||||
0x75, 0x77, 0x7f, 0x1f, 0x92, 0xcc, 0x0d, 0x69,
|
||||
0xe8, 0x9c, 0xdb, 0xcf, 0x0b, 0x04, 0x14, 0x1e,
|
||||
]
|
||||
// vfmt on
|
||||
},
|
||||
]
|
||||
|
||||
const test_data = [
|
||||
// https://qsupport.quantum.com/kb/flare/Content/stornext/SN5_DocSite/Guide_Users/Topics/Example_of_a_server_pem_.htm
|
||||
"--BEG
|
||||
An RSA PRIVATE KEY is on it's way!!
|
||||
----BEGIN
|
||||
I only want to parse the certificate below
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
izfrNTmQLnfsLzi2Wb9xPz2Qj9fQYGgeug3N2MkDuVHwpPcgkhHkJgCQuuvT+qZI
|
||||
MbS2U6wTS24SZk5RunJIUkitRKeWWMS28SLGfkDs1bBYlSPa5smAd3/q1OePi4ae
|
||||
dU6YgWuDxzBAKEKVSUu6pA2HOdyQ9N4F1dI+F8w9J990zE93EgyNqZFBBa2L70h4
|
||||
M7DrB0gJBWMdUMoxGnun5glLiCMo2JrHZ9RkMiallS1sHMhELx2UAlP8I1+0Mav8
|
||||
iMlHGyUW8EJy0paVf09MPpceEcVwDBeX0+G4UQlO551GTFtOSRjcD8U+GkCzka9W
|
||||
/SFQrSGe3Gh3SDaOw/4JEMAjWPDLiCglwh0rLIO4VwU6AxzTCuCw3d1ZxQsU6VFQ
|
||||
PqHA8haOUATZIrp3886PBThVqALBk9p1Nqn51bXLh13Zy9DZIVx4Z5Ioz/EGuzgR
|
||||
d68VW5wybLjYE2r6Q9nHpitSZ4ZderwjIZRes67HdxYFw8unm4Wo6kuGnb5jSSag
|
||||
vwBxKzAf3Omn+J6IthTJKuDd13rKZGMcRpQQ6VstwihYt1TahQ/qfJUWPjPcU5ML
|
||||
9LkgVwA8Ndi1wp1/sEPe+UlL16L6vO9jUHcueWN7+zSUOE/cDSJyMd9x/ZL8QASA
|
||||
ETd5dujVIqlINL2vJKr1o4T+i0RsnpfFiqFmBKlFqww/SKzJeChdyEtpa/dJMrt2
|
||||
8S86b6zEmkser+SDYgGketS2DZ4hB+vh2ujSXmS8Gkwrn+BfHMzkbtio8lWbGw0l
|
||||
eM1tfdFZ6wMTLkxRhBkBK4JiMiUMvpERyPib6a2L6iXTfH+3RUDS6A==
|
||||
-----END RSA PRIVATE KEY-----Extra stuff
|
||||
This should be sent back in the second variable
|
||||
I will now continue to spam my keyboard to add junk
|
||||
lfajsdkfsndckasdjflkasdjclsdfjljjasldfj
|
||||
alsdfsdkfasdfasfsdafasdcjaosdicnsad
|
||||
|
||||
|
||||
fas90dfsdsdj
|
||||
----------------------------------
|
||||
-----
|
||||
asddfadsfasjfsadf
|
||||
-----BEGIN lkfajsdklfjasldkfjalsdjf;kasdflkjsaf
|
||||
flajsdfkjasdfajskfjslkdfjaskdjf
|
||||
FJASKDJjklfjasdfklsdjf
|
||||
BEGIN BEGIN BEGIN
|
||||
----BEGIN
|
||||
-----END RSA PRIVATE KEY
|
||||
: fkalsdjflkasdjf
|
||||
private key: fsaddf",
|
||||
'Mollitia magnam ullam ipsam voluptas ipsa
|
||||
rerum debitis. Vel nulla ipsum enim perspiciatis adipisci quam. Nihil incidunt ipsum
|
||||
--- --BEGIN
|
||||
|
||||
|
||||
-- BEGIN ------
|
||||
---
|
||||
--BEGIN ------
|
||||
amet rem rerum explicabo. Cum distinctio ipsum dolorum quae. Suscipit asperiores et aut eos numquam.
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICMzCCAZygAwIBAgIJALiPnVsvq8dsMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNV
|
||||
BAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNVBAcTA2ZvbzEMMAoGA1UEChMDZm9v
|
||||
MQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2ZvbzAeFw0xMzAzMTkxNTQwMTlaFw0x
|
||||
ODAzMTgxNTQwMTlaMFMxCzAJBgNVBAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNV
|
||||
BAcTA2ZvbzEMMAoGA1UEChMDZm9vMQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2Zv
|
||||
bzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzdGfxi9CNbMf1UUcvDQh7MYB
|
||||
OveIHyc0E0KIbhjK5FkCBU4CiZrbfHagaW7ZEcN0tt3EvpbOMxxc/ZQU2WN/s/wP
|
||||
xph0pSfsfFsTKM4RhTWD2v4fgk+xZiKd1p0+L4hTtpwnEw0uXRVd0ki6muwV5y/P
|
||||
+5FHUeldq+pgTcgzuK8CAwEAAaMPMA0wCwYDVR0PBAQDAgLkMA0GCSqGSIb3DQEB
|
||||
BQUAA4GBAJiDAAtY0mQQeuxWdzLRzXmjvdSuL9GoyT3BF/jSnpxz5/58dba8pWen
|
||||
v3pj4P3w5DoOso0rzkZy2jEsEitlVM2mLSbQpMM+MUVQCQoiG6W9xuCFuxSrwPIS
|
||||
pAqEAuV4DNoxQKKWmhVv+J0ptMWD25Pnpxeq5sXzghfJnslJlQND
|
||||
-----END CERTIFICATE-----
|
||||
fdsjaf888888888888
|
||||
-----
|
||||
|
||||
-----END
|
||||
-----BEGIN',
|
||||
'Lorem ipsum dolor sit amet
|
||||
, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore
|
||||
et dolore magna aliqua. Massa id neque aliquam vestibulum
|
||||
morbi blandit cursus risus. Elit at imperdiet dui accumsan sit amet nulla. Pulvinar pellentesque habitant
|
||||
|
||||
|
||||
morbi tristique senectus. Vulputate
|
||||
dignissim suspendisse in est ante in. Egestas dui id ornare arcu. Ultrices mi tempus imperdiet
|
||||
nulla malesuada. Elementum nisi quis eleifend quam adipiscing.
|
||||
Mi in nulla posuere sollicitudin aliquam ultrices. Elit at imperdiet dui accumsan sit amet nulla facilisi. In hac
|
||||
habitasse platea dictumst quisque sagittis. Vestibulum
|
||||
lectus mauris ultrices eros in cursus. Blandit volutpat maecenas volutpat blandit. Sed nisi
|
||||
lacus sed viverra tellus in hac habitasse platea.
|
||||
Nulla facilisi etiam dignissim diam. Donec et odio pellentesque diam volutpat
|
||||
commodo sed egestas. Eleifend quam adipiscing
|
||||
vitae proin sagittis nisl.
|
||||
|
||||
Pharetra et ultrices neque ornare aenean euismod elementum nisi. Sit amet consectetur sed id semper risus in.
|
||||
Eget nullam non nisi est. A diam maecenas sed enim. Enim nec dui nunc mattis. Lectus quam id leo in vitae turpis massa sed
|
||||
. In eu mi bibendum neque egestas congue. Dui faucibus in ornare quam viverra orci j
|
||||
sagittis. Lectus sit amet est placerat in egestas erat imperdiet.
|
||||
|
||||
Suspendisse potenti nullam ac tortor. Iaculis nunc sed augue lacus viverra vitae congue eu consequat.
|
||||
Lacus vestibulum sed arcu
|
||||
non odio euismod. Massa sed elementum tempus egestas sed. Nulla facilisi etiam dignissim diam quis enim
|
||||
. Ac ut consequat semper viverra. Eleifend quam adipiscing vitae proin sagittis nisl rhoncus mattis rhoncus. Nunc consequat interdum varius sit amet mattis vulputate enim.
|
||||
Orci nulla pellentesque dignissim enim sit amet. Sed vulputate mi sit amet.
|
||||
Sagittis vitae et leo duis ut diam. Orci a scelerisque purus semper eget duis
|
||||
at tellus at. In hac habitasse platea dictumst vestibulum rhoncus est
|
||||
. Fames
|
||||
ac turpis egestas integer. Mattis enim ut
|
||||
tellus elementum sagittis vitae. Pellentesque pulvinar pellentesque habitant morbi tristique senectus et netus
|
||||
et. Id semper risus in hendrerit.
|
||||
Et sollicitudin ac orci phasellus egestas. Sem integer vitae justo eget
|
||||
magna. Et ligula ullamcorper malesuada proin libero nunc consequat.-----BEGIN CERTIFICATE-----
|
||||
MIICMzCCAZygAwIBAgIJALiPnVsvq8dsMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNV
|
||||
BAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNVBAcTA2ZvbzEMMAoGA1UEChMDZm9v
|
||||
MQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2ZvbzAeFw0xMzAzMTkxNTQwMTlaFw0x
|
||||
ODAzMTgxNTQwMTlaMFMxCzAJBgNVBAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNV
|
||||
BAcTA2ZvbzEMMAoGA1UEChMDZm9vMQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2Zv
|
||||
bzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzdGfxi9CNbMf1UUcvDQh7MYB
|
||||
OveIHyc0E0KIbhjK5FkCBU4CiZrbfHagaW7ZEcN0tt3EvpbOMxxc/ZQU2WN/s/wP
|
||||
xph0pSfsfFsTKM4RhTWD2v4fgk+xZiKd1p0+L4hTtpwnEw0uXRVd0ki6muwV5y/P
|
||||
+5FHUeldq+pgTcgzuK8CAwEAAaMPMA0wCwYDVR0PBAQDAgLkMA0GCSqGSIb3DQEB
|
||||
BQUAA4GBAJiDAAtY0mQQeuxWdzLRzXmjvdSuL9GoyT3BF/jSnpxz5/58dba8pWen
|
||||
v3pj4P3w5DoOso0rzkZy2jEsEitlVM2mLSbQpMM+MUVQCQoiG6W9xuCFuxSrwPIS
|
||||
pAqEAuV4DNoxQKKWmhVv+J0ptMWD25Pnpxeq5sXzghfJnslJlQND
|
||||
-----END CERTIFICATE-----YXMuIEVsZWlmZW5kIHF1YW0gYWRpcGlzY2luZyB2aXRh
|
||||
ZSBwcm9pbiBzYWdpdHRpcyBuaXNsLgoKUGVsbGVudGVzcXVlIG
|
||||
hh
|
||||
|
||||
|
||||
|
||||
Yml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4gRWdldCBudW5jIGxvYm9ydGlzIG1hdHRpcyBhb
|
||||
GlxdWFtIGZhdWNpYnVzLiBOdWxsYW0g
|
||||
dmVoaWN1bGEgaXBzdW0gYSBhcmN1IGN1cnN1cy4gUG9ydHRpdG9yIGVnZXQg
|
||||
ZG9sb3IgbW9yYmkgbm9uIGFyY3Ugcml
|
||||
|
||||
|
||||
zdXMgcXVpcyB2YXJpdXMgcXVhbS4gRGlnbmlzc2ltIGVuaW0gc2l0IGFtZXQgdmVuZW5hd
|
||||
GlzLiBDb25zZWN0ZXR1ciBhIGVyYXQgbmFtIGF0IGxlY3R1cyB1cm5h
|
||||
IGR1aXMuIEluIGZlcm1lbnR1bS
|
||||
Bwb3N1ZXJlIHVybmEgbmVjIHRpbmNpZHVudCBwcmFlc2VudCBzZW1wZXIgZmV1Z2lhdCBuaWJoLiBOYW
|
||||
0gYWxpcXVhbSBzZW0gZXQgdG9ydG9yIGNvbg==',
|
||||
]
|
||||
|
||||
const expected_results = [
|
||||
Block{
|
||||
block_type: 'RSA PRIVATE KEY'
|
||||
// vfmt off
|
||||
data: [
|
||||
u8(0x8b), 0x37, 0xeb, 0x35, 0x39, 0x90, 0x2e, 0x77,
|
||||
0xec, 0x2f, 0x38, 0xb6, 0x59, 0xbf, 0x71, 0x3f,
|
||||
0x3d, 0x90, 0x8f, 0xd7, 0xd0, 0x60, 0x68, 0x1e,
|
||||
0xba, 0x0d, 0xcd, 0xd8, 0xc9, 0x03, 0xb9, 0x51,
|
||||
0xf0, 0xa4, 0xf7, 0x20, 0x92, 0x11, 0xe4, 0x26,
|
||||
0x00, 0x90, 0xba, 0xeb, 0xd3, 0xfa, 0xa6, 0x48,
|
||||
0x31, 0xb4, 0xb6, 0x53, 0xac, 0x13, 0x4b, 0x6e,
|
||||
0x12, 0x66, 0x4e, 0x51, 0xba, 0x72, 0x48, 0x52,
|
||||
0x48, 0xad, 0x44, 0xa7, 0x96, 0x58, 0xc4, 0xb6,
|
||||
0xf1, 0x22, 0xc6, 0x7e, 0x40, 0xec, 0xd5, 0xb0,
|
||||
0x58, 0x95, 0x23, 0xda, 0xe6, 0xc9, 0x80, 0x77,
|
||||
0x7f, 0xea, 0xd4, 0xe7, 0x8f, 0x8b, 0x86, 0x9e,
|
||||
0x75, 0x4e, 0x98, 0x81, 0x6b, 0x83, 0xc7, 0x30,
|
||||
0x40, 0x28, 0x42, 0x95, 0x49, 0x4b, 0xba, 0xa4,
|
||||
0x0d, 0x87, 0x39, 0xdc, 0x90, 0xf4, 0xde, 0x05,
|
||||
0xd5, 0xd2, 0x3e, 0x17, 0xcc, 0x3d, 0x27, 0xdf,
|
||||
0x74, 0xcc, 0x4f, 0x77, 0x12, 0x0c, 0x8d, 0xa9,
|
||||
0x91, 0x41, 0x05, 0xad, 0x8b, 0xef, 0x48, 0x78,
|
||||
0x33, 0xb0, 0xeb, 0x07, 0x48, 0x09, 0x05, 0x63,
|
||||
0x1d, 0x50, 0xca, 0x31, 0x1a, 0x7b, 0xa7, 0xe6,
|
||||
0x09, 0x4b, 0x88, 0x23, 0x28, 0xd8, 0x9a, 0xc7,
|
||||
0x67, 0xd4, 0x64, 0x32, 0x26, 0xa5, 0x95, 0x2d,
|
||||
0x6c, 0x1c, 0xc8, 0x44, 0x2f, 0x1d, 0x94, 0x02,
|
||||
0x53, 0xfc, 0x23, 0x5f, 0xb4, 0x31, 0xab, 0xfc,
|
||||
0x88, 0xc9, 0x47, 0x1b, 0x25, 0x16, 0xf0, 0x42,
|
||||
0x72, 0xd2, 0x96, 0x95, 0x7f, 0x4f, 0x4c, 0x3e,
|
||||
0x97, 0x1e, 0x11, 0xc5, 0x70, 0x0c, 0x17, 0x97,
|
||||
0xd3, 0xe1, 0xb8, 0x51, 0x09, 0x4e, 0xe7, 0x9d,
|
||||
0x46, 0x4c, 0x5b, 0x4e, 0x49, 0x18, 0xdc, 0x0f,
|
||||
0xc5, 0x3e, 0x1a, 0x40, 0xb3, 0x91, 0xaf, 0x56,
|
||||
0xfd, 0x21, 0x50, 0xad, 0x21, 0x9e, 0xdc, 0x68,
|
||||
0x77, 0x48, 0x36, 0x8e, 0xc3, 0xfe, 0x09, 0x10,
|
||||
0xc0, 0x23, 0x58, 0xf0, 0xcb, 0x88, 0x28, 0x25,
|
||||
0xc2, 0x1d, 0x2b, 0x2c, 0x83, 0xb8, 0x57, 0x05,
|
||||
0x3a, 0x03, 0x1c, 0xd3, 0x0a, 0xe0, 0xb0, 0xdd,
|
||||
0xdd, 0x59, 0xc5, 0x0b, 0x14, 0xe9, 0x51, 0x50,
|
||||
0x3e, 0xa1, 0xc0, 0xf2, 0x16, 0x8e, 0x50, 0x04,
|
||||
0xd9, 0x22, 0xba, 0x77, 0xf3, 0xce, 0x8f, 0x05,
|
||||
0x38, 0x55, 0xa8, 0x02, 0xc1, 0x93, 0xda, 0x75,
|
||||
0x36, 0xa9, 0xf9, 0xd5, 0xb5, 0xcb, 0x87, 0x5d,
|
||||
0xd9, 0xcb, 0xd0, 0xd9, 0x21, 0x5c, 0x78, 0x67,
|
||||
0x92, 0x28, 0xcf, 0xf1, 0x06, 0xbb, 0x38, 0x11,
|
||||
0x77, 0xaf, 0x15, 0x5b, 0x9c, 0x32, 0x6c, 0xb8,
|
||||
0xd8, 0x13, 0x6a, 0xfa, 0x43, 0xd9, 0xc7, 0xa6,
|
||||
0x2b, 0x52, 0x67, 0x86, 0x5d, 0x7a, 0xbc, 0x23,
|
||||
0x21, 0x94, 0x5e, 0xb3, 0xae, 0xc7, 0x77, 0x16,
|
||||
0x05, 0xc3, 0xcb, 0xa7, 0x9b, 0x85, 0xa8, 0xea,
|
||||
0x4b, 0x86, 0x9d, 0xbe, 0x63, 0x49, 0x26, 0xa0,
|
||||
0xbf, 0x00, 0x71, 0x2b, 0x30, 0x1f, 0xdc, 0xe9,
|
||||
0xa7, 0xf8, 0x9e, 0x88, 0xb6, 0x14, 0xc9, 0x2a,
|
||||
0xe0, 0xdd, 0xd7, 0x7a, 0xca, 0x64, 0x63, 0x1c,
|
||||
0x46, 0x94, 0x10, 0xe9, 0x5b, 0x2d, 0xc2, 0x28,
|
||||
0x58, 0xb7, 0x54, 0xda, 0x85, 0x0f, 0xea, 0x7c,
|
||||
0x95, 0x16, 0x3e, 0x33, 0xdc, 0x53, 0x93, 0x0b,
|
||||
0xf4, 0xb9, 0x20, 0x57, 0x00, 0x3c, 0x35, 0xd8,
|
||||
0xb5, 0xc2, 0x9d, 0x7f, 0xb0, 0x43, 0xde, 0xf9,
|
||||
0x49, 0x4b, 0xd7, 0xa2, 0xfa, 0xbc, 0xef, 0x63,
|
||||
0x50, 0x77, 0x2e, 0x79, 0x63, 0x7b, 0xfb, 0x34,
|
||||
0x94, 0x38, 0x4f, 0xdc, 0x0d, 0x22, 0x72, 0x31,
|
||||
0xdf, 0x71, 0xfd, 0x92, 0xfc, 0x40, 0x04, 0x80,
|
||||
0x11, 0x37, 0x79, 0x76, 0xe8, 0xd5, 0x22, 0xa9,
|
||||
0x48, 0x34, 0xbd, 0xaf, 0x24, 0xaa, 0xf5, 0xa3,
|
||||
0x84, 0xfe, 0x8b, 0x44, 0x6c, 0x9e, 0x97, 0xc5,
|
||||
0x8a, 0xa1, 0x66, 0x04, 0xa9, 0x45, 0xab, 0x0c,
|
||||
0x3f, 0x48, 0xac, 0xc9, 0x78, 0x28, 0x5d, 0xc8,
|
||||
0x4b, 0x69, 0x6b, 0xf7, 0x49, 0x32, 0xbb, 0x76,
|
||||
0xf1, 0x2f, 0x3a, 0x6f, 0xac, 0xc4, 0x9a, 0x4b,
|
||||
0x1e, 0xaf, 0xe4, 0x83, 0x62, 0x01, 0xa4, 0x7a,
|
||||
0xd4, 0xb6, 0x0d, 0x9e, 0x21, 0x07, 0xeb, 0xe1,
|
||||
0xda, 0xe8, 0xd2, 0x5e, 0x64, 0xbc, 0x1a, 0x4c,
|
||||
0x2b, 0x9f, 0xe0, 0x5f, 0x1c, 0xcc, 0xe4, 0x6e,
|
||||
0xd8, 0xa8, 0xf2, 0x55, 0x9b, 0x1b, 0x0d, 0x25,
|
||||
0x78, 0xcd, 0x6d, 0x7d, 0xd1, 0x59, 0xeb, 0x03,
|
||||
0x13, 0x2e, 0x4c, 0x51, 0x84, 0x19, 0x01, 0x2b,
|
||||
0x82, 0x62, 0x32, 0x25, 0x0c, 0xbe, 0x91, 0x11,
|
||||
0xc8, 0xf8, 0x9b, 0xe9, 0xad, 0x8b, 0xea, 0x25,
|
||||
0xd3, 0x7c, 0x7f, 0xb7, 0x45, 0x40, 0xd2, 0xe8,
|
||||
]
|
||||
// vfmt on
|
||||
},
|
||||
Block{
|
||||
block_type: 'CERTIFICATE'
|
||||
// vfmt off
|
||||
data: [
|
||||
u8(0x30), 0x82, 0x02, 0x33, 0x30, 0x82, 0x01, 0x9c,
|
||||
0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x09, 0x00,
|
||||
0xb8, 0x8f, 0x9d, 0x5b, 0x2f, 0xab, 0xc7, 0x6c,
|
||||
0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
|
||||
0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30,
|
||||
0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
|
||||
0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0c,
|
||||
0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13,
|
||||
0x03, 0x66, 0x6f, 0x6f, 0x31, 0x0c, 0x30, 0x0a,
|
||||
0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x03, 0x66,
|
||||
0x6f, 0x6f, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03,
|
||||
0x55, 0x04, 0x0a, 0x13, 0x03, 0x66, 0x6f, 0x6f,
|
||||
0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04,
|
||||
0x0b, 0x13, 0x03, 0x66, 0x6f, 0x6f, 0x31, 0x0c,
|
||||
0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
|
||||
0x03, 0x66, 0x6f, 0x6f, 0x30, 0x1e, 0x17, 0x0d,
|
||||
0x31, 0x33, 0x30, 0x33, 0x31, 0x39, 0x31, 0x35,
|
||||
0x34, 0x30, 0x31, 0x39, 0x5a, 0x17, 0x0d, 0x31,
|
||||
0x38, 0x30, 0x33, 0x31, 0x38, 0x31, 0x35, 0x34,
|
||||
0x30, 0x31, 0x39, 0x5a, 0x30, 0x53, 0x31, 0x0b,
|
||||
0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
|
||||
0x02, 0x55, 0x53, 0x31, 0x0c, 0x30, 0x0a, 0x06,
|
||||
0x03, 0x55, 0x04, 0x08, 0x13, 0x03, 0x66, 0x6f,
|
||||
0x6f, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55,
|
||||
0x04, 0x07, 0x13, 0x03, 0x66, 0x6f, 0x6f, 0x31,
|
||||
0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a,
|
||||
0x13, 0x03, 0x66, 0x6f, 0x6f, 0x31, 0x0c, 0x30,
|
||||
0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x03,
|
||||
0x66, 0x6f, 0x6f, 0x31, 0x0c, 0x30, 0x0a, 0x06,
|
||||
0x03, 0x55, 0x04, 0x03, 0x13, 0x03, 0x66, 0x6f,
|
||||
0x6f, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09,
|
||||
0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
|
||||
0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30,
|
||||
0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xcd, 0xd1,
|
||||
0x9f, 0xc6, 0x2f, 0x42, 0x35, 0xb3, 0x1f, 0xd5,
|
||||
0x45, 0x1c, 0xbc, 0x34, 0x21, 0xec, 0xc6, 0x01,
|
||||
0x3a, 0xf7, 0x88, 0x1f, 0x27, 0x34, 0x13, 0x42,
|
||||
0x88, 0x6e, 0x18, 0xca, 0xe4, 0x59, 0x02, 0x05,
|
||||
0x4e, 0x02, 0x89, 0x9a, 0xdb, 0x7c, 0x76, 0xa0,
|
||||
0x69, 0x6e, 0xd9, 0x11, 0xc3, 0x74, 0xb6, 0xdd,
|
||||
0xc4, 0xbe, 0x96, 0xce, 0x33, 0x1c, 0x5c, 0xfd,
|
||||
0x94, 0x14, 0xd9, 0x63, 0x7f, 0xb3, 0xfc, 0x0f,
|
||||
0xc6, 0x98, 0x74, 0xa5, 0x27, 0xec, 0x7c, 0x5b,
|
||||
0x13, 0x28, 0xce, 0x11, 0x85, 0x35, 0x83, 0xda,
|
||||
0xfe, 0x1f, 0x82, 0x4f, 0xb1, 0x66, 0x22, 0x9d,
|
||||
0xd6, 0x9d, 0x3e, 0x2f, 0x88, 0x53, 0xb6, 0x9c,
|
||||
0x27, 0x13, 0x0d, 0x2e, 0x5d, 0x15, 0x5d, 0xd2,
|
||||
0x48, 0xba, 0x9a, 0xec, 0x15, 0xe7, 0x2f, 0xcf,
|
||||
0xfb, 0x91, 0x47, 0x51, 0xe9, 0x5d, 0xab, 0xea,
|
||||
0x60, 0x4d, 0xc8, 0x33, 0xb8, 0xaf, 0x02, 0x03,
|
||||
0x01, 0x00, 0x01, 0xa3, 0x0f, 0x30, 0x0d, 0x30,
|
||||
0x0b, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04,
|
||||
0x03, 0x02, 0x02, 0xe4, 0x30, 0x0d, 0x06, 0x09,
|
||||
0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
|
||||
0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x98,
|
||||
0x83, 0x00, 0x0b, 0x58, 0xd2, 0x64, 0x10, 0x7a,
|
||||
0xec, 0x56, 0x77, 0x32, 0xd1, 0xcd, 0x79, 0xa3,
|
||||
0xbd, 0xd4, 0xae, 0x2f, 0xd1, 0xa8, 0xc9, 0x3d,
|
||||
0xc1, 0x17, 0xf8, 0xd2, 0x9e, 0x9c, 0x73, 0xe7,
|
||||
0xfe, 0x7c, 0x75, 0xb6, 0xbc, 0xa5, 0x67, 0xa7,
|
||||
0xbf, 0x7a, 0x63, 0xe0, 0xfd, 0xf0, 0xe4, 0x3a,
|
||||
0x0e, 0xb2, 0x8d, 0x2b, 0xce, 0x46, 0x72, 0xda,
|
||||
0x31, 0x2c, 0x12, 0x2b, 0x65, 0x54, 0xcd, 0xa6,
|
||||
0x2d, 0x26, 0xd0, 0xa4, 0xc3, 0x3e, 0x31, 0x45,
|
||||
0x50, 0x09, 0x0a, 0x22, 0x1b, 0xa5, 0xbd, 0xc6,
|
||||
0xe0, 0x85, 0xbb, 0x14, 0xab, 0xc0, 0xf2, 0x12,
|
||||
0xa4, 0x0a, 0x84, 0x02, 0xe5, 0x78, 0x0c, 0xda,
|
||||
0x31, 0x40, 0xa2, 0x96, 0x9a, 0x15, 0x6f, 0xf8,
|
||||
0x9d, 0x29, 0xb4, 0xc5, 0x83, 0xdb, 0x93, 0xe7,
|
||||
0xa7, 0x17, 0xaa, 0xe6, 0xc5, 0xf3, 0x82, 0x17,
|
||||
0xc9, 0x9e, 0xc9, 0x49, 0x95, 0x03, 0x43,
|
||||
]
|
||||
// vfmt on
|
||||
},
|
||||
Block{
|
||||
block_type: 'CERTIFICATE'
|
||||
// vfmt off
|
||||
data: [
|
||||
u8(0x30), 0x82, 0x02, 0x33, 0x30, 0x82, 0x01, 0x9c,
|
||||
0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x09, 0x00,
|
||||
0xb8, 0x8f, 0x9d, 0x5b, 0x2f, 0xab, 0xc7, 0x6c,
|
||||
0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
|
||||
0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30,
|
||||
0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
|
||||
0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0c,
|
||||
0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13,
|
||||
0x03, 0x66, 0x6f, 0x6f, 0x31, 0x0c, 0x30, 0x0a,
|
||||
0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x03, 0x66,
|
||||
0x6f, 0x6f, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03,
|
||||
0x55, 0x04, 0x0a, 0x13, 0x03, 0x66, 0x6f, 0x6f,
|
||||
0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04,
|
||||
0x0b, 0x13, 0x03, 0x66, 0x6f, 0x6f, 0x31, 0x0c,
|
||||
0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13,
|
||||
0x03, 0x66, 0x6f, 0x6f, 0x30, 0x1e, 0x17, 0x0d,
|
||||
0x31, 0x33, 0x30, 0x33, 0x31, 0x39, 0x31, 0x35,
|
||||
0x34, 0x30, 0x31, 0x39, 0x5a, 0x17, 0x0d, 0x31,
|
||||
0x38, 0x30, 0x33, 0x31, 0x38, 0x31, 0x35, 0x34,
|
||||
0x30, 0x31, 0x39, 0x5a, 0x30, 0x53, 0x31, 0x0b,
|
||||
0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
|
||||
0x02, 0x55, 0x53, 0x31, 0x0c, 0x30, 0x0a, 0x06,
|
||||
0x03, 0x55, 0x04, 0x08, 0x13, 0x03, 0x66, 0x6f,
|
||||
0x6f, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55,
|
||||
0x04, 0x07, 0x13, 0x03, 0x66, 0x6f, 0x6f, 0x31,
|
||||
0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a,
|
||||
0x13, 0x03, 0x66, 0x6f, 0x6f, 0x31, 0x0c, 0x30,
|
||||
0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x03,
|
||||
0x66, 0x6f, 0x6f, 0x31, 0x0c, 0x30, 0x0a, 0x06,
|
||||
0x03, 0x55, 0x04, 0x03, 0x13, 0x03, 0x66, 0x6f,
|
||||
0x6f, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09,
|
||||
0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
|
||||
0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30,
|
||||
0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xcd, 0xd1,
|
||||
0x9f, 0xc6, 0x2f, 0x42, 0x35, 0xb3, 0x1f, 0xd5,
|
||||
0x45, 0x1c, 0xbc, 0x34, 0x21, 0xec, 0xc6, 0x01,
|
||||
0x3a, 0xf7, 0x88, 0x1f, 0x27, 0x34, 0x13, 0x42,
|
||||
0x88, 0x6e, 0x18, 0xca, 0xe4, 0x59, 0x02, 0x05,
|
||||
0x4e, 0x02, 0x89, 0x9a, 0xdb, 0x7c, 0x76, 0xa0,
|
||||
0x69, 0x6e, 0xd9, 0x11, 0xc3, 0x74, 0xb6, 0xdd,
|
||||
0xc4, 0xbe, 0x96, 0xce, 0x33, 0x1c, 0x5c, 0xfd,
|
||||
0x94, 0x14, 0xd9, 0x63, 0x7f, 0xb3, 0xfc, 0x0f,
|
||||
0xc6, 0x98, 0x74, 0xa5, 0x27, 0xec, 0x7c, 0x5b,
|
||||
0x13, 0x28, 0xce, 0x11, 0x85, 0x35, 0x83, 0xda,
|
||||
0xfe, 0x1f, 0x82, 0x4f, 0xb1, 0x66, 0x22, 0x9d,
|
||||
0xd6, 0x9d, 0x3e, 0x2f, 0x88, 0x53, 0xb6, 0x9c,
|
||||
0x27, 0x13, 0x0d, 0x2e, 0x5d, 0x15, 0x5d, 0xd2,
|
||||
0x48, 0xba, 0x9a, 0xec, 0x15, 0xe7, 0x2f, 0xcf,
|
||||
0xfb, 0x91, 0x47, 0x51, 0xe9, 0x5d, 0xab, 0xea,
|
||||
0x60, 0x4d, 0xc8, 0x33, 0xb8, 0xaf, 0x02, 0x03,
|
||||
0x01, 0x00, 0x01, 0xa3, 0x0f, 0x30, 0x0d, 0x30,
|
||||
0x0b, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04,
|
||||
0x03, 0x02, 0x02, 0xe4, 0x30, 0x0d, 0x06, 0x09,
|
||||
0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
|
||||
0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x98,
|
||||
0x83, 0x00, 0x0b, 0x58, 0xd2, 0x64, 0x10, 0x7a,
|
||||
0xec, 0x56, 0x77, 0x32, 0xd1, 0xcd, 0x79, 0xa3,
|
||||
0xbd, 0xd4, 0xae, 0x2f, 0xd1, 0xa8, 0xc9, 0x3d,
|
||||
0xc1, 0x17, 0xf8, 0xd2, 0x9e, 0x9c, 0x73, 0xe7,
|
||||
0xfe, 0x7c, 0x75, 0xb6, 0xbc, 0xa5, 0x67, 0xa7,
|
||||
0xbf, 0x7a, 0x63, 0xe0, 0xfd, 0xf0, 0xe4, 0x3a,
|
||||
0x0e, 0xb2, 0x8d, 0x2b, 0xce, 0x46, 0x72, 0xda,
|
||||
0x31, 0x2c, 0x12, 0x2b, 0x65, 0x54, 0xcd, 0xa6,
|
||||
0x2d, 0x26, 0xd0, 0xa4, 0xc3, 0x3e, 0x31, 0x45,
|
||||
0x50, 0x09, 0x0a, 0x22, 0x1b, 0xa5, 0xbd, 0xc6,
|
||||
0xe0, 0x85, 0xbb, 0x14, 0xab, 0xc0, 0xf2, 0x12,
|
||||
0xa4, 0x0a, 0x84, 0x02, 0xe5, 0x78, 0x0c, 0xda,
|
||||
0x31, 0x40, 0xa2, 0x96, 0x9a, 0x15, 0x6f, 0xf8,
|
||||
0x9d, 0x29, 0xb4, 0xc5, 0x83, 0xdb, 0x93, 0xe7,
|
||||
0xa7, 0x17, 0xaa, 0xe6, 0xc5, 0xf3, 0x82, 0x17,
|
||||
0xc9, 0x9e, 0xc9, 0x49, 0x95, 0x03, 0x43,
|
||||
]
|
||||
// vfmt on
|
||||
},
|
||||
]
|
||||
|
||||
const expected_rest = [
|
||||
'Extra stuff
|
||||
This should be sent back in the second variable
|
||||
I will now continue to spam my keyboard to add junk
|
||||
lfajsdkfsndckasdjflkasdjclsdfjljjasldfj
|
||||
alsdfsdkfasdfasfsdafasdcjaosdicnsad
|
||||
|
||||
|
||||
fas90dfsdsdj
|
||||
----------------------------------
|
||||
-----
|
||||
asddfadsfasjfsadf
|
||||
-----BEGIN lkfajsdklfjasldkfjalsdjf;kasdflkjsaf
|
||||
flajsdfkjasdfajskfjslkdfjaskdjf
|
||||
FJASKDJjklfjasdfklsdjf
|
||||
BEGIN BEGIN BEGIN
|
||||
----BEGIN
|
||||
-----END RSA PRIVATE KEY
|
||||
: fkalsdjflkasdjf
|
||||
private key: fsaddf',
|
||||
'
|
||||
fdsjaf888888888888
|
||||
-----
|
||||
|
||||
-----END
|
||||
-----BEGIN',
|
||||
'YXMuIEVsZWlmZW5kIHF1YW0gYWRpcGlzY2luZyB2aXRh
|
||||
ZSBwcm9pbiBzYWdpdHRpcyBuaXNsLgoKUGVsbGVudGVzcXVlIG
|
||||
hh
|
||||
|
||||
|
||||
|
||||
Yml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4gRWdldCBudW5jIGxvYm9ydGlzIG1hdHRpcyBhb
|
||||
GlxdWFtIGZhdWNpYnVzLiBOdWxsYW0g
|
||||
dmVoaWN1bGEgaXBzdW0gYSBhcmN1IGN1cnN1cy4gUG9ydHRpdG9yIGVnZXQg
|
||||
ZG9sb3IgbW9yYmkgbm9uIGFyY3Ugcml
|
||||
|
||||
|
||||
zdXMgcXVpcyB2YXJpdXMgcXVhbS4gRGlnbmlzc2ltIGVuaW0gc2l0IGFtZXQgdmVuZW5hd
|
||||
GlzLiBDb25zZWN0ZXR1ciBhIGVyYXQgbmFtIGF0IGxlY3R1cyB1cm5h
|
||||
IGR1aXMuIEluIGZlcm1lbnR1bS
|
||||
Bwb3N1ZXJlIHVybmEgbmVjIHRpbmNpZHVudCBwcmFlc2VudCBzZW1wZXIgZmV1Z2lhdCBuaWJoLiBOYW
|
||||
0gYWxpcXVhbSBzZW0gZXQgdG9ydG9yIGNvbg==',
|
||||
]
|
Loading…
Reference in New Issue
Block a user