Security Advisories (5)
CVE-2011-3599 (2011-10-10)

The Crypt::DSA (aka Crypt-DSA) module 1.17 and earlier for Perl, when /dev/random is absent, uses the Data::Random module, which makes it easier for remote attackers to spoof a signature, or determine the signing key of a signed message, via a brute-force attack.

CVE-2026-8700 (2026-05-15)

Crypt::DSA versions before 1.20 for Perl generate seeds using rand. Seeds were generated using Perl's built-in rand function, which is predictable and unsuitable for security usage.

CVE-2026-8704 (2026-05-15)

Crypt::DSA versions through 1.19 for Perl use 2-args open, allowing existing files to be modified.

CVE-2026-12205 (2026-06-15)

Crypt::DSA versions before 1.21 for Perl reused the nonce across signatures, leading to private-key recovery. Crypt::DSA::sign caches the per-signature nonce material in the Key object without ever clearing it. The first sign() on a Key object picks a nonce, and every later sign() on that same object reuses it, producing an identical "r". Keys used to sign more than once with an affected version should be considered compromised.

CVE-2026-14570 (2026-07-05)

Crypt::DSA versions before 1.22 for Perl draw the DSA signing nonce and private key from a biased random generator, leading to private-key recovery. "Crypt::DSA::Util::makerandom forces the high bit of every value it returns to obtain an exactly N-bit integer for prime search. The signing nonce and the private key are drawn from makerandom. Because the high bit is always set, the result is not uniform: its top bit is fixed, producing insecure values." An attacker who collects a modest number of signatures under an affected key, together with the public key, can recover the private key with a lattice attack. Keys used to sign with an affected version should be considered compromised and new keys should be generated.

NAME

Crypt::DSA::Signature - DSA signature object

SYNOPSIS

use Crypt::DSA::Signature;
my $sig = Crypt::DSA::Signature->new;

$sig->r($r);
$sig->s($s);

DESCRIPTION

Crypt::DSA::Signature represents a DSA signature. It has 2 methods, r and s, which are the big number representations of the 2 pieces of the DSA signature.

USAGE

Crypt::DSA::Signature->new( %options )

Creates a new signature object, and optionally initializes it with the information in %options, which can contain:

  • Content

    An ASN.1-encoded string representing the DSA signature. In ASN.1 notation, this looks like:

    SEQUENCE {
        r INTEGER,
        s INTEGER
    }

    If Content is provided, new will automatically call the deserialize method to parse the content, and set the r and s methods on the resulting Crypt::DSA::Signature object.

$sig->serialize

Serializes the signature object $sig into the format described above: an ASN.1-encoded representation of the signature, using the ASN.1 syntax above.

AUTHOR & COPYRIGHTS

Please see the Crypt::DSA manpage for author, copyright, and license information.