The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
NAME
    Object::Signature::Portable - generate portable signatures of objects

REQUIREMENTS
    This module requires Perl v5.10 or newer, and the following non-core
    modules:

    Crypt::Digest
    Exporter::Lite
    JSON::MaybeXS

SYNOPSIS
        use Object::Signature::Portable;

        my $sig = signature( $object ); # MD5 hex of object signature

        my $sig = signature(
          digest => 'SHA1',             # SHA-1 digest
          format => 'b64udigest',       # as URL-safe base-64
          data   => $object,
        );

DESCRIPTION
    This module provides a simple function for generating *portable*
    cryptographic signatures of Perl data structures.

    The object is serialized into a canonical JSON structure, and then
    hashed using the MD5 algorithm.

    Any two machines running different versions of Perl on different
    architectures should produce identical signatures.

    Note that this module is useful in cases where the consistency of
    signatures between machine is more important than the speed of signature
    generation.

    However, the serialization method, hash algorithm and signature format
    can be customized, as needed.

SEE ALSO
  Similar Modules
    Object::Signature
        This uses Storable to serialise objects and generate a MD5
        hexidecimal string as a signature.

        This has the drawback that machines with different architectures,
        different versions of Perl, or different versions Storable may not
        produce the same signature for the same data. (This does not mean
        that Storable is unable to de-serialize data produced by different
        versions; it only means that the serialized data is not identical
        across different versions.)

AUTHOR
    Robert Rothenberg `<rrwo@cpan.org>' (on behalf of Foxtons, Ltd.)

LICENSE AND COPYRIGHT
    Copyright 2013-2014 Robert Rothenberg.

    This program is free software; you can redistribute it and/or modify it
    under the terms of the the Artistic License (2.0). You may obtain a copy
    of the full license at:

    http://www.perlfoundation.org/artistic_license_2_0