/usr/share/perl5/Mail/DKIM/Key.pm is in libmail-dkim-perl 0.39-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | #!/usr/bin/perl
#
# Copyright 2006 Jason Long. All rights reserved.
#
# Copyright (c) 2004 Anthony D. Urso. All rights reserved.
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.
package Mail::DKIM::Key;
use strict;
sub cork {
my $self = shift;
(@_) and
$self->{'CORK'} = shift;
$self->{'CORK'} or
$self->convert;
$self->{'CORK'};
}
sub data {
my $self = shift;
(@_) and
$self->{'DATA'} = shift;
$self->{'DATA'};
}
sub errorstr {
my $self = shift;
(@_) and
$self->{'ESTR'} = shift;
$self->{'ESTR'};
}
sub size {
my $self = shift;
return $self->cork->size * 8;
}
sub type {
my $self = shift;
(@_) and
$self->{'TYPE'} = shift;
$self->{'TYPE'};
}
sub calculate_EM
{
my ($digest_algorithm, $digest, $emLen) = @_;
# this function performs DER encoding of the algorithm ID for the
# hash function and the hash value itself
# It has this syntax:
# DigestInfo ::= SEQUENCE {
# digestAlgorithm AlgorithmIdentifier,
# digest OCTET STRING
# }
# RFC 3447, page 42, provides the following octet values:
my %digest_encoding = (
"SHA-1" => pack("H*", "3021300906052B0E03021A05000414"),
"SHA-256" => pack("H*", "3031300d060960864801650304020105000420"),
);
defined $digest_encoding{$digest_algorithm}
or die "Unsupported digest algorithm '$digest_algorithm'";
my $T = $digest_encoding{$digest_algorithm} . $digest;
my $tLen = length($T);
if ($emLen < $tLen + 11)
{
die "Intended encoded message length too short.";
}
my $PS = chr(0xff) x ($emLen - $tLen - 3);
my $EM = chr(0) . chr(1) . $PS . chr(0) . $T;
return $EM;
}
1;
|