← 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/Canonicalization/simple.pm
StatementsExecuted 0 statements in 0s
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
0000s0sMail::DKIM::Canonicalization::simple::::BEGIN@13Mail::DKIM::Canonicalization::simple::BEGIN@13
0000s0sMail::DKIM::Canonicalization::simple::::BEGIN@14Mail::DKIM::Canonicalization::simple::BEGIN@14
0000s0sMail::DKIM::Canonicalization::simple::::BEGIN@2Mail::DKIM::Canonicalization::simple::BEGIN@2
0000s0sMail::DKIM::Canonicalization::simple::::BEGIN@3Mail::DKIM::Canonicalization::simple::BEGIN@3
0000s0sMail::DKIM::Canonicalization::simple::::canonicalize_bodyMail::DKIM::Canonicalization::simple::canonicalize_body
0000s0sMail::DKIM::Canonicalization::simple::::canonicalize_headerMail::DKIM::Canonicalization::simple::canonicalize_header
0000s0sMail::DKIM::Canonicalization::simple::::finish_bodyMail::DKIM::Canonicalization::simple::finish_body
0000s0sMail::DKIM::Canonicalization::simple::::initMail::DKIM::Canonicalization::simple::init
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::Canonicalization::simple;
2use strict;
3use warnings;
4our $VERSION = '1.20200907'; # VERSION
5# ABSTRACT: simple canonicalization
6
7# Copyright 2005 Messiah College. All rights reserved.
8# Jason Long <jlong@messiah.edu>
9
10# This program is free software; you can redistribute it and/or
11# modify it under the same terms as Perl itself.
12
13use base 'Mail::DKIM::Canonicalization::DkimCommon';
14use Carp;
15
16sub init {
17 my $self = shift;
18 $self->SUPER::init;
19
20 $self->{canonicalize_body_empty_lines} = 0;
21}
22
23sub canonicalize_header {
24 my $self = shift;
25 croak 'wrong number of parameters' unless ( @_ == 1 );
26 my ($line) = @_;
27
28 #
29 # draft-allman-dkim-base-01.txt, section 3.4.1:
30 # the "simple" header field canonicalization algorithm does not
31 # change the header field in any way
32 #
33
34 return $line;
35}
36
37sub canonicalize_body {
38 my $self = shift;
39 my ($multiline) = @_;
40
41 #
42 # draft-allman-dkim-base-01.txt, section 3.4.3:
43 # the "simple" body canonicalization algorithm ignores all
44 # empty lines at the end of the message body
45 #
46
47 #
48 # (i.e. do not emit empty lines until a following nonempty line
49 # is found)
50 #
51 my $empty_lines = $self->{canonicalize_body_empty_lines};
52
53 if ( $multiline =~ s/^((?:\015\012)+)// )
54 { # count & strip leading empty lines
55 $empty_lines += length($1) / 2;
56 }
57
58 if ( length($multiline) > 0 ) {
59 $self->{canonicalize_body_started} = 1;
60 if ( $empty_lines > 0 )
61 { # re-insert leading white if any nonempty lines exist
62 $multiline = ( "\015\012" x $empty_lines ) . $multiline;
63 $empty_lines = 0;
64 }
65 }
66
67 while ( $multiline =~ /\015\012\015\012\z/ )
68 { # count & strip trailing empty lines
69 chop $multiline;
70 chop $multiline;
71 $empty_lines++;
72 }
73
74 $self->{canonicalize_body_empty_lines} = $empty_lines;
75 return $multiline;
76}
77
78sub finish_body {
79 my $self = shift;
80 $self->{canonicalize_body_started}
81 or $self->output("\015\012");
82 $self->SUPER::finish_body;
83}
84
851;
86
87__END__