# File: $Source: /Users/clajac/cvsroot//Scripting/Scripting/Security.pm,v $ # Author: $Author: clajac $ # Date: $Date: 2003/07/21 10:10:05 $ # Revision: $Revision: 1.3 $ package Scripting::Security; use DB_File; use strict; my %Signed; my $use_signing = 0; my $current; sub open { my ($pkg, $file) = @_; warn "Signature database not found\n" unless(-e $file && -f $file); if(tie(%Signed, 'DB_File', $file, O_RDONLY, 0666, $DB_HASH)) { $use_signing = 1; } else { warn "Failed to open signature database\n"; } 1; } sub executing { my ($pkg, $path) = @_; $current = $path; } sub match { my ($pkg, $path, $digest) = @_; return 1 unless($use_signing); return 0 unless(exists $Signed{$path}); return 0 unless($Signed{$path} eq $digest); return 1; } sub secure { return 1 unless($use_signing); if(exists $Signed{$current}) { return 1; } } 1;