X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=util%2FTLSProxy%2FProxy.pm;h=84ca3a75108762a32af087b137b60e1d4c12d6e2;hp=c15019dace64b33ad6426dd3f674a81b9a590d1f;hb=397f4f78760480f982adaeed98ccb10bda4d3fbb;hpb=582a17d662d123eafbb70c9eaaa140a2559b7cdb diff --git a/util/TLSProxy/Proxy.pm b/util/TLSProxy/Proxy.pm index c15019dace..84ca3a7510 100644 --- a/util/TLSProxy/Proxy.pm +++ b/util/TLSProxy/Proxy.pm @@ -17,12 +17,16 @@ use TLSProxy::Record; use TLSProxy::Message; use TLSProxy::ClientHello; use TLSProxy::ServerHello; +use TLSProxy::EncryptedExtensions; use TLSProxy::ServerKeyExchange; use TLSProxy::NewSessionTicket; my $have_IPv6 = 0; my $IP_factory; +my $is_tls13 = 0; +my $ciphersuite = undef; + sub new { my $class = shift; @@ -42,13 +46,14 @@ sub new clientflags => "", serverconnects => 1, serverpid => 0, + reneg => 0, #Public read execute => $execute, cert => $cert, debug => $debug, cipherc => "", - ciphers => "AES128-SHA", + ciphers => "AES128-SHA:TLS13-AES-128-GCM-SHA256", flight => 0, record_list => [], message_list => [], @@ -103,6 +108,8 @@ sub clearClient $self->{record_list} = []; $self->{message_list} = []; $self->{clientflags} = ""; + $is_tls13 = 0; + $ciphersuite = undef; TLSProxy::Message->clear(); TLSProxy::Record->clear(); @@ -113,10 +120,11 @@ sub clear my $self = shift; $self->clearClient; - $self->{ciphers} = "AES128-SHA"; + $self->{ciphers} = "AES128-SHA:TLS13-AES-128-GCM-SHA256"; $self->{serverflags} = ""; $self->{serverconnects} = 1; $self->{serverpid} = 0; + $self->{reneg} = 0; } sub restart @@ -147,12 +155,11 @@ sub start or die "Failed to redirect stdout: $!"; open(STDERR, ">&STDOUT"); } - # TODO(TLS1.3): Temporarily disabled for TLS1.3...no shared cipher - # because the TLS1.3 ciphersuites are not compatible with ossltest my $execcmd = $self->execute - ." s_server -no_tls1_3 -no_comp -rev -engine ossltest -accept " + ." s_server -no_comp -rev -engine ossltest -accept " .($self->server_port) - ." -cert ".$self->cert." -naccept ".$self->serverconnects; + ." -cert ".$self->cert." -cert2 ".$self->cert + ." -naccept ".$self->serverconnects; if ($self->ciphers ne "") { $execcmd .= " -cipher ".$self->ciphers; } @@ -202,7 +209,13 @@ sub clientstart or die "Failed to redirect stdout: $!"; open(STDERR, ">&STDOUT"); } - my $execcmd = "echo test | ".$self->execute + my $echostr; + if ($self->reneg()) { + $echostr = "R"; + } else { + $echostr = "test"; + } + my $execcmd = "echo ".$echostr." | ".$self->execute ." s_client -engine ossltest -connect " .($self->proxy_addr).":".($self->proxy_port); if ($self->cipherc ne "") { @@ -342,7 +355,7 @@ sub process_packet if ($record->flight != $self->flight) { next; } - $packet .= $record->reconstruct_record(); + $packet .= $record->reconstruct_record($server); } $self->{flight} = $self->{flight} + 1; @@ -399,7 +412,7 @@ sub proxy_addr { my $self = shift; if (@_) { - $self->{proxy_addr} = shift; + $self->{proxy_addr} = shift; } return $self->{proxy_addr}; } @@ -407,7 +420,7 @@ sub proxy_port { my $self = shift; if (@_) { - $self->{proxy_port} = shift; + $self->{proxy_port} = shift; } return $self->{proxy_port}; } @@ -415,7 +428,7 @@ sub server_addr { my $self = shift; if (@_) { - $self->{server_addr} = shift; + $self->{server_addr} = shift; } return $self->{server_addr}; } @@ -423,7 +436,7 @@ sub server_port { my $self = shift; if (@_) { - $self->{server_port} = shift; + $self->{server_port} = shift; } return $self->{server_port}; } @@ -431,7 +444,7 @@ sub filter { my $self = shift; if (@_) { - $self->{filter} = shift; + $self->{filter} = shift; } return $self->{filter}; } @@ -439,7 +452,7 @@ sub cipherc { my $self = shift; if (@_) { - $self->{cipherc} = shift; + $self->{cipherc} = shift; } return $self->{cipherc}; } @@ -447,7 +460,7 @@ sub ciphers { my $self = shift; if (@_) { - $self->{ciphers} = shift; + $self->{ciphers} = shift; } return $self->{ciphers}; } @@ -455,7 +468,7 @@ sub serverflags { my $self = shift; if (@_) { - $self->{serverflags} = shift; + $self->{serverflags} = shift; } return $self->{serverflags}; } @@ -463,7 +476,7 @@ sub clientflags { my $self = shift; if (@_) { - $self->{clientflags} = shift; + $self->{clientflags} = shift; } return $self->{clientflags}; } @@ -471,7 +484,7 @@ sub serverconnects { my $self = shift; if (@_) { - $self->{serverconnects} = shift; + $self->{serverconnects} = shift; } return $self->{serverconnects}; } @@ -491,7 +504,7 @@ sub serverpid { my $self = shift; if (@_) { - $self->{serverpid} = shift; + $self->{serverpid} = shift; } return $self->{serverpid}; } @@ -506,4 +519,31 @@ sub fill_known_data return $ret; } +sub is_tls13 +{ + my $class = shift; + if (@_) { + $is_tls13 = shift; + } + return $is_tls13; +} + +sub reneg +{ + my $self = shift; + if (@_) { + $self->{reneg} = shift; + } + return $self->{reneg}; +} + +sub ciphersuite +{ + my $class = shift; + if (@_) { + $ciphersuite = shift; + } + return $ciphersuite; +} + 1;