openssl/util/perl/TLSProxy/HelloVerifyRequest.pm
Richard Levitte b646179229 Copyright year updates
Reviewed-by: Neil Horman <nhorman@openssl.org>
Release: yes
(cherry picked from commit 0ce7d1f355)

Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/24034)
2024-04-09 13:43:26 +02:00

116 lines
2.3 KiB
Perl

# Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html
use strict;
package TLSProxy::HelloVerifyRequest;
use TLSProxy::Record;
use vars '@ISA';
push @ISA, 'TLSProxy::Message';
sub new
{
my $class = shift;
my ($isdtls,
$server,
$msgseq,
$msgfrag,
$msgfragoffs,
$data,
$records,
$startoffset,
$message_frag_lens) = @_;
my $self = $class->SUPER::new(
$isdtls,
$server,
TLSProxy::Message::MT_HELLO_VERIFY_REQUEST,
$msgseq,
$msgfrag,
$msgfragoffs,
$data,
$records,
$startoffset,
$message_frag_lens);
$self->{server_version} = 0;
$self->{cookie_len} = 0;
$self->{cookie} = "";
return $self;
}
sub parse
{
my $self = shift;
my ($server_version) = unpack('n', $self->data);
my $ptr = 2;
my $cookie_len = unpack('C', substr($self->data, $ptr));
$ptr++;
my $cookie = substr($self->data, $ptr, $cookie_len);
$self->server_version($server_version);
$self->cookie_len($cookie_len);
$self->cookie($cookie);
$self->process_data();
print " Server Version:".$TLSProxy::Record::tls_version{$server_version}."\n";
print " Cookie Len:".$cookie_len."\n";
}
#Perform any actions necessary based on the data we've seen
sub process_data
{
my $self = shift;
#Intentional no-op
}
#Reconstruct the on-the-wire message data following changes
sub set_message_contents
{
my $self = shift;
my $data;
$data = pack('n', $self->server_version);
$data .= pack('C', $self->cookie_len);
$data .= $self->cookie;
$self->data($data);
}
#Read/write accessors
sub server_version
{
my $self = shift;
if (@_) {
$self->{server_version} = shift;
}
return $self->{server_version};
}
sub cookie_len
{
my $self = shift;
if (@_) {
$self->{cookie_len} = shift;
}
return $self->{cookie_len};
}
sub cookie
{
my $self = shift;
if (@_) {
$self->{cookie} = shift;
}
return $self->{cookie};
}
1;