]>
Commit | Line | Data |
---|---|---|
0ce7d1f3 | 1 | # Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. |
a1c72cc2 FWH |
2 | # |
3 | # Licensed under the Apache License 2.0 (the "License"). You may not use | |
4 | # this file except in compliance with the License. You can obtain a copy | |
5 | # in the file LICENSE in the source distribution or at | |
6 | # https://www.openssl.org/source/license.html | |
7 | ||
8 | use strict; | |
9 | ||
10 | package TLSProxy::HelloVerifyRequest; | |
11 | ||
12 | use TLSProxy::Record; | |
13 | ||
14 | use vars '@ISA'; | |
15 | push @ISA, 'TLSProxy::Message'; | |
16 | ||
17 | ||
18 | sub new | |
19 | { | |
20 | my $class = shift; | |
21 | my ($isdtls, | |
22 | $server, | |
23 | $msgseq, | |
24 | $msgfrag, | |
25 | $msgfragoffs, | |
26 | $data, | |
27 | $records, | |
28 | $startoffset, | |
29 | $message_frag_lens) = @_; | |
30 | ||
31 | my $self = $class->SUPER::new( | |
32 | $isdtls, | |
33 | $server, | |
34 | TLSProxy::Message::MT_HELLO_VERIFY_REQUEST, | |
35 | $msgseq, | |
36 | $msgfrag, | |
37 | $msgfragoffs, | |
38 | $data, | |
39 | $records, | |
40 | $startoffset, | |
41 | $message_frag_lens); | |
42 | ||
43 | $self->{server_version} = 0; | |
44 | $self->{cookie_len} = 0; | |
45 | $self->{cookie} = ""; | |
46 | ||
47 | return $self; | |
48 | } | |
49 | ||
50 | sub parse | |
51 | { | |
52 | my $self = shift; | |
53 | ||
54 | my ($server_version) = unpack('n', $self->data); | |
55 | my $ptr = 2; | |
56 | my $cookie_len = unpack('C', substr($self->data, $ptr)); | |
57 | $ptr++; | |
58 | my $cookie = substr($self->data, $ptr, $cookie_len); | |
59 | ||
60 | $self->server_version($server_version); | |
61 | $self->cookie_len($cookie_len); | |
62 | $self->cookie($cookie); | |
63 | ||
64 | $self->process_data(); | |
65 | ||
66 | print " Server Version:".$TLSProxy::Record::tls_version{$server_version}."\n"; | |
67 | print " Cookie Len:".$cookie_len."\n"; | |
68 | } | |
69 | ||
70 | #Perform any actions necessary based on the data we've seen | |
71 | sub process_data | |
72 | { | |
73 | my $self = shift; | |
74 | #Intentional no-op | |
75 | } | |
76 | ||
77 | #Reconstruct the on-the-wire message data following changes | |
78 | sub set_message_contents | |
79 | { | |
80 | my $self = shift; | |
81 | my $data; | |
82 | ||
83 | $data = pack('n', $self->server_version); | |
84 | $data .= pack('C', $self->cookie_len); | |
85 | $data .= $self->cookie; | |
86 | ||
87 | $self->data($data); | |
88 | } | |
89 | ||
90 | #Read/write accessors | |
91 | sub server_version | |
92 | { | |
93 | my $self = shift; | |
94 | if (@_) { | |
95 | $self->{server_version} = shift; | |
96 | } | |
97 | return $self->{server_version}; | |
98 | } | |
99 | sub cookie_len | |
100 | { | |
101 | my $self = shift; | |
102 | if (@_) { | |
103 | $self->{cookie_len} = shift; | |
104 | } | |
105 | return $self->{cookie_len}; | |
106 | } | |
107 | sub cookie | |
108 | { | |
109 | my $self = shift; | |
110 | if (@_) { | |
111 | $self->{cookie} = shift; | |
112 | } | |
113 | return $self->{cookie}; | |
114 | } | |
115 | 1; |