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.304 second using v1.01-cache-2.11-cpan-4d50c553e7e )