diff -up razor-agents-2.85/lib/Razor2/Client/Engine.pm.old razor-agents-2.85/lib/Razor2/Client/Engine.pm
--- razor-agents-2.85/lib/Razor2/Client/Engine.pm.old	2005-06-14 01:42:25.000000000 +0200
+++ razor-agents-2.85/lib/Razor2/Client/Engine.pm	2010-12-22 09:14:57.644814001 +0100
@@ -1,7 +1,6 @@
 package Razor2::Client::Engine;
 
 use strict;
-use Digest::SHA1 qw(sha1_hex);
 use Data::Dumper;
 use Razor2::Signature::Ephemeral;
 use Razor2::Engine::VR8;
diff -up razor-agents-2.85/lib/Razor2/Signature/Ephemeral.pm.old razor-agents-2.85/lib/Razor2/Signature/Ephemeral.pm
--- razor-agents-2.85/lib/Razor2/Signature/Ephemeral.pm.old	2003-03-04 00:09:50.000000000 +0100
+++ razor-agents-2.85/lib/Razor2/Signature/Ephemeral.pm	2010-12-22 09:14:57.646814001 +0100
@@ -2,9 +2,13 @@
 
 package Razor2::Signature::Ephemeral;
 use strict;
-use Digest::SHA1;
 use Data::Dumper;
 
+BEGIN {
+  eval  { require Digest::SHA;  import Digest::SHA  qw(sha1_hex); 1 }
+  or do { require Digest::SHA1; import Digest::SHA1 qw(sha1_hex) }
+}
+
 sub new {
 
     my ($class, %args) = @_;
@@ -86,16 +90,12 @@ sub hexdigest { 
     }
 
     my $digest;
-    my $ctx = Digest::SHA1->new;
 
     if ($seclength > 128) { 
-        $ctx->add($section1);
-        $ctx->add($section2);
-        $digest = $ctx->hexdigest;
+        $digest = sha1_hex($section1, $section2);
     } else { 
         debug("Sections too small... reverting back to orginal content.");
-        $ctx->add($content);
-        $digest = $ctx->hexdigest;
+        $digest = sha1_hex($content);
     }
 
     debug("Computed e-hash is $digest");
diff -up razor-agents-2.85/lib/Razor2/Signature/Whiplash.pm.old razor-agents-2.85/lib/Razor2/Signature/Whiplash.pm
--- razor-agents-2.85/lib/Razor2/Signature/Whiplash.pm.old	2007-05-09 00:22:36.000000000 +0200
+++ razor-agents-2.85/lib/Razor2/Signature/Whiplash.pm	2010-12-22 09:14:57.648814001 +0100
@@ -7,7 +7,10 @@
 
 package Razor2::Signature::Whiplash; 
 
-use Digest::SHA1;
+BEGIN {
+  eval  { require Digest::SHA;  import Digest::SHA  qw(sha1_hex); 1 }
+  or do { require Digest::SHA1; import Digest::SHA1 qw(sha1_hex) }
+}
 
 sub new { 
 
@@ -683,13 +686,8 @@ sub whiplash { 
         # the value of length to the nearest multiple of ``length_error''.
         # Take the first 20 hex chars from SHA1 and call it the signature.
 
-        my $sha1 = Digest::SHA1->new();
-
-        $sha1->add($host);
-        $sig = substr $sha1->hexdigest, 0, 12;
-
-        $sha1->add($corrected_length);
-        $sig .= substr $sha1->hexdigest, 0, 4;
+        $sig = substr sha1_hex($host), 0, 12;
+        $sig .= substr sha1_hex($corrected_length), 0, 4;
 
         push @sigs, $sig;
         $sig_meta{$sig} = [$host, $corrected_length];
diff -up razor-agents-2.85/lib/Razor2/String.pm.old razor-agents-2.85/lib/Razor2/String.pm
--- razor-agents-2.85/lib/Razor2/String.pm.old	2005-06-13 23:09:59.000000000 +0200
+++ razor-agents-2.85/lib/Razor2/String.pm	2010-12-22 09:14:57.651814001 +0100
@@ -1,11 +1,15 @@
 # $Id: String.pm,v 1.48 2005/06/13 21:09:59 vipul Exp $
 package Razor2::String;
 
-use Digest::SHA1 qw(sha1_hex);
 use URI::Escape;
 use Razor2::Preproc::enBase64;
 use Data::Dumper;
 
+BEGIN {
+  eval  { require Digest::SHA;  import Digest::SHA  qw(sha1_hex); 1 }
+  or do { require Digest::SHA1; import Digest::SHA1 qw(sha1_hex) }
+}
+
 #use MIME::Parser;
 
 require Exporter;
@@ -69,15 +73,8 @@ sub hmac2_sha1 {
     return unless $text && $iv1 && $iv2;
     die "no ref's allowed" if ref($text);
 
-    my $ctx = Digest::SHA1->new;
-    $ctx->add($iv2);
-    $ctx->add($text);
-    my $digest = $ctx->hexdigest;
-
-    $ctx = Digest::SHA1->new;
-    $ctx->add($iv1);
-    $ctx->add($digest);
-    $digest = $ctx->hexdigest;
+    my $digest = sha1_hex($iv2, $text);
+    $digest = sha1_hex($iv1, $digest);
 
     return (hextobase64($digest), $digest);
 }
