Signature.pm

Modules

Functions:


Main Script

Variables:

Calls:

Comments:

###############################################################################
#
#                                Confidential
#             Disclosure And Distribution Solely to Employees of
#          Hewlett-Packard and Its Affiliates Having a Need to Know
#
#                  Copyright @ 1998, Hewlett-Packard, Inc.,
#                            All Rights Reserved
#
###############################################################################
#
#   @(#)$Id: Signature_doc.html,v 1.1 2000/05/04 21:14:19 idsweb Exp $
#
#   Description:    Provide encapsulated signature-generation routines for
#                   use by various release manager and related tools.
#
#   Functions:      crc_signature
#                   md5_signature
#
#   Libraries:      IO::File
#                   MD5
#
#   Global Consts:  $VERSION            Version information for this module
#                   $revision           Copy of the RCS revision string
#
#   Environment:    None.
#
###############################################################################
$VERSION = do {my @r=(q$Revision: 1.1 $=~/\d+/g);sprintf "%d."."%02d"x$#r,@r};
###############################################################################
#
#   Sub Name:       crc_signature
#
#   Description:    Implement the CRC-based checksum used by the release
#                   manager at www.hp.com.
#
#   Arguments:      NAME      IN/OUT  TYPE      DESCRIPTION
#                   $file     in      scalar    Name of the file to be 
#                                                 checksum'd
#
#   Globals:        None.
#
#   Environment:    None.
#
#   Returns:        Success:    string (multiple lines are joined by "\n")
#                   Failure:    undef
#
###############################################################################/n

Code:

###############################################################################
#
#                                Confidential
#             Disclosure And Distribution Solely to Employees of
#          Hewlett-Packard and Its Affiliates Having a Need to Know
#
#                  Copyright @ 1998, Hewlett-Packard, Inc.,
#                            All Rights Reserved
#
###############################################################################
#
#   @(#)$Id: Signature_doc.html,v 1.1 2000/05/04 21:14:19 idsweb Exp $
#
#   Description:    Provide encapsulated signature-generation routines for
#                   use by various release manager and related tools.
#
#   Functions:      crc_signature
#                   md5_signature
#
#   Libraries:      IO::File
#                   MD5
#
#   Global Consts:  $VERSION            Version information for this module
#                   $revision           Copy of the RCS revision string
#
#   Environment:    None.
#
###############################################################################
package IMS::ReleaseMgr::Signature;

use 5.002;
use strict;
use vars qw($VERSION $revision @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
use AutoLoader 'AUTOLOAD';
use Carp;
require Exporter;

$VERSION = do {my @r=(q$Revision: 1.1 $=~/\d+/g);sprintf "%d."."%02d"x$#r,@r};
$revision = q$Id: Signature_doc.html,v 1.1 2000/05/04 21:14:19 idsweb Exp $;

@ISA = qw(Exporter);
@EXPORT = ();
@EXPORT_OK = qw(crc_signature md5_signature);
%EXPORT_TAGS = ();

1;

__END__

###############################################################################
#
#   Sub Name:       crc_signature
#
#   Description:    Implement the CRC-based checksum used by the release
#                   manager at www.hp.com.
#
#   Arguments:      NAME      IN/OUT  TYPE      DESCRIPTION
#                   $file     in      scalar    Name of the file to be 
#                                                 checksum'd
#
#   Globals:        None.
#
#   Environment:    None.
#
#   Returns:        Success:    string (multiple lines are joined by "\n")
#                   Failure:    undef
#
###############################################################################
sub crc_signature


Function: crc_signature

Variables:

Calls:

Comments:

###############################################################################
#
#                                Confidential
#             Disclosure And Distribution Solely to Employees of
#          Hewlett-Packard and Its Affiliates Having a Need to Know
#
#                  Copyright @ 1998, Hewlett-Packard, Inc.,
#                            All Rights Reserved
#
###############################################################################
#
#   @(#)$Id: Signature_doc.html,v 1.1 2000/05/04 21:14:19 idsweb Exp $
#
#   Description:    Provide encapsulated signature-generation routines for
#                   use by various release manager and related tools.
#
#   Functions:      crc_signature
#                   md5_signature
#
#   Libraries:      IO::File
#                   MD5
#
#   Global Consts:  $VERSION            Version information for this module
#                   $revision           Copy of the RCS revision string
#
#   Environment:    None.
#
###############################################################################
$VERSION = do {my @r=(q$Revision: 1.1 $=~/\d+/g);sprintf "%d."."%02d"x$#r,@r};
###############################################################################
#
#   Sub Name:       crc_signature
#
#   Description:    Implement the CRC-based checksum used by the release
#                   manager at www.hp.com.
#
#   Arguments:      NAME      IN/OUT  TYPE      DESCRIPTION
#                   $file     in      scalar    Name of the file to be 
#                                                 checksum'd
#
#   Globals:        None.
#
#   Environment:    None.
#
#   Returns:        Success:    string (multiple lines are joined by "\n")
#                   Failure:    undef
#
###############################################################################/n/n     $crc %= 32767; # ??? this is a 15-bit mask, not even 16, let alone 32?

Code:

{
    my $file = shift;

    require IO::File;

    my $fh = new IO::File "< $file";
    if (! defined $fh)
    {
        carp "Error opening $file for reading: $!, ";
        return undef;
    }

    my $crc = 0;
    my $buffer = '';
    while (sysread($fh, $buffer, 16384))
    {
        $crc += unpack("%32C*", $buffer);
    }
    $crc %= 32767; # ??? this is a 15-bit mask, not even 16, let alone 32?
    $fh->close;

    "CRC: $crc";
}


Function: md5_signature

Variables:

Calls:

Comments:

###############################################################################
#
#   Sub Name:       md5_signature
#
#   Description:    Generate a checksum using the MD5 algorithm (via the MD5
#                   extension).
#
#   Arguments:      NAME      IN/OUT  TYPE      DESCRIPTION
#                   $file     in      scalar    Name of the file to be 
#                                                 checksum'd
#
#   Globals:        None.
#
#   Environment:    None.
#
#   Returns:        Success:    string (multiple lines are joined by "\n")
#                   Failure:    undef
#
###############################################################################/n/n 

Code:

{
    my $file = shift;

    require Digest::MD5;

    my $fh = new IO::File "< $file";
    if (! defined $fh)
    {
        carp "Error: could not open $file for reading: $!, ";
        return undef;
    }
    my $md5 = new Digest::MD5;
    $md5->addfile($fh);
    my $sum = $md5->hexdigest;
    $fh->close;

    $sum;
}