Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package perl-Digest-Perl-MD5 for 
openSUSE:Factory checked in at 2026-02-12 17:25:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Digest-Perl-MD5 (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Digest-Perl-MD5.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Digest-Perl-MD5"

Thu Feb 12 17:25:49 2026 rev:11 rq:1332519 version:1.910.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/perl-Digest-Perl-MD5/perl-Digest-Perl-MD5.changes    
    2025-02-10 18:19:44.465545273 +0100
+++ 
/work/SRC/openSUSE:Factory/.perl-Digest-Perl-MD5.new.1977/perl-Digest-Perl-MD5.changes
      2026-02-12 17:26:24.852865283 +0100
@@ -1,0 +2,16 @@
+Sun Feb  1 06:12:09 UTC 2026 - Tina Müller <[email protected]>
+
+- updated to 1.910.0 (1.91)
+   see /usr/share/doc/packages/perl-Digest-Perl-MD5/CHANGES
+
+  1.91:        Performance and maintenance release:
+       - ~11% performance improvement on 64-bit systems (reduced masking 
overhead)
+       - Added GitHub Actions CI workflows
+       - Code reformatted with perltidy
+
+  1.9: Bug fix release:
+       - RT#78392: Localize $_ to protect calling modules from clobbering
+       - RT#85872: Fixed /usr/bin/false shebang in tools/md5
+       - RT#86853: Fixed typos in documentation
+
+-------------------------------------------------------------------

Old:
----
  Digest-Perl-MD5-1.9.tar.gz

New:
----
  Digest-Perl-MD5-1.91.tar.gz
  README.md
  _scmsync.obsinfo
  build.specials.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Digest-Perl-MD5.spec ++++++
--- /var/tmp/diff_new_pack.Sgbcl1/_old  2026-02-12 17:26:25.580896168 +0100
+++ /var/tmp/diff_new_pack.Sgbcl1/_new  2026-02-12 17:26:25.584896338 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package perl-Digest-Perl-MD5
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,15 +18,16 @@
 
 %define cpan_name Digest-Perl-MD5
 Name:           perl-Digest-Perl-MD5
-Version:        1.900.0
+Version:        1.910.0
 Release:        0
-# 1.9 -> normalize -> 1.900.0
-%define cpan_version 1.9
+# 1.91 -> normalize -> 1.910.0
+%define cpan_version 1.91
 License:        Artistic-1.0 OR GPL-1.0-or-later
 Summary:        Perl Implementation of Rivest's MD5 algorithm
 URL:            https://metacpan.org/release/%{cpan_name}
 Source0:        
https://cpan.metacpan.org/authors/id/D/DE/DELTA/%{cpan_name}-%{cpan_version}.tar.gz
 Source1:        cpanspec.yml
+Source100:      README.md
 BuildArch:      noarch
 BuildRequires:  perl
 BuildRequires:  perl-macros
@@ -35,15 +36,15 @@
 %{perl_requires}
 
 %description
-This modules has the same interface as the much faster 'Digest::MD5'. So
-you can easily exchange them, e.g.
+This module has the same interface as the much faster 'Digest::MD5'. So you
+can easily exchange them, e.g.
 
        BEGIN {
          eval {
            require Digest::MD5;
            import Digest::MD5 'md5_hex'
          };
-         if ($@) { # ups, no Digest::MD5
+         if ($@) { # oops, no Digest::MD5
            require Digest::Perl::MD5;
            import Digest::Perl::MD5 'md5_hex'
          }
@@ -56,7 +57,7 @@
 Digest::Perl::MD5 and use Digest::MD5 as normal, it falls back to
 Digest::Perl::MD5 if it cannot load its object files.
 
-For a detailed Documentation see the 'Digest::MD5' module.
+For detailed documentation see the 'Digest::MD5' module.
 
 %prep
 %autosetup  -n %{cpan_name}-%{cpan_version} -p1
@@ -76,5 +77,5 @@
 %perl_gen_filelist
 
 %files -f %{name}.files
-%doc CHANGES rand.f
+%doc CHANGES rand.f README.md
 

++++++ Digest-Perl-MD5-1.9.tar.gz -> Digest-Perl-MD5-1.91.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Digest-Perl-MD5-1.9/CHANGES 
new/Digest-Perl-MD5-1.91/CHANGES
--- old/Digest-Perl-MD5-1.9/CHANGES     2013-04-11 11:20:14.000000000 +0200
+++ new/Digest-Perl-MD5-1.91/CHANGES    2026-01-31 21:00:15.000000000 +0100
@@ -1,3 +1,13 @@
+1.91:  Performance and maintenance release:
+       - ~11% performance improvement on 64-bit systems (reduced masking 
overhead)
+       - Added GitHub Actions CI workflows
+       - Code reformatted with perltidy
+
+1.9:   Bug fix release:
+       - RT#78392: Localize $_ to protect calling modules from clobbering
+       - RT#85872: Fixed /usr/bin/false shebang in tools/md5
+       - RT#86853: Fixed typos in documentation
+
 1.8:   Workaround for older perl
        - Josh Clark suggested substr workaround needed by 5.004
 
@@ -19,7 +29,7 @@
 
 1.4:   Removed obsolete sum() function (hint from Guido Flohr)
        round() function is now dynamically generated,
-       different code for 32bit and 64bit architechtures.
+       different code for 32-bit and 64-bit architectures.
        Global 'use integer' (except for rotate_left()).
        Faster than 1.3.        
 
@@ -32,5 +42,5 @@
        Using 'use integer'.
        
 1.0:   Fix for big endian machines.
-       Performancetuning.
+       Performance tuning.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Digest-Perl-MD5-1.9/MANIFEST 
new/Digest-Perl-MD5-1.91/MANIFEST
--- old/Digest-Perl-MD5-1.9/MANIFEST    2013-12-14 14:08:23.000000000 +0100
+++ new/Digest-Perl-MD5-1.91/MANIFEST   2026-01-31 21:00:42.000000000 +0100
@@ -1,6 +1,6 @@
 MANIFEST       Your are reading it!
 Makefile.PL    Makefile Maker
-README         Who's who, what's what
+README.md      Who's who, what's what
 lib/Digest/Perl/MD5.pm The cause of all this.
 test.pl                Test suite
 tools/md5-test.pl      Compare D::MD5 with D::P::MD5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Digest-Perl-MD5-1.9/META.json 
new/Digest-Perl-MD5-1.91/META.json
--- old/Digest-Perl-MD5-1.9/META.json   2013-12-14 14:08:22.000000000 +0100
+++ new/Digest-Perl-MD5-1.91/META.json  2026-01-31 21:00:42.000000000 +0100
@@ -4,13 +4,13 @@
       "Christian Lackas <[email protected]>"
    ],
    "dynamic_config" : 1,
-   "generated_by" : "ExtUtils::MakeMaker version 6.72, CPAN::Meta::Converter 
version 2.120351",
+   "generated_by" : "ExtUtils::MakeMaker version 7.62, CPAN::Meta::Converter 
version 2.150010",
    "license" : [
       "unknown"
    ],
    "meta-spec" : {
       "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec";,
-      "version" : "2"
+      "version" : 2
    },
    "name" : "Digest-Perl-MD5",
    "no_index" : {
@@ -37,5 +37,6 @@
       }
    },
    "release_status" : "stable",
-   "version" : "1.9"
+   "version" : "1.91",
+   "x_serialization_backend" : "JSON::PP version 4.06"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Digest-Perl-MD5-1.9/META.yml 
new/Digest-Perl-MD5-1.91/META.yml
--- old/Digest-Perl-MD5-1.9/META.yml    2013-12-14 14:08:22.000000000 +0100
+++ new/Digest-Perl-MD5-1.91/META.yml   2026-01-31 21:00:42.000000000 +0100
@@ -3,20 +3,21 @@
 author:
   - 'Christian Lackas <[email protected]>'
 build_requires:
-  ExtUtils::MakeMaker: 0
+  ExtUtils::MakeMaker: '0'
 configure_requires:
-  ExtUtils::MakeMaker: 0
+  ExtUtils::MakeMaker: '0'
 dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 6.72, CPAN::Meta::Converter version 
2.120351'
+generated_by: 'ExtUtils::MakeMaker version 7.62, CPAN::Meta::Converter version 
2.150010'
 license: unknown
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
-  version: 1.4
+  version: '1.4'
 name: Digest-Perl-MD5
 no_index:
   directory:
     - t
     - inc
 requires:
-  Exporter: 0
-version: 1.9
+  Exporter: '0'
+version: '1.91'
+x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Digest-Perl-MD5-1.9/README.md 
new/Digest-Perl-MD5-1.91/README.md
--- old/Digest-Perl-MD5-1.9/README.md   1970-01-01 01:00:00.000000000 +0100
+++ new/Digest-Perl-MD5-1.91/README.md  2026-01-22 09:47:47.000000000 +0100
@@ -0,0 +1,160 @@
+NAME
+    Digest::MD5::Perl - Perl implementation of Ron Rivest's MD5 Algorithm
+
+DISCLAIMER
+    This is not an interface (like "Digest::MD5") but a Perl implementation
+    of MD5. It is written in perl only and because of this it is slow but it
+    works without C-Code. You should use "Digest::MD5" instead of this
+    module if it is available. This module is only useful for
+
+    *   computers where you cannot install "Digest::MD5" (e.g. lack of a
+        C-Compiler)
+
+    *   hashing only small amounts of data (less than one million bytes). I
+        use it to hash passwords.
+
+    *   educational purposes
+
+SYNOPSIS
+     # Functional style
+     use Digest::MD5  qw(md5 md5_hex md5_base64);
+
+     $hash = md5 $data;
+     $hash = md5_hex $data;
+     $hash = md5_base64 $data;
+    
+
+     # OO style
+     use Digest::MD5;
+
+     $ctx = Digest::MD5->new;
+
+     $ctx->add($data);
+     $ctx->addfile(*FILE);
+
+     $digest = $ctx->digest;
+     $digest = $ctx->hexdigest;
+     $digest = $ctx->b64digest;
+
+DESCRIPTION
+    This module has the same interface as the much faster "Digest::MD5". So
+    you can easily exchange them, e.g.
+
+            BEGIN {
+              eval {
+                require Digest::MD5;
+                import Digest::MD5 'md5_hex'
+              };
+              if ($@) { # oops, no Digest::MD5
+                require Digest::Perl::MD5;
+                import Digest::Perl::MD5 'md5_hex'
+              }             
+            }
+
+    If the "Digest::MD5" module is available it is used and if not you take
+    "Digest::Perl::MD5".
+
+    You can also install the Perl part of Digest::MD5 together with
+    Digest::Perl::MD5 and use Digest::MD5 as normal, it falls back to
+    Digest::Perl::MD5 if it cannot load its object files.
+
+    For detailed documentation see the "Digest::MD5" module.
+
+EXAMPLES
+    The simplest way to use this library is to import the md5_hex() function
+    (or one of its cousins):
+
+        use Digest::Perl::MD5 'md5_hex';
+        print 'Digest is ', md5_hex('foobarbaz'), "\n";
+
+    The above example would print out the message
+
+        Digest is 6df23dc03f9b54cc38a0fc1483df6e21
+
+    provided that the implementation is working correctly. The same checksum
+    can also be calculated in OO style:
+
+        use Digest::MD5;
+    
+        $md5 = Digest::MD5->new;
+        $md5->add('foo', 'bar');
+        $md5->add('baz');
+        $digest = $md5->hexdigest;
+    
+        print "Digest is $digest\n";
+
+    The digest methods are destructive. That means you can only call them
+    once and the $md5 object is reset after use. You can make a copy with
+    clone:
+
+            $md5->clone->hexdigest
+
+LIMITATIONS
+    This implementation of the MD5 algorithm has some limitations:
+
+    *   It's slow, very slow. I've done my very best but Digest::MD5 is
+        still about 100 times faster. You can only hash data up to one
+        million bytes in an acceptable time. But it's very useful for
+        hashing small amounts of data like passwords.
+
+    *   You can only hash up to 2^32 bits = 512 MB on 32-bit archs. But you
+        should use "Digest::MD5" for those amounts of data anyway.
+
+SEE ALSO
+    Digest::MD5
+
+    md5(1)
+
+    RFC 1321
+
+    tools/md5: a small BSD compatible md5 tool written in pure perl.
+
+COPYRIGHT
+    This library is free software; you can redistribute it and/or modify it
+    under the same terms as Perl itself.
+
+     Copyright 2000 Christian Lackas, Imperia Software Solutions
+     Copyright 1998-1999 Gisle Aas.
+     Copyright 1995-1996 Neil Winton.
+     Copyright 1991-1992 RSA Data Security, Inc.
+
+    The MD5 algorithm is defined in RFC 1321. The basic C code implementing
+    the algorithm is derived from that in the RFC and is covered by the
+    following copyright:
+
+    *   Copyright (C) 1991-1992, RSA Data Security, Inc. Created 1991. All
+        rights reserved.
+
+        License to copy and use this software is granted provided that it is
+        identified as the "RSA Data Security, Inc. MD5 Message-Digest
+        Algorithm" in all material mentioning or referencing this software
+        or this function.
+
+        License is also granted to make and use derivative works provided
+        that such works are identified as "derived from the RSA Data
+        Security, Inc. MD5 Message-Digest Algorithm" in all material
+        mentioning or referencing the derived work.
+
+        RSA Data Security, Inc. makes no representations concerning either
+        the merchantability of this software or the suitability of this
+        software for any particular purpose. It is provided "as is" without
+        express or implied warranty of any kind.
+
+        These notices must be retained in any copies of any part of this
+        documentation and/or software.
+
+    This copyright does not prohibit distribution of any version of Perl
+    containing this extension under the terms of the GNU or Artistic
+    licenses.
+
+AUTHORS
+    The original MD5 interface was written by Neil Winton (<N.Winton (at)
+    axion.bt.co.uk>).
+
+    "Digest::MD5" was made by Gisle Aas <gisle (at) aas.no> (I took his
+    Interface and part of the documentation).
+
+    Thanks to Guido Flohr for his 'use integer'-hint.
+
+    This release was made by Christian Lackas <delta (at) lackas.net>.
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Digest-Perl-MD5-1.9/lib/Digest/Perl/MD5.pm 
new/Digest-Perl-MD5-1.91/lib/Digest/Perl/MD5.pm
--- old/Digest-Perl-MD5-1.9/lib/Digest/Perl/MD5.pm      2013-12-13 
22:56:02.000000000 +0100
+++ new/Digest-Perl-MD5-1.91/lib/Digest/Perl/MD5.pm     2026-01-22 
10:49:18.000000000 +0100
@@ -6,8 +6,8 @@
 
 @EXPORT_OK = qw(md5 md5_hex md5_base64);
 
-@ISA = 'Exporter';
-$VERSION = '1.9';
+@ISA     = 'Exporter';
+$VERSION = '1.91';
 
 # I-Vektor
 sub A() { 0x67_45_23_01 }
@@ -20,73 +20,99 @@
 
 # pad a message to a multiple of 64
 sub padding {
-    my $l = length (my $msg = shift() . chr(128));    
-    $msg .= "\0" x (($l%64<=56?56:120)-$l%64);
-    $l = ($l-1)*8;
-    $msg .= pack 'VV', $l & MAX , ($l >> 16 >> 16);
+    my $l = length( my $msg = shift() . chr(128) );
+    $msg .= "\0" x ( ( $l % 64 <= 56 ? 56 : 120 ) - $l % 64 );
+    $l = ( $l - 1 ) * 8;
+    $msg .= pack 'VV', $l & MAX, ( $l >> 16 >> 16 );
 }
 
-
 sub rotate_left($$) {
-       #$_[0] << $_[1] | $_[0] >> (32 - $_[1]);
-       #my $right = $_[0] >> (32 - $_[1]);
-       #my $rmask = (1 << $_[1]) - 1;
-       ($_[0] << $_[1]) | (( $_[0] >> (32 - $_[1])  )  & ((1 << $_[1]) - 1));
-       #$_[0] << $_[1] | (($_[0]>> (32 - $_[1])) & (1 << (32 - $_[1])) - 1);
+
+    #$_[0] << $_[1] | $_[0] >> (32 - $_[1]);
+    #my $right = $_[0] >> (32 - $_[1]);
+    #my $rmask = (1 << $_[1]) - 1;
+    ( $_[0] << $_[1] ) |
+      ( ( $_[0] >> ( 32 - $_[1] ) ) & ( ( 1 << $_[1] ) - 1 ) );
+
+    #$_[0] << $_[1] | (($_[0]>> (32 - $_[1])) & (1 << (32 - $_[1])) - 1);
 }
 
 sub gen_code {
-  # Discard upper 32 bits on 64 bit archs.
-  my $MSK = ((1 << 16) << 16) ? ' & ' . MAX : '';
-#      FF => "X0=rotate_left(((X1&X2)|(~X1&X3))+X0+X4+X6$MSK,X5)+X1$MSK;",
-#      GG => "X0=rotate_left(((X1&X3)|(X2&(~X3)))+X0+X4+X6$MSK,X5)+X1$MSK;",
-  my %f = (
-       FF => "X0=rotate_left((X3^(X1&(X2^X3)))+X0+X4+X6$MSK,X5)+X1$MSK;",
-       GG => "X0=rotate_left((X2^(X3&(X1^X2)))+X0+X4+X6$MSK,X5)+X1$MSK;",
-       HH => "X0=rotate_left((X1^X2^X3)+X0+X4+X6$MSK,X5)+X1$MSK;",
-       II => "X0=rotate_left((X2^(X1|(~X3)))+X0+X4+X6$MSK,X5)+X1$MSK;",
-  );
-  #unless ( (1 << 16) << 16) { %f = %{$CODES{'32bit'}} }
-  #else { %f = %{$CODES{'64bit'}} }
-
-  my %s = (  # shift lengths
-       S11 => 7, S12 => 12, S13 => 17, S14 => 22, S21 => 5, S22 => 9, S23 => 
14,
-       S24 => 20, S31 => 4, S32 => 11, S33 => 16, S34 => 23, S41 => 6, S42 => 
10,
-       S43 => 15, S44 => 21
-  );
-
-  my $insert = "\n";
-  while(defined( my $data = <DATA> )) {
-       chomp $data;
-       next unless $data =~ /^[FGHI]/;
-       my ($func,@x) = split /,/, $data;
-       my $c = $f{$func};
-       $c =~ s/X(\d)/$x[$1]/g;
-       $c =~ s/(S\d{2})/$s{$1}/;
-       $c =~ s/^(.*)=rotate_left\((.*),(.*)\)\+(.*)$//;
-
-       my $su = 32 - $3;
-       my $sh = (1 << $3) - 1;
-
-       $c = "$1=(((\$r=$2)<<$3)|((\$r>>$su)&$sh))+$4";
-
-       #my $rotate = "(($2 << $3) || (($2 >> (32 - $3)) & (1 << $2) - 1)))"; 
-       # $c = "\$r = $2;
-       # $1 = ((\$r << $3) | ((\$r >> (32 - $3))  & ((1 << $3) - 1))) + $4";
-       $insert .= "\t$c\n";
-  }
-  close DATA;
-  
-  my $dump = '
+
+    # Discard upper 32 bits on 64 bit archs.
+    my $MSK = ( ( 1 << 16 ) << 16 ) ? ' & ' . MAX : '';
+
+    #  FF => "X0=rotate_left(((X1&X2)|(~X1&X3))+X0+X4+X6$MSK,X5)+X1$MSK;",
+    #  GG => "X0=rotate_left(((X1&X3)|(X2&(~X3)))+X0+X4+X6$MSK,X5)+X1$MSK;",
+    # Only mask before rotate, not after; final mask in round() return
+    my %f = (
+        FF => "X0=rotate_left((X3^(X1&(X2^X3)))+X0+X4+X6$MSK,X5)+X1;",
+        GG => "X0=rotate_left((X2^(X3&(X1^X2)))+X0+X4+X6$MSK,X5)+X1;",
+        HH => "X0=rotate_left((X1^X2^X3)+X0+X4+X6$MSK,X5)+X1;",
+        II => "X0=rotate_left((X2^(X1|(~X3)))+X0+X4+X6$MSK,X5)+X1;",
+    );
+
+    #unless ( (1 << 16) << 16) { %f = %{$CODES{'32bit'}} }
+    #else { %f = %{$CODES{'64bit'}} }
+
+    my %s = (    # shift lengths
+        S11 => 7,
+        S12 => 12,
+        S13 => 17,
+        S14 => 22,
+        S21 => 5,
+        S22 => 9,
+        S23 => 14,
+        S24 => 20,
+        S31 => 4,
+        S32 => 11,
+        S33 => 16,
+        S34 => 23,
+        S41 => 6,
+        S42 => 10,
+        S43 => 15,
+        S44 => 21
+    );
+
+    my $insert = "\n";
+    while ( defined( my $data = <DATA> ) ) {
+        chomp $data;
+        next unless $data =~ /^[FGHI]/;
+        my ( $func, @x ) = split /,/, $data;
+        my $c = $f{$func};
+        $c =~ s/X(\d)/$x[$1]/g;
+        $c =~ s/(S\d{2})/$s{$1}/;
+        $c =~ s/^(.*)=rotate_left\((.*),(.*)\)\+(.*)$//;
+
+        my $su = 32 - $3;
+        my $sh = ( 1 << $3 ) - 1;
+
+        $c = "$1=(((\$r=$2)<<$3)|((\$r>>$su)&$sh))+$4";
+
+        #my $rotate = "(($2 << $3) || (($2 >> (32 - $3)) & (1 << $2) - 1)))";
+        # $c = "\$r = $2;
+        # $1 = ((\$r << $3) | ((\$r >> (32 - $3))  & ((1 << $3) - 1))) + $4";
+        $insert .= "\t$c\n";
+    }
+    close DATA;
+
+    my $dump = '
   sub round {
        my ($a,$b,$c,$d) = @_[0 .. 3];
        my $r;' . $insert . '
-       $_[0]+$a' . $MSK . ', $_[1]+$b ' . $MSK . 
-        ', $_[2]+$c' . $MSK . ', $_[3]+$d' . $MSK . ';
+       ($_[0]+$a)'
+      . $MSK
+      . ', ($_[1]+$b)'
+      . $MSK
+      . ', ($_[2]+$c)'
+      . $MSK
+      . ', ($_[3]+$d)'
+      . $MSK . ';
   }';
-  eval $dump;
-  # print "$dump\n";
-  # exit 0;
+    eval $dump;
+
+    # print "$dump\n";
+    # exit 0;
 }
 
 gen_code();
@@ -94,132 +120,134 @@
 #########################################
 # Private output converter functions:
 sub _encode_hex { unpack 'H*', $_[0] }
+
 sub _encode_base64 {
-       my $res;
-       while ($_[0] =~ /(.{1,45})/gs) {
-               $res .= substr pack('u', $1), 1;
-               chop $res;
-       }
-       $res =~ tr|` -_|AA-Za-z0-9+/|;#`
-       chop $res; chop $res;
-       $res
+    my $res;
+    while ( $_[0] =~ /(.{1,45})/gs ) {
+        $res .= substr pack( 'u', $1 ), 1;
+        chop $res;
+    }
+    $res =~ tr|` -_|AA-Za-z0-9+/|;    #`
+    chop $res;
+    chop $res;
+    $res;
 }
 
 #########################################
 # OOP interface:
 sub new {
-       my $proto = shift;
-       my $class = ref $proto || $proto;
-       my $self = {};
-       bless $self, $class;
-       $self->reset();
-       $self
+    my $proto = shift;
+    my $class = ref $proto || $proto;
+    my $self  = {};
+    bless $self, $class;
+    $self->reset();
+    $self;
 }
 
 sub reset {
-       my $self = shift;
-       delete $self->{_data};
-       $self->{_state} = [A,B,C,D];
-       $self->{_length} = 0;
-       $self
+    my $self = shift;
+    delete $self->{_data};
+    $self->{_state}  = [ A, B, C, D ];
+    $self->{_length} = 0;
+    $self;
 }
 
 sub add {
-       my $self = shift;
-       $self->{_data} .= join '', @_ if @_;
-       my ($i,$c);
-       for $i (0 .. (length $self->{_data})/64-1) {
-               my @X = unpack 'V16', substr $self->{_data}, $i*64, 64;
-               @{$self->{_state}} = round(@{$self->{_state}},@X);
-               ++$c;
-       }
-       if ($c) {
-               substr ($self->{_data}, 0, $c*64) = '';
-               $self->{_length} += $c*64;
-       }
-       $self
+    my $self = shift;
+    $self->{_data} .= join '', @_ if @_;
+    my ( $i, $c );
+    for $i ( 0 .. ( length $self->{_data} ) / 64 - 1 ) {
+        my @X = unpack 'V16', substr $self->{_data}, $i * 64, 64;
+        @{ $self->{_state} } = round( @{ $self->{_state} }, @X );
+        ++$c;
+    }
+    if ($c) {
+        substr( $self->{_data}, 0, $c * 64 ) = '';
+        $self->{_length} += $c * 64;
+    }
+    $self;
 }
 
 sub finalize {
-       my $self = shift;
-       $self->{_data} .= chr(128);
+    my $self = shift;
+    $self->{_data} .= chr(128);
     my $l = $self->{_length} + length $self->{_data};
-    $self->{_data} .= "\0" x (($l%64<=56?56:120)-$l%64);
-    $l = ($l-1)*8;
-    $self->{_data} .= pack 'VV', $l & MAX , ($l >> 16 >> 16);
-       $self->add();
-       $self
+    $self->{_data} .= "\0" x ( ( $l % 64 <= 56 ? 56 : 120 ) - $l % 64 );
+    $l = ( $l - 1 ) * 8;
+    $self->{_data} .= pack 'VV', $l & MAX, ( $l >> 16 >> 16 );
+    $self->add();
+    $self;
 }
 
 sub addfile {
-       my ($self,$fh) = @_;
-       if (!ref($fh) && ref(\$fh) ne "GLOB") {
-           require Symbol;
-           $fh = Symbol::qualify($fh, scalar caller);
-       }
-       # $self->{_data} .= do{local$/;<$fh>};
-       my $read = 0;
-       my $buffer = '';
-       $self->add($buffer) while $read = read $fh, $buffer, 8192;
-       die __PACKAGE__, " read failed: $!" unless defined $read;
-       $self
+    my ( $self, $fh ) = @_;
+    if ( !ref($fh) && ref( \$fh ) ne "GLOB" ) {
+        require Symbol;
+        $fh = Symbol::qualify( $fh, scalar caller );
+    }
+
+    # $self->{_data} .= do{local$/;<$fh>};
+    my $read   = 0;
+    my $buffer = '';
+    $self->add($buffer) while $read = read $fh, $buffer, 8192;
+    die __PACKAGE__, " read failed: $!" unless defined $read;
+    $self;
 }
 
 sub add_bits {
-       my $self = shift;
-       return $self->add( pack 'B*', shift ) if @_ == 1;
-       my ($b,$n) = @_;
-       die __PACKAGE__, " Invalid number of bits\n" if $n%8;
-       $self->add( substr $b, 0, $n/8 )
+    my $self = shift;
+    return $self->add( pack 'B*', shift ) if @_ == 1;
+    my ( $b, $n ) = @_;
+    die __PACKAGE__, " Invalid number of bits\n" if $n % 8;
+    $self->add( substr $b, 0, $n / 8 );
 }
 
 sub digest {
-       my $self = shift;
-       $self->finalize();
-       my $res = pack 'V4', @{$self->{_state}};
-       $self->reset();
-       $res
+    my $self = shift;
+    $self->finalize();
+    my $res = pack 'V4', @{ $self->{_state} };
+    $self->reset();
+    $res;
 }
 
 sub hexdigest {
-       _encode_hex($_[0]->digest)
+    _encode_hex( $_[0]->digest );
 }
 
 sub b64digest {
-       _encode_base64($_[0]->digest)
+    _encode_base64( $_[0]->digest );
 }
 
 sub clone {
-       my $self = shift;
-       my $clone = { 
-               _state => [@{$self->{_state}}],
-               _length => $self->{_length},
-               _data => $self->{_data}
-       };
-       bless $clone, ref $self || $self;
+    my $self  = shift;
+    my $clone = {
+        _state  => [ @{ $self->{_state} } ],
+        _length => $self->{_length},
+        _data   => $self->{_data}
+    };
+    bless $clone, ref $self || $self;
 }
 
 #########################################
 # Procedural interface:
 sub md5 {
-       my $message = padding(join'',@_);
-       my ($a,$b,$c,$d) = (A,B,C,D);
-       my $i;
-       for $i (0 .. (length $message)/64-1) {
-               my @X = unpack 'V16', substr $message,$i*64,64; 
-               ($a,$b,$c,$d) = round($a,$b,$c,$d,@X);
-       }
-       pack 'V4',$a,$b,$c,$d;
+    my $message = padding( join '', @_ );
+    my ( $a, $b, $c, $d ) = ( A, B, C, D );
+    my $i;
+    for $i ( 0 .. ( length $message ) / 64 - 1 ) {
+        my @X = unpack 'V16', substr $message, $i * 64, 64;
+        ( $a, $b, $c, $d ) = round( $a, $b, $c, $d, @X );
+    }
+    pack 'V4', $a, $b, $c, $d;
 }
-sub md5_hex { _encode_hex &md5 } 
+sub md5_hex    { _encode_hex &md5 }
 sub md5_base64 { _encode_base64 &md5 }
 
-
 1;
 
 =head1 NAME
 
-Digest::MD5::Perl - Perl implementation of Ron Rivests MD5 Algorithm
+Digest::MD5::Perl - Perl implementation of Ron Rivest's MD5 Algorithm
 
 =head1 DISCLAIMER
 
@@ -236,7 +264,7 @@
 
 =item
 
-encrypting only small amounts of data (less than one million bytes). I use it 
to
+hashing only small amounts of data (less than one million bytes). I use it to
 hash passwords.
 
 =item
@@ -269,7 +297,7 @@
 
 =head1 DESCRIPTION
 
-This modules has the same interface as the much faster C<Digest::MD5>. So you 
can
+This module has the same interface as the much faster C<Digest::MD5>. So you 
can
 easily exchange them, e.g.
 
        BEGIN {
@@ -277,7 +305,7 @@
            require Digest::MD5;
            import Digest::MD5 'md5_hex'
          };
-         if ($@) { # ups, no Digest::MD5
+         if ($@) { # oops, no Digest::MD5
            require Digest::Perl::MD5;
            import Digest::Perl::MD5 'md5_hex'
          }             
@@ -290,7 +318,7 @@
 and use Digest::MD5 as normal, it falls back to Digest::Perl::MD5 if it
 cannot load its object files.
 
-For a detailed Documentation see the C<Digest::MD5> module.
+For detailed documentation see the C<Digest::MD5> module.
 
 =head1 EXAMPLES
 
@@ -317,7 +345,7 @@
     print "Digest is $digest\n";
 
 The digest methods are destructive. That means you can only call them
-once and the $md5 objects is reset after use. You can make a copy with clone:
+once and the $md5 object is reset after use. You can make a copy with clone:
 
        $md5->clone->hexdigest
 
@@ -330,12 +358,12 @@
 =item
 
 It's slow, very slow. I've done my very best but Digest::MD5 is still about 
100 times faster.
-You can only encrypt Data up to one million bytes in an acceptable time. But 
it's very useful
-for encrypting small amounts of data like passwords.
+You can only hash data up to one million bytes in an acceptable time. But it's 
very useful
+for hashing small amounts of data like passwords.
 
 =item
 
-You can only encrypt up to 2^32 bits = 512 MB on 32bit archs. But You should
+You can only hash up to 2^32 bits = 512 MB on 32-bit archs. But you should
 use C<Digest::MD5> for those amounts of data anyway.
 
 =back
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Digest-Perl-MD5-1.9/test.pl 
new/Digest-Perl-MD5-1.91/test.pl
--- old/Digest-Perl-MD5-1.9/test.pl     2013-04-11 11:20:14.000000000 +0200
+++ new/Digest-Perl-MD5-1.91/test.pl    2026-01-22 09:49:33.000000000 +0100
@@ -5,7 +5,7 @@
 use strict;
 use lib './lib';
 
-BEGIN {plan tests => 7}
+BEGIN {plan tests => 9}
 
 use Digest::Perl::MD5 qw(md5 md5_hex md5_base64);
 

++++++ README.md ++++++

## Build Results

Current state of perl in openSUSE:Factory is

![Factory build 
results](https://br.opensuse.org/status/openSUSE:Factory/perl-Digest-Perl-MD5/standard)

The current state of perl in the devel project build (devel:languages:perl)

![Devel project build 
results](https://br.opensuse.org/status/devel:languages:perl/perl-Digest-Perl-MD5)



++++++ _scmsync.obsinfo ++++++
mtime: 1769926330
commit: 7166fbd6c2407a1c0b8448f9b519cffb987529ef862c7985f758e241034726a8
url: https://src.opensuse.org/perl/perl-Digest-Perl-MD5.git
revision: 7166fbd6c2407a1c0b8448f9b519cffb987529ef862c7985f758e241034726a8
projectscmsync: https://src.opensuse.org/perl/_ObsPrj

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-02-08 21:48:59.000000000 +0100
@@ -0,0 +1 @@
+.osc

Reply via email to