NAME

File::KDBX::Key::File - A file key

VERSION

version 0.906

SYNOPSIS

use File::KDBX::Constants qw(:key_file);
use File::KDBX::Key::File;

### Create a key file:

my $key = File::KDBX::Key::File->new(
    filepath    => 'path/to/file.keyx',
    type        => KEY_FILE_TYPE_XML,   # optional
    version     => 2,                   # optional
    raw_key     => $raw_key,            # optional - leave undefined to generate a random key
);
$key->save;

### Use a key file:

my $key2 = File::KDBX::Key::File->new('path/to/file.keyx');
# OR
my $key2 = File::KDBX::Key::File->new(\$secret);
# OR
my $key2 = File::KDBX::Key::File->new($fh); # or *IO

DESCRIPTION

A file key (or "key file") is the type of key where the secret is a file. The secret is either the file contents or is generated based on the file contents. In order to lock and unlock a KDBX database with a key file, the same file must be presented. The database cannot be opened without the file.

Inherets methods and attributes from File::KDBX::Key.

There are multiple types of key files supported. See "type". This module can read and write key files.

ATTRIBUTES

type

$type = $key->type;

Get the type of key file. Can be one of from ":key_file" in File::KDBX::Constants:

  • KEY_FILE_TYPE_BINARY

  • KEY_FILE_TYPE_HEX

  • KEY_FILE_TYPE_XML

  • KEY_FILE_TYPE_HASHED

version

$version = $key->version;

Get the file version. Only applies to XML key files.

filepath

$filepath = $key->filepath;

Get the filepath to the key file, if known.

METHODS

load

$key = $key->load($filepath);
$key = $key->load(\$string);
$key = $key->load($fh);
$key = $key->load(*IO);

Load a key file.

reload

$key->reload;

Re-read the key file, if possible, and update the raw key if the key changed.

save

$key->save;
$key->save(%options);

Write a key file. Available options:

  • type - Type of key file (default: value of "type", or KEY_FILE_TYPE_XML)

  • verson - Version of key file (default: value of "version", or 2)

  • filepath - Where to save the file (default: value of "filepath")

  • fh - IO handle to write to (overrides filepath, one of which must be defined)

  • raw_key - Raw key (default: value of "raw_key")

  • atomic - Write to the filepath atomically (default: true)

BUGS

Please report any bugs or feature requests on the bugtracker website 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.

AUTHOR

Charles McGarvey <ccm@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2022 by Charles McGarvey.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.