Codebase list libcryptx-perl / v0.040 _generators / Mac.pm.tt
v0.040

Tree @v0.040 (Download .tar.gz)

Mac.pm.tt @v0.040raw · history · blame

package Crypt::Mac::[%orig_name%];

[%comment%]

use strict;
use warnings;

use base qw(Crypt::Mac Exporter);
our %EXPORT_TAGS = ( all => [qw( [%lc_name%] [%lc_name%]_hex [%lc_name%]_b64 [%lc_name%]_b64u )] );
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
our @EXPORT = qw();

use CryptX;
[%-IF lc_name == 'hmac' %]
use Crypt::Digest;

sub new { my $class = shift; _new(Crypt::Digest::_trans_digest_name(shift), @_) }
sub [%lc_name%] { Crypt::Mac::[%orig_name%]->new(shift, shift)->add(@_)->mac }
sub [%lc_name%]_hex  { Crypt::Mac::[%orig_name%]->new(shift, shift)->add(@_)->hexmac }
sub [%lc_name%]_b64  { Crypt::Mac::[%orig_name%]->new(shift, shift)->add(@_)->b64mac }
sub [%lc_name%]_b64u { Crypt::Mac::[%orig_name%]->new(shift, shift)->add(@_)->b64umac }
[%-ELSIF lc_name == 'pelican' %]
sub new { my $class = shift; _new(@_) }
sub [%lc_name%] { Crypt::Mac::[%orig_name%]->new(shift)->add(@_)->mac }
sub [%lc_name%]_hex  { Crypt::Mac::[%orig_name%]->new(shift)->add(@_)->hexmac }
sub [%lc_name%]_b64  { Crypt::Mac::[%orig_name%]->new(shift)->add(@_)->b64mac }
sub [%lc_name%]_b64u { Crypt::Mac::[%orig_name%]->new(shift)->add(@_)->b64umac }
[%-ELSE%]
use Crypt::Cipher;

sub new { my $class = shift; _new(Crypt::Cipher::_trans_cipher_name(shift), @_) }
sub [%lc_name%] { Crypt::Mac::[%orig_name%]->new(shift, shift)->add(@_)->mac }
sub [%lc_name%]_hex  { Crypt::Mac::[%orig_name%]->new(shift, shift)->add(@_)->hexmac }
sub [%lc_name%]_b64  { Crypt::Mac::[%orig_name%]->new(shift, shift)->add(@_)->b64mac }
sub [%lc_name%]_b64u { Crypt::Mac::[%orig_name%]->new(shift, shift)->add(@_)->b64umac }
[%-END%]

1;

=pod

=head1 NAME

Crypt::Mac::[%orig_name%] - [%info%]

=head1 SYNOPSIS

   ### Functional interface:
   use Crypt::Mac::[%orig_name%] qw( [%lc_name%] [%lc_name%]_hex );

   # calculate MAC from string/buffer
[%-IF lc_name == 'hmac' %]
   $[%lc_name%]_raw  = [%lc_name%]('SHA256', $key, 'data buffer');
   $[%lc_name%]_hex  = [%lc_name%]_hex('SHA256', $key, 'data buffer');
   $[%lc_name%]_b64  = [%lc_name%]_b64('SHA256', $key, 'data buffer');
   $[%lc_name%]_b64u = [%lc_name%]_b64u('SHA256', $key, 'data buffer');
[%-ELSIF lc_name == 'pelican' %]
   $[%lc_name%]_raw  = [%lc_name%]($key, 'data buffer');
   $[%lc_name%]_hex  = [%lc_name%]_hex($key, 'data buffer');
   $[%lc_name%]_b64  = [%lc_name%]_b64($key, 'data buffer');
   $[%lc_name%]_b64u = [%lc_name%]_b64u($key, 'data buffer');
[%-ELSE%]
   $[%lc_name%]_raw  = [%lc_name%]($cipher_name, $key, 'data buffer');
   $[%lc_name%]_hex  = [%lc_name%]_hex($cipher_name, $key, 'data buffer');
   $[%lc_name%]_b64  = [%lc_name%]_b64($cipher_name, $key, 'data buffer');
   $[%lc_name%]_b64u = [%lc_name%]_b64u($cipher_name, $key, 'data buffer');
[%-END%]

   ### OO interface:
   use Crypt::Mac::[%orig_name%];

[%-IF lc_name == 'hmac' %]
   $d = Crypt::Mac::[%orig_name%]->new('SHA256', $key);
[%-ELSIF lc_name == 'pelican' %]
   $d = Crypt::Mac::[%orig_name%]->new($key);
[%-ELSE%]
   $d = Crypt::Mac::[%orig_name%]->new($cipher_name, $key);
[%-END%]
   $d->add('any data');
   $d->addfile('filename.dat');
   $d->addfile(*FILEHANDLE);
   $result_raw  = $d->mac;     # raw bytes
   $result_hex  = $d->hexmac;  # hexadecimal form
   $result_b64  = $d->b64mac;  # Base64 form
   $result_b64u = $d->b64umac; # Base64 URL Safe form

=head1 DESCRIPTION

Provides an interface to the [%orig_name%] message authentication code (MAC) algorithm.

=head1 EXPORT

Nothing is exported by default.

You can export selected functions:

  use Crypt::Mac::[%orig_name%] qw([%lc_name%] [%lc_name%]_hex );

Or all of them at once:

  use Crypt::Mac::[%orig_name%] ':all';

=head1 FUNCTIONS

=head2 [%lc_name%]

Logically joins all arguments into a single string, and returns its [%orig_name%] message authentication code encoded as a binary string.

[%-IF lc_name == 'hmac' %]
 $[%lc_name%]_raw = [%lc_name%]($hash_name, $key, 'data buffer');
 #or
 $[%lc_name%]_raw = [%lc_name%]($hash_name, $key, 'any data', 'more data', 'even more data');
[%-ELSIF lc_name == 'pelican' %]
 $[%lc_name%]_raw = [%lc_name%]($key, 'data buffer');
 #or
 $[%lc_name%]_raw = [%lc_name%]($key, 'any data', 'more data', 'even more data');
[%-ELSE%]
 $[%lc_name%]_raw = [%lc_name%]($cipher_name, $key, 'data buffer');
 #or
 $[%lc_name%]_raw = [%lc_name%]($cipher_name, $key, 'any data', 'more data', 'even more data');
[%-END%]

=head2 [%lc_name%]_hex

Logically joins all arguments into a single string, and returns its [%orig_name%] message authentication code encoded as a hexadecimal string.

[%-IF lc_name == 'hmac' %]
 $[%lc_name%]_hex = [%lc_name%]_hex($hash_name, $key, 'data buffer');
 #or
 $[%lc_name%]_hex = [%lc_name%]_hex($hash_name, $key, 'any data', 'more data', 'even more data');
[%-ELSIF lc_name == 'pelican' %]
 $[%lc_name%]_hex = [%lc_name%]_hex($key, 'data buffer');
 #or
 $[%lc_name%]_hex = [%lc_name%]_hex($key, 'any data', 'more data', 'even more data');
[%-ELSE%]
 $[%lc_name%]_hex = [%lc_name%]_hex($cipher_name, $key, 'data buffer');
 #or
 $[%lc_name%]_hex = [%lc_name%]_hex($cipher_name, $key, 'any data', 'more data', 'even more data');
[%-END%]

=head2 [%lc_name%]_b64

Logically joins all arguments into a single string, and returns its [%orig_name%] message authentication code encoded as a Base64 string.

[%-IF lc_name == 'hmac' %]
 $[%lc_name%]_b64 = [%lc_name%]_b64($hash_name, $key, 'data buffer');
 #or
 $[%lc_name%]_b64 = [%lc_name%]_b64($hash_name, $key, 'any data', 'more data', 'even more data');
[%-ELSIF lc_name == 'pelican' %]
 $[%lc_name%]_b64 = [%lc_name%]_b64($key, 'data buffer');
 #or
 $[%lc_name%]_b64 = [%lc_name%]_b64($key, 'any data', 'more data', 'even more data');
[%-ELSE%]
 $[%lc_name%]_b64 = [%lc_name%]_b64($cipher_name, $key, 'data buffer');
 #or
 $[%lc_name%]_b64 = [%lc_name%]_b64($cipher_name, $key, 'any data', 'more data', 'even more data');
[%-END%]

=head2 [%lc_name%]_b64u

Logically joins all arguments into a single string, and returns its [%orig_name%] message authentication code encoded as a Base64 URL Safe string (see RFC 4648 section 5).

[%-IF lc_name == 'hmac' %]
 $[%lc_name%]_b64url = [%lc_name%]_b64u($hash_name, $key, 'data buffer');
 #or
 $[%lc_name%]_b64url = [%lc_name%]_b64u($hash_name, $key, 'any data', 'more data', 'even more data');
[%-ELSIF lc_name == 'pelican' %]
 $[%lc_name%]_b64url = [%lc_name%]_b64u($key, 'data buffer');
 #or
 $[%lc_name%]_b64url = [%lc_name%]_b64u($key, 'any data', 'more data', 'even more data');
[%-ELSE%]
 $[%lc_name%]_b64url = [%lc_name%]_b64u($cipher_name, $key, 'data buffer');
 #or
 $[%lc_name%]_b64url = [%lc_name%]_b64u($cipher_name, $key, 'any data', 'more data', 'even more data');
[%-END%]

=head1 METHODS

=head2 new

[%-IF lc_name == 'hmac' %]
 $d = Crypt::Mac::[%orig_name%]->new($hash_name, $key);
[%-ELSIF lc_name == 'pelican' %]
 $d = Crypt::Mac::[%orig_name%]->new($key);
[%-ELSE%]
 $d = Crypt::Mac::[%orig_name%]->new($cipher_name, $key);
[%-END%]

=head2 clone

 $d->clone();

=head2 reset

 $d->reset();

=head2 add

 $d->add('any data');
 #or
 $d->add('any data', 'more data', 'even more data');

=head2 addfile

 $d->addfile('filename.dat');
 #or
 $d->addfile(*FILEHANDLE);

=head2 mac

 $result_raw = $d->mac();

=head2 hexmac

 $result_hex = $d->hexmac();

=head2 b64mac

 $result_b64 = $d->b64mac();

=head2 b64umac

 $result_b64url = $d->b64umac();

=head1 SEE ALSO

=over

=item * L<CryptX|CryptX>
[% FOREACH v IN urls %]
=item * L<[%v%]|[%v%]>
[% END %]
=back

=cut

__END__