aboutsummaryrefslogtreecommitdiffstats
path: root/util/TLSProxy
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2015-12-08 02:07:43 +0000
committerDr. Stephen Henson <steve@openssl.org>2015-12-08 16:33:04 +0000
commit040c8783509b85a707d25dd3086cc1984b7fef60 (patch)
treefc131865e763137588b3e0d44d829e5ae93e74f9 /util/TLSProxy
parent41609361433d34f609ca841eb1bbaaf0feba1946 (diff)
downloadopenssl-040c8783509b85a707d25dd3086cc1984b7fef60.tar.gz
TLSProxy update
Add function to delete extensions and fix ClientHello repacking. Reviewed-by: Matt Caswell <matt@openssl.org>
Diffstat (limited to 'util/TLSProxy')
-rw-r--r--util/TLSProxy/ClientHello.pm21
-rw-r--r--util/TLSProxy/ServerHello.pm5
2 files changed, 20 insertions, 6 deletions
diff --git a/util/TLSProxy/ClientHello.pm b/util/TLSProxy/ClientHello.pm
index 0b7dbbcdd6..bd03183aab 100644
--- a/util/TLSProxy/ClientHello.pm
+++ b/util/TLSProxy/ClientHello.pm
@@ -70,7 +70,7 @@ sub new
$records,
$startoffset,
$message_frag_lens) = @_;
-
+
my $self = $class->SUPER::new(
$server,
1,
@@ -118,7 +118,7 @@ sub parse
#For now we just deal with this as a block of data. In the future we will
#want to parse this
my $extension_data = substr($self->data, $ptr);
-
+
if (length($extension_data) != $extensions_len) {
die "Invalid extension length\n";
}
@@ -169,6 +169,7 @@ sub set_message_contents
{
my $self = shift;
my $data;
+ my $extensions = "";
$data = pack('n', $self->client_version);
$data .= $self->random;
@@ -178,14 +179,17 @@ sub set_message_contents
$data .= pack("n*", @{$self->ciphersuites});
$data .= pack('C', $self->comp_meth_len);
$data .= pack("C*", @{$self->comp_meths});
- $data .= pack('n', $self->extensions_len);
+
foreach my $key (keys %{$self->extension_data}) {
my $extdata = ${$self->extension_data}{$key};
- $data .= pack("n", $key);
- $data .= pack("n", length($extdata));
- $data .= $extdata;
+ $extensions .= pack("n", $key);
+ $extensions .= pack("n", length($extdata));
+ $extensions .= $extdata;
}
+ $data .= pack('n', length($extensions));
+ $data .= $extensions;
+
$self->data($data);
}
@@ -270,4 +274,9 @@ sub extension_data
}
return $self->{extension_data};
}
+sub delete_extension
+{
+ my ($self, $ext_type) = @_;
+ delete $self->{extension_data}{$ext_type};
+}
1;
diff --git a/util/TLSProxy/ServerHello.pm b/util/TLSProxy/ServerHello.pm
index 56b8a344e5..487538ab12 100644
--- a/util/TLSProxy/ServerHello.pm
+++ b/util/TLSProxy/ServerHello.pm
@@ -230,4 +230,9 @@ sub set_extension
my ($self, $ext_type, $ext_data) = @_;
$self->{extension_data}{$ext_type} = $ext_data;
}
+sub delete_extension
+{
+ my ($self, $ext_type) = @_;
+ delete $self->{extension_data}{$ext_type};
+}
1;