File-KDBX

 view release on metacpan or  search on metacpan

MANIFEST  view on Meta::CPAN

# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.025.
Changes
LICENSE
MANIFEST
META.json
META.yml
Makefile.PL
README
lib/File/KDBX.pm
lib/File/KDBX/Cipher.pm
lib/File/KDBX/Cipher/CBC.pm
lib/File/KDBX/Cipher/Stream.pm
lib/File/KDBX/Constants.pm
lib/File/KDBX/Dumper.pm
lib/File/KDBX/Dumper/KDB.pm
lib/File/KDBX/Dumper/Raw.pm
lib/File/KDBX/Dumper/V3.pm
lib/File/KDBX/Dumper/V4.pm
lib/File/KDBX/Dumper/XML.pm
lib/File/KDBX/Entry.pm
lib/File/KDBX/Error.pm

META.json  view on Meta::CPAN

            "Pass::OTP" : "0"
         },
         "requires" : {
            "Carp" : "0",
            "Crypt::Argon2" : "0",
            "Crypt::Cipher" : "0",
            "Crypt::Cipher::AES" : "0",
            "Crypt::Digest" : "0",
            "Crypt::Mac::HMAC" : "0",
            "Crypt::Misc" : "0.049",
            "Crypt::Mode::CBC" : "0",
            "Crypt::PRNG" : "0",
            "Crypt::Stream::ChaCha" : "0.048",
            "Crypt::Stream::Salsa20" : "0.055",
            "Data::Dumper" : "0",
            "Devel::GlobalDestruction" : "0",
            "Encode" : "0",
            "Exporter" : "0",
            "File::Temp" : "0",
            "Hash::Util::FieldHash" : "0",
            "IO::Handle" : "0",

META.json  view on Meta::CPAN

   },
   "provides" : {
      "File::KDBX" : {
         "file" : "lib/File/KDBX.pm",
         "version" : "0.906"
      },
      "File::KDBX::Cipher" : {
         "file" : "lib/File/KDBX/Cipher.pm",
         "version" : "0.906"
      },
      "File::KDBX::Cipher::CBC" : {
         "file" : "lib/File/KDBX/Cipher/CBC.pm",
         "version" : "0.906"
      },
      "File::KDBX::Cipher::Stream" : {
         "file" : "lib/File/KDBX/Cipher/Stream.pm",
         "version" : "0.906"
      },
      "File::KDBX::Constants" : {
         "file" : "lib/File/KDBX/Constants.pm",
         "version" : "0.906"
      },

META.yml  view on Meta::CPAN

    description: 'speed improvements (requires C compiler)'
    requires:
      File::KDBX::XS: '0'
provides:
  File::KDBX:
    file: lib/File/KDBX.pm
    version: '0.906'
  File::KDBX::Cipher:
    file: lib/File/KDBX/Cipher.pm
    version: '0.906'
  File::KDBX::Cipher::CBC:
    file: lib/File/KDBX/Cipher/CBC.pm
    version: '0.906'
  File::KDBX::Cipher::Stream:
    file: lib/File/KDBX/Cipher/Stream.pm
    version: '0.906'
  File::KDBX::Constants:
    file: lib/File/KDBX/Constants.pm
    version: '0.906'
  File::KDBX::Dumper:
    file: lib/File/KDBX/Dumper.pm
    version: '0.906'

META.yml  view on Meta::CPAN

  IO::Uncompress::Gunzip: '0'
  Pass::OTP: '0'
requires:
  Carp: '0'
  Crypt::Argon2: '0'
  Crypt::Cipher: '0'
  Crypt::Cipher::AES: '0'
  Crypt::Digest: '0'
  Crypt::Mac::HMAC: '0'
  Crypt::Misc: '0.049'
  Crypt::Mode::CBC: '0'
  Crypt::PRNG: '0'
  Crypt::Stream::ChaCha: '0.048'
  Crypt::Stream::Salsa20: '0.055'
  Data::Dumper: '0'
  Devel::GlobalDestruction: '0'
  Encode: '0'
  Exporter: '0'
  File::Temp: '0'
  Hash::Util::FieldHash: '0'
  IO::Handle: '0'

Makefile.PL  view on Meta::CPAN

  "MIN_PERL_VERSION" => "5.010",
  "NAME" => "File::KDBX",
  "PREREQ_PM" => {
    "Carp" => 0,
    "Crypt::Argon2" => 0,
    "Crypt::Cipher" => 0,
    "Crypt::Cipher::AES" => 0,
    "Crypt::Digest" => 0,
    "Crypt::Mac::HMAC" => 0,
    "Crypt::Misc" => "0.049",
    "Crypt::Mode::CBC" => 0,
    "Crypt::PRNG" => 0,
    "Crypt::Stream::ChaCha" => "0.048",
    "Crypt::Stream::Salsa20" => "0.055",
    "Data::Dumper" => 0,
    "Devel::GlobalDestruction" => 0,
    "Encode" => 0,
    "Exporter" => 0,
    "File::Temp" => 0,
    "Hash::Util::FieldHash" => 0,
    "IO::Handle" => 0,

Makefile.PL  view on Meta::CPAN



my %FallbackPrereqs = (
  "Carp" => 0,
  "Crypt::Argon2" => 0,
  "Crypt::Cipher" => 0,
  "Crypt::Cipher::AES" => 0,
  "Crypt::Digest" => 0,
  "Crypt::Mac::HMAC" => 0,
  "Crypt::Misc" => "0.049",
  "Crypt::Mode::CBC" => 0,
  "Crypt::PRNG" => 0,
  "Crypt::Stream::ChaCha" => "0.048",
  "Crypt::Stream::Salsa20" => "0.055",
  "Data::Dumper" => 0,
  "Devel::GlobalDestruction" => 0,
  "Encode" => 0,
  "Exporter" => 0,
  "ExtUtils::MakeMaker" => 0,
  "File::Spec" => 0,
  "File::Temp" => 0,

README  view on Meta::CPAN

    practices and cryptographic functions. This package uses the following
    functions for authentication, hashing, encryption and random number
    generation:

      * AES-128 (legacy)

      * AES-256

      * Argon2d & Argon2id

      * CBC block mode

      * HMAC-SHA256

      * SHA256

      * SHA512

      * Salsa20 & ChaCha20

      * Twofish

lib/File/KDBX.pm  view on Meta::CPAN

=item *

AES-256

=item *

Argon2d & Argon2id

=item *

CBC block mode

=item *

HMAC-SHA256

=item *

SHA256

=item *

lib/File/KDBX/Cipher.pm  view on Meta::CPAN


    $CIPHERS{$id} = [$package, @args];
}


sub unregister {
    delete $CIPHERS{$_} for @_;
}

BEGIN {
    __PACKAGE__->register(CIPHER_UUID_AES128,   'CBC',    algorithm => 'AES',     key_size => 16);
    __PACKAGE__->register(CIPHER_UUID_AES256,   'CBC',    algorithm => 'AES',     key_size => 32);
    __PACKAGE__->register(CIPHER_UUID_SERPENT,  'CBC',    algorithm => 'Serpent', key_size => 32);
    __PACKAGE__->register(CIPHER_UUID_TWOFISH,  'CBC',    algorithm => 'Twofish', key_size => 32);
    __PACKAGE__->register(CIPHER_UUID_CHACHA20, 'Stream', algorithm => 'ChaCha');
    __PACKAGE__->register(CIPHER_UUID_SALSA20,  'Stream', algorithm => 'Salsa20');
    __PACKAGE__->register(STREAM_ID_CHACHA20,   'Stream', algorithm => 'ChaCha');
    __PACKAGE__->register(STREAM_ID_SALSA20,    'Stream', algorithm => 'Salsa20');
}

1;

__END__

lib/File/KDBX/Cipher/CBC.pm  view on Meta::CPAN

package File::KDBX::Cipher::CBC;
# ABSTRACT: A CBC block cipher mode encrypter/decrypter

use warnings;
use strict;

use Crypt::Mode::CBC;
use File::KDBX::Error;
use File::KDBX::Util qw(:class);
use namespace::clean;

extends 'File::KDBX::Cipher';

our $VERSION = '0.906'; # VERSION

has key_size => 32;
sub iv_size     { 16 }
sub block_size  { 16 }

sub encrypt {
    my $self = shift;

    my $mode = $self->{mode} ||= do {
        my $m = Crypt::Mode::CBC->new($self->algorithm);
        $m->start_encrypt($self->key, $self->iv);
        $m;
    };

    return join('', map { $mode->add(ref $_ ? $$_ : $_) } grep { defined } @_);
}

sub decrypt {
    my $self = shift;

    my $mode = $self->{mode} ||= do {
        my $m = Crypt::Mode::CBC->new($self->algorithm);
        $m->start_decrypt($self->key, $self->iv);
        $m;
    };

    return join('', map { $mode->add(ref $_ ? $$_ : $_) } grep { defined } @_);
}

sub finish {
    my $self = shift;
    return '' if !$self->{mode};

lib/File/KDBX/Cipher/CBC.pm  view on Meta::CPAN

1;

__END__

=pod

=encoding UTF-8

=head1 NAME

File::KDBX::Cipher::CBC - A CBC block cipher mode encrypter/decrypter

=head1 VERSION

version 0.906

=head1 SYNOPSIS

    use File::KDBX::Cipher::CBC;

    my $cipher = File::KDBX::Cipher::CBC->new(algorithm => $algo, key => $key, iv => $iv);

=head1 DESCRIPTION

A subclass of L<File::KDBX::Cipher> for encrypting and decrypting data using the CBC block cipher mode.

=head1 BUGS

Please report any bugs or feature requests on the bugtracker website
L<https://github.com/chazmcgarvey/File-KDBX/issues>

When submitting a bug or request, please include a test-file or a
patch to an existing test-file that illustrates the bug or desired
feature.

t/00-compile.t  view on Meta::CPAN


# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.058

use Test::More;

plan tests => 38 + ($ENV{AUTHOR_TESTING} ? 1 : 0);

my @module_files = (
    'File/KDBX.pm',
    'File/KDBX/Cipher.pm',
    'File/KDBX/Cipher/CBC.pm',
    'File/KDBX/Cipher/Stream.pm',
    'File/KDBX/Constants.pm',
    'File/KDBX/Dumper.pm',
    'File/KDBX/Dumper/KDB.pm',
    'File/KDBX/Dumper/Raw.pm',
    'File/KDBX/Dumper/V3.pm',
    'File/KDBX/Dumper/V4.pm',
    'File/KDBX/Dumper/XML.pm',
    'File/KDBX/Entry.pm',
    'File/KDBX/Error.pm',

t/00-report-prereqs.dd  view on Meta::CPAN

                                        'Pass::OTP' => '0'
                                      },
                      'requires' => {
                                      'Carp' => '0',
                                      'Crypt::Argon2' => '0',
                                      'Crypt::Cipher' => '0',
                                      'Crypt::Cipher::AES' => '0',
                                      'Crypt::Digest' => '0',
                                      'Crypt::Mac::HMAC' => '0',
                                      'Crypt::Misc' => '0.049',
                                      'Crypt::Mode::CBC' => '0',
                                      'Crypt::PRNG' => '0',
                                      'Crypt::Stream::ChaCha' => '0.048',
                                      'Crypt::Stream::Salsa20' => '0.055',
                                      'Data::Dumper' => '0',
                                      'Devel::GlobalDestruction' => '0',
                                      'Encode' => '0',
                                      'Exporter' => '0',
                                      'File::Temp' => '0',
                                      'Hash::Util::FieldHash' => '0',
                                      'IO::Handle' => '0',

xt/author/eol.t  view on Meta::CPAN

use warnings;

# this test was generated with Dist::Zilla::Plugin::Test::EOL 0.19

use Test::More 0.88;
use Test::EOL;

my @files = (
    'lib/File/KDBX.pm',
    'lib/File/KDBX/Cipher.pm',
    'lib/File/KDBX/Cipher/CBC.pm',
    'lib/File/KDBX/Cipher/Stream.pm',
    'lib/File/KDBX/Constants.pm',
    'lib/File/KDBX/Dumper.pm',
    'lib/File/KDBX/Dumper/KDB.pm',
    'lib/File/KDBX/Dumper/Raw.pm',
    'lib/File/KDBX/Dumper/V3.pm',
    'lib/File/KDBX/Dumper/V4.pm',
    'lib/File/KDBX/Dumper/XML.pm',
    'lib/File/KDBX/Entry.pm',
    'lib/File/KDBX/Error.pm',

xt/author/no-tabs.t  view on Meta::CPAN

use warnings;

# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.15

use Test::More 0.88;
use Test::NoTabs;

my @files = (
    'lib/File/KDBX.pm',
    'lib/File/KDBX/Cipher.pm',
    'lib/File/KDBX/Cipher/CBC.pm',
    'lib/File/KDBX/Cipher/Stream.pm',
    'lib/File/KDBX/Constants.pm',
    'lib/File/KDBX/Dumper.pm',
    'lib/File/KDBX/Dumper/KDB.pm',
    'lib/File/KDBX/Dumper/Raw.pm',
    'lib/File/KDBX/Dumper/V3.pm',
    'lib/File/KDBX/Dumper/V4.pm',
    'lib/File/KDBX/Dumper/XML.pm',
    'lib/File/KDBX/Entry.pm',
    'lib/File/KDBX/Error.pm',



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