@@ -80,62 +80,42 @@ http {
80
80
EOF
81
81
82
82
$t -> write_file(' t1' , ' SEE-THIS' );
83
- $t -> try_run(' no proxy_protocol tlv' )-> plan(15 );
83
+ $t -> try_run(' no proxy_protocol tlv' )-> plan(14 );
84
84
85
85
# ##############################################################################
86
86
87
- my $p = pack (" N3C" , 0x0D0A0D0A, 0x000D0A51, 0x5549540A, 0x21);
88
- my $tlv = $p . pack (" CnN2n2N21nN2nN2nN4" , 0x11, 134, 0xc0000201, 0xc0000202,
89
- 123, 5678,
90
- # 0x01 alpn
91
- 0x01000541, 0x4c504e31,
92
- # 0x02 authority
93
- 0x0200096c, 0x6f63616c, 0x686f7374,
94
- # 0x03 crc32
95
- 0x03000534, 0x33323130,
96
- # 0x05 unique_id
97
- 0x05000555, 0x4e495151,
98
- # 0x20 ssl
99
- 0x20004301, 0x000000ff,
100
- # 0x21 ssl_version
101
- 0x21000132,
102
- # 0x22 ssl_cn
103
- 0x22000541, 0x42433435,
104
- # 0x23 ssl_cipher
105
- 0x23001b45, 0x43444845, 0x2d525341, 0x2d414553, 0x3132382d, 0x47434d2d,
106
- 0x53484132, 0x3536,
107
- # 0x24 ssl_sig_alg
108
- 0x24000753, 0x48413130, 0x3234,
109
- # 0x25 ssl_key_alg
110
- 0x25000752, 0x53413230, 0x3438,
111
- # 0x30 netns
112
- 0x3000054e, 0x45544e53,
113
- # 0xae custom
114
- 0xae000531, 0x32333435);
115
- my $r ;
116
-
117
- $r = pp_get(' /t1' , $tlv );
118
- like($r , qr / X-ALPN: ALPN1-ALPN1\x0d / , ' ALPN - tlv named variable' );
119
- like($r , qr / X-AUTHORITY: localhost-localhost\x0d / ,
120
- ' AUTHORITY - tlv named variable' );
121
- like($r , qr / X-UNIQUE-ID: UNIQQ-UNIQQ\x0d / , ' UNIQUE_ID - tlv named variable' );
122
- like($r , qr / X-NETNS: NETNS-NETNS\x0d / , ' NETNS - tlv named variable' );
123
- like($r , qr / X-SSL-BINARY: true/ , ' SSL_BINARY - tlv named variable' );
124
- like($r , qr / X-SSL-VERIFY: 255\x0d / , ' SSL_VERIFY - tlv named variable' );
125
- like($r , qr / X-SSL-VERSION: 2-2\x0d / , ' SSL_VERSION - tlv named variable' );
126
- like($r , qr / X-SSL-CN: ABC45-ABC45\x0d / , ' SSL_CN - tlv named variable' );
127
- like($r , qr / X-SSL-CIPHER: ECDHE-RSA-AES128-GCM-SHA256/ ,
128
- ' SSL_CIPHER - tlv named variable (part 1)' );
129
- like ($r , qr / -ECDHE-RSA-AES128-GCM-SHA256\x0d / ,
130
- ' SSL_CIPHER - tlv named variable (part 2)' );
131
- like($r , qr / X-SSL-SIG-ALG: SHA1024-SHA1024\x0d / ,
132
- ' SSL_SIG_ALG - tlv named variable' );
133
- like($r , qr / X-SSL-KEY-ALG: RSA2048-RSA2048\x0d / ,
134
- ' SSL_KEY_ALG - tlv named variable' );
135
- like($r , qr / X-TLV-CRC32C: 43210\x0d / , ' CRC32C - tlv numeric variable' );
136
- like($r , qr / X-TLV-CUSTOM: 12345\x0d / ,
137
- ' custom - tlv numeric variable' );
138
- like($r , qr / X-TLV-X: -\x0d / , ' non-existent - tlv numeric variable' );
87
+ my $tlv = pp2_create_tlv(0x1, " ALPN1" );
88
+ $tlv .= pp2_create_tlv(0x2, " localhost" );
89
+ $tlv .= pp2_create_tlv(0x3, " 4321" );
90
+ $tlv .= pp2_create_tlv(0x5, " UNIQQ" );
91
+
92
+ my $sub = pp2_create_tlv(0x21, " TLSv1.2" );
93
+ $sub .= pp2_create_tlv(0x22, " example.com" );
94
+ $sub .= pp2_create_tlv(0x23, " AES256-SHA" );
95
+ $sub .= pp2_create_tlv(0x24, " SHA1" );
96
+ $sub .= pp2_create_tlv(0x25, " RSA512" );
97
+ my $ssl = pp2_create_ssl(0x01, 255, $sub );
98
+ $tlv .= pp2_create_tlv(0x20, $ssl );
99
+
100
+ $tlv .= pp2_create_tlv(0x30, " NETNS" );
101
+ $tlv .= pp2_create_tlv(0xae, " 12345" );
102
+ my $p = pp2_create($tlv );
103
+
104
+ my $r = pp_get(' /t1' , $p );
105
+ like($r , qr / X-ALPN: ALPN1-ALPN1\x0d ?$ / m , ' ALPN' );
106
+ like($r , qr / X-AUTHORITY: localhost-localhost\x0d ?$ / m , ' AUTHORITY' );
107
+ like($r , qr / X-TLV-CRC32C: 4321\x0d ?$ / m , ' CRC32C' );
108
+ like($r , qr / X-UNIQUE-ID: UNIQQ-UNIQQ\x0d ?$ / m , ' UNIQUE_ID' );
109
+ like($r , qr / X-SSL-BINARY: true/ , ' SSL_BINARY' );
110
+ like($r , qr / X-SSL-VERIFY: 255\x0d ?$ / m , ' SSL_VERIFY' );
111
+ like($r , qr / X-SSL-VERSION: TLSv1.2-TLSv1.2\x0d ?$ / m , ' SSL_VERSION' );
112
+ like($r , qr / X-SSL-CN: example.com-example.com\x0d ?$ / m , ' SSL_CN' );
113
+ like($r , qr / X-SSL-CIPHER: AES256-SHA-AES256-SHA\x0d ?$ / m , ' SSL_CIPHER' );
114
+ like($r , qr / X-SSL-SIG-ALG: SHA1-SHA1\x0d ?$ / m , ' SSL_SIG_ALG' );
115
+ like($r , qr / X-SSL-KEY-ALG: RSA512-RSA512\x0d ?$ / m , ' SSL_KEY_ALG' );
116
+ like($r , qr / X-NETNS: NETNS-NETNS\x0d ?$ / m , ' NETNS' );
117
+ like($r , qr / X-TLV-CUSTOM: 12345\x0d ?$ / m , ' custom' );
118
+ like($r , qr / X-TLV-X: -\x0d ?$ / m , ' non-existent' );
139
119
140
120
# ##############################################################################
141
121
@@ -148,4 +128,39 @@ Host: localhost
148
128
EOF
149
129
}
150
130
131
+ sub pp2_create {
132
+ my ($tlv ) = @_ ;
133
+
134
+ my $pp2_sig = pack (" N3" , 0x0D0A0D0A, 0x000D0A51, 0x5549540A);
135
+ my $ver_cmd = pack (' C' , 0x21);
136
+ my $family = pack (' C' , 0x11);
137
+ my $packet = $pp2_sig . $ver_cmd . $family ;
138
+
139
+ my $ip1 = pack (' N' , 0xc0000201); # 192.0.2.1
140
+ my $ip2 = pack (' N' , 0xc0000202); # 192.0.2.2
141
+ my $port1 = pack (' n' , 123);
142
+ my $port2 = pack (' n' , 5678);
143
+ my $addrs = $ip1 . $ip2 . $port1 . $port2 ;
144
+
145
+ my $len = length ($addrs ) + length ($tlv );
146
+
147
+ $packet .= pack (' n' , $len ) . $addrs . $tlv ;
148
+
149
+ return $packet ;
150
+ }
151
+
152
+ sub pp2_create_tlv {
153
+ my ($type , $content ) = @_ ;
154
+
155
+ my $len = length ($content );
156
+
157
+ return pack (" CnA*" , $type , $len , $content );
158
+ }
159
+
160
+ sub pp2_create_ssl {
161
+ my ($client , $verify , $content ) = @_ ;
162
+
163
+ return pack (" CNA*" , $client , $verify , $content );
164
+ }
165
+
151
166
# ##############################################################################
0 commit comments