← Index
NYTProf Performance Profile   « line view »
For /usr/local/libexec/sympa/task_manager-debug.pl
  Run on Tue Jun 1 22:32:51 2021
Reported on Tue Jun 1 22:35:14 2021

Filename/usr/local/lib/perl5/site_perl/Mail/DKIM/Algorithm/rsa_sha256.pm
StatementsExecuted 0 statements in 0s
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
0000s0sMail::DKIM::Algorithm::rsa_sha256::::BEGIN@14Mail::DKIM::Algorithm::rsa_sha256::BEGIN@14
0000s0sMail::DKIM::Algorithm::rsa_sha256::::BEGIN@15Mail::DKIM::Algorithm::rsa_sha256::BEGIN@15
0000s0sMail::DKIM::Algorithm::rsa_sha256::::BEGIN@16Mail::DKIM::Algorithm::rsa_sha256::BEGIN@16
0000s0sMail::DKIM::Algorithm::rsa_sha256::::BEGIN@17Mail::DKIM::Algorithm::rsa_sha256::BEGIN@17
0000s0sMail::DKIM::Algorithm::rsa_sha256::::BEGIN@2Mail::DKIM::Algorithm::rsa_sha256::BEGIN@2
0000s0sMail::DKIM::Algorithm::rsa_sha256::::BEGIN@3Mail::DKIM::Algorithm::rsa_sha256::BEGIN@3
0000s0sMail::DKIM::Algorithm::rsa_sha256::::init_digestsMail::DKIM::Algorithm::rsa_sha256::init_digests
0000s0sMail::DKIM::Algorithm::rsa_sha256::::signMail::DKIM::Algorithm::rsa_sha256::sign
0000s0sMail::DKIM::Algorithm::rsa_sha256::::verifyMail::DKIM::Algorithm::rsa_sha256::verify
0000s0sMail::DKIM::Algorithm::rsa_sha256::::wants_pre_signature_headersMail::DKIM::Algorithm::rsa_sha256::wants_pre_signature_headers
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package Mail::DKIM::Algorithm::rsa_sha256;
2use strict;
3use warnings;
4our $VERSION = '1.20200907'; # VERSION
5# ABSTRACT: rsa sha256 algorithm class
6
7# Copyright 2005-2006 Messiah College. All rights reserved.
8# Jason Long <jlong@messiah.edu>
9
10# Copyright (c) 2004 Anthony D. Urso. All rights reserved.
11# This program is free software; you can redistribute it and/or
12# modify it under the same terms as Perl itself.
13
14use base 'Mail::DKIM::Algorithm::Base';
15use Carp;
16use MIME::Base64;
17use Digest::SHA;
18
19sub init_digests {
20 my $self = shift;
21
22 # initialize a SHA-256 Digest
23 $self->{header_digest} = new Digest::SHA(256);
24 $self->{body_digest} = new Digest::SHA(256);
25}
26
27sub sign {
28 my $self = shift;
29 croak 'wrong number of arguments' unless ( @_ == 1 );
30 my ($private_key) = @_;
31
32 my $digest = $self->{header_digest}->digest;
33 my $signature = $private_key->sign_digest( 'SHA-256', $digest );
34
35 return encode_base64( $signature, '' );
36}
37
38sub verify {
39 my $self = shift;
40 croak 'wrong number of arguments' unless ( @_ == 0 );
41
42 my $base64 = $self->signature->data;
43 my $public_key = $self->signature->get_public_key;
44
45 my $digest = $self->{header_digest}->digest;
46 my $sig = decode_base64($base64);
47 return unless $public_key->verify_digest( 'SHA-256', $digest, $sig );
48 return $self->check_body_hash;
49}
50
51sub wants_pre_signature_headers {
52 return 1;
53}
54
551;
56
57__END__