package Razor2::Client::Engine; use strict; use Data::Dumper; use Razor2::Signature::Ephemeral; use Razor2::Engine::VR8; use Razor2::Preproc::Manager; use Razor2::String qw(hextobase64 makesis debugobj); # meant to be inherited # sub new { return {}; } sub supported_engines { my @a = qw( 4 8 ); my $hr = {}; foreach (@a) { $hr->{$_} = 1; } return wantarray ? @a : $hr; } sub compute_engine { my ( $self, $engine, @params ) = @_; return $self->vr4_signature(@params) if $engine == 4; return $self->vr8_signature(@params) if $engine == 8; $self->log( 1, "engine $engine not supported" ); return; } # # The following *_signature subroutines should be # the same as the ones on the server # # # VR4 Engine - Ephemereal signatures of decoded body content # sub vr4_signature { my ( $self, $text, $ep4 ) = @_; my ( $seed, $separator ) = split /-/, $ep4, 2; return $self->log( 1, "vr4_signature: Bad ep4: $ep4" ) unless ( $seed && $separator ); my $ehash = new Razor2::Signature::Ephemeral( seed => $seed, separator => $separator ); my $digest = $ehash->hexdigest($$text); my $sig = hextobase64($digest); $self->log( 11, "engine 4 computing on " . length($$text) . ", sig=$sig" ); return $sig; } sub vr8_signature { my ( $self, $text ) = @_; my $vr8 = Razor2::Engine::VR8->new(); my $sigs = $vr8->signature($text); return $sigs; } 1;