Crypt-VERPString

 view release on metacpan or  search on metacpan

META.yml  view on Meta::CPAN

# http://module-build.sourceforge.net/META-spec.html
#XXXXXXX This is a prototype!!!  It will change in the future!!! XXXXX#
name:         Crypt-VERPString
version:      0.02
version_from: lib/Crypt/VERPString.pm
installdirs:  site
requires:
    Crypt::Blowfish:               0
    Crypt::CBC:                    0
    MIME::Base32:                  0
    Test::More:                    0

distribution_type: module
generated_by: ExtUtils::MakeMaker version 6.17

Makefile.PL  view on Meta::CPAN

use warnings;
use ExtUtils::MakeMaker;

WriteMakefile(
    NAME                => 'Crypt::VERPString',
    AUTHOR              => 'dorian taylor <dorian@cpan.org>',
    VERSION_FROM        => 'lib/Crypt/VERPString.pm',
    ABSTRACT_FROM       => 'lib/Crypt/VERPString.pm',
    PL_FILES            => {},
    PREREQ_PM => {
        'Crypt::CBC'        => 0,
        'Crypt::Blowfish'   => 0,
        'MIME::Base32'      => 0,
        'Test::More'        => 0,
    },
    dist                => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
    clean               => { FILES => 'Crypt-VERPString-*' },
);

lib/Crypt/VERPString.pm  view on Meta::CPAN

package Crypt::VERPString;

use warnings FATAL => 'all';
use strict;

use Carp         qw(croak);
#use MIME::Base32 qw(rfc);
use MIME::Base32 qw(crockford);
use Crypt::CBC   ();

=head1 NAME

Crypt::VERPString - Encrypt and encode fixed-length records for VERP

=head1 VERSION

Version 0.02

=cut

lib/Crypt/VERPString.pm  view on Meta::CPAN

    defined $self->{key}       or croak 'Key must be defined';
    defined $self->{format}    or $self->{format}    = 'a*';
    defined $self->{separator} or $self->{separator} = '-';
    defined $self->{encoder}   or $self->{encoder}   = \&MIME::Base32::encode;
    defined $self->{decoder}   or $self->{decoder}   = \&MIME::Base32::decode;
    $self;
}

sub _get_cipher {
    my ($self, $iv) = @_;
    Crypt::CBC->new({
        key             => $self->{key},
        cipher          => $self->{cipher},
        iv              => pack('NN', $iv, 0), # we could use more entropy...
        regenerate_key  => 0,
        prepend_iv      => 0,
    });
}

#=head2 set_iv NUMBER

lib/Crypt/VERPString.pm  view on Meta::CPAN

    my @payload = unpack $self->{format}, $cv->decrypt($ciphertext);
    return wantarray ? @payload : $payload[0];
}

=head1 AUTHOR

dorian taylor, C<< <dorian@cpan.org> >>

=head1 SEE ALSO

L<Crypt::CBC>

L<MIME::Base32>

L<http://cr.yp.to/proto/verp.txt>

=head1 BUGS

The true IV is just the given number and zero, packed into two network longs. 
I wouldn't recommend really using this for extremely sensitive data, I mean,
it's initially designed to fit in the local-part of an email. Ideas and



( run in 1.456 second using v1.01-cache-2.11-cpan-e1769b4cff6 )