Mail-DKIM

 view release on metacpan or  search on metacpan

lib/Mail/DKIM/Algorithm/Base.pm  view on Meta::CPAN

from the algorithm.

=head2 finish_header() - signals the end of the header field block

  $algorithm->finish_header;

Call this method when all the headers have been submitted.

=head2 sign() - generates a signature using a private key

  $base64 = $algorithm->sign($private_key);

=head2 signature() - get/set the signature worked on by this algorithm

  my $old_signature = $algorithm->signature;
  $algorithm->signature($new_signature);

=head2 verify() - verifies a signature

  $result = $algorithm->verify();

lib/Mail/DKIM/Algorithm/dk_rsa_sha1.pm  view on Meta::CPAN

    my $self = shift;

    # initialize a SHA-1 Digest
    $self->{header_digest} = Digest::SHA->new(1);
    $self->{body_digest}   = $self->{header_digest};
}

sub sign {
    my $self = shift;
    croak 'wrong number of arguments' unless ( @_ == 1 );
    my ($private_key) = @_;

    my $digest = $self->{header_digest}->digest;
    my $signature = $private_key->sign_digest( 'SHA-1', $digest );

    return encode_base64( $signature, '' );
}

sub verify {
    my $self = shift;
    croak 'wrong number of arguments' unless ( @_ == 0 );

    my $base64     = $self->signature->data;
    my $public_key = $self->signature->get_public_key;

lib/Mail/DKIM/Algorithm/ed25519_sha256.pm  view on Meta::CPAN

    my $self = shift;

    # initialize a SHA-256 Digest
    $self->{header_digest} = new Digest::SHA(256);
    $self->{body_digest}   = new Digest::SHA(256);
}

sub sign {
    my $self = shift;
    croak 'wrong number of arguments' unless ( @_ == 1 );
    my ($private_key) = @_;

    my $digest = $self->{header_digest}->digest;
    my $signature = $private_key->sign_digest( 'SHA-256', $digest );

    return encode_base64( $signature, '' );
}

sub verify {
    my $self = shift;
    croak 'wrong number of arguments' unless ( @_ == 0 );

    my $base64     = $self->signature->data;
    my $public_key = $self->signature->get_public_key;

lib/Mail/DKIM/Algorithm/rsa_sha1.pm  view on Meta::CPAN

    my $self = shift;

    # initialize a SHA-1 Digest
    $self->{header_digest} = Digest::SHA->new(1);
    $self->{body_digest}   = Digest::SHA->new(1);
}

sub sign {
    my $self = shift;
    croak 'wrong number of arguments' unless ( @_ == 1 );
    my ($private_key) = @_;

    my $digest = $self->{header_digest}->digest;
    my $signature = $private_key->sign_digest( 'SHA-1', $digest );

    return encode_base64( $signature, '' );
}

sub verify {
    my $self = shift;
    croak 'wrong number of arguments' unless ( @_ == 0 );

    my $base64     = $self->signature->data;
    my $public_key = $self->signature->get_public_key;

lib/Mail/DKIM/Algorithm/rsa_sha256.pm  view on Meta::CPAN

    my $self = shift;

    # initialize a SHA-256 Digest
    $self->{header_digest} = new Digest::SHA(256);
    $self->{body_digest}   = new Digest::SHA(256);
}

sub sign {
    my $self = shift;
    croak 'wrong number of arguments' unless ( @_ == 1 );
    my ($private_key) = @_;

    my $digest = $self->{header_digest}->digest;
    my $signature = $private_key->sign_digest( 'SHA-256', $digest );

    return encode_base64( $signature, '' );
}

sub verify {
    my $self = shift;
    croak 'wrong number of arguments' unless ( @_ == 0 );

    my $base64     = $self->signature->data;
    my $public_key = $self->signature->get_public_key;

lib/Mail/DKIM/DkSignature.pm  view on Meta::CPAN

Create a new DomainKey signature from parameters

  my $signature = Mail::DKIM::DkSignature->new(
                      [ Algorithm => 'rsa-sha1', ]
                      [ Signature => $base64, ]
                      [ Method => 'simple', ]
                      [ Domain => 'example.org', ]
                      [ Headers => 'from:subject:date:message-id', ]
                      [ Query => 'dns', ]
                      [ Selector => 'alpha', ]
                      [ Key => $private_key, ]
                  );

=head2 parse()

Create a new signature from a DomainKey-Signature header

  my $sig = Mail::DKIM::DkSignature->parse(
                  'DomainKey-Signature: a=rsa-sha1; b=yluiJ7+0=; c=nofws'
            );

lib/Mail/DKIM/PrivateKey.pm  view on Meta::CPAN

        $pkcs .= substr $self->data, $i, 64;
        $pkcs .= "\n";
    }

    $pkcs .= "-----END RSA PRIVATE KEY-----\n";

    my $cork;

    eval {
        local $SIG{__DIE__};
        $cork = new_private_key Crypt::OpenSSL::RSA($pkcs);
    1
    } || do {
        $self->errorstr($@);
        return;
    };

    $cork
      or return;

    # segfaults on my machine

t/ArcTestSuite.pm  view on Meta::CPAN


sub RunScenario {
    my ( $self, $scenario ) = @_;

    my $description = $scenario->{'description'};
    my $tests       = $scenario->{'tests'};
    my $txt_records = $scenario->{'txt-records'} || q{};
    my $comment     = $scenario->{'comment'};
    my $domain      = $scenario->{'domain '};
    my $sel         = $scenario->{'sel'};
    my $private_key = $scenario->{'privatekey'} || q{};

    diag("--- $description ---") unless $ENV{HARNESS_ACTIVE};

    # remove key BEGIN / END
    if ($private_key) {
        my @chompkey = split( "\n", $private_key );
        $private_key = join( q{}, @chompkey[ 1 .. ( $#chompkey - 1 ) ] );
    }

    my $ZoneFile = q{};
    foreach my $Record ( sort keys %$txt_records ) {
        my $Txt = $txt_records->{$Record};
        $ZoneFile .= $Record . '. 60 TXT';
        foreach my $TxtLine ( split "\n", $Txt ) {
            $ZoneFile .= ' "' . $TxtLine . '"';
        }
        $ZoneFile .= "\n";

t/ArcTestSuite.pm  view on Meta::CPAN

        my $as         = $testhash->{'AS'};
        my $sigheaders = $testhash->{'sig-headers'};
        my $srvid      = $testhash->{'srv-id'} || $domain;
        my $t          = $testhash->{'t'};

        my $arc = Mail::DKIM::ARC::Signer->new(
            'Algorithm' => 'rsa-sha256',
            'Domain'    => $domain,
            'SrvId'     => $srvid,
            'Selector'  => $sel,
            'Key'   => Mail::DKIM::PrivateKey->load( 'Data' => $private_key ),
            'Chain' => 'ar'
            , # use the result from A-R, since message might have changed since verified
            'Headers'   => $sigheaders,
            'Timestamp' => $t,
        );
        $arc->{'NoDefaultHeaders'} = 1;
        $Mail::DKIM::SORTTAGS = 1;
        Mail::DKIM::DNS::resolver($FakeResolver);
        $arc->PRINT($message);
        $arc->CLOSE();



( run in 0.274 second using v1.01-cache-2.11-cpan-4d50c553e7e )