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;