.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "File::KDBX::Key::File 3pm" .TH File::KDBX::Key::File 3pm "2022-11-20" "perl v5.36.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" File::KDBX::Key::File \- A file key .SH "VERSION" .IX Header "VERSION" version 0.906 .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& use File::KDBX::Constants qw(:key_file); \& use File::KDBX::Key::File; \& \& ### Create a key file: \& \& my $key = File::KDBX::Key::File\->new( \& filepath => \*(Aqpath/to/file.keyx\*(Aq, \& 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(\*(Aqpath/to/file.keyx\*(Aq); \& # OR \& my $key2 = File::KDBX::Key::File\->new(\e$secret); \& # OR \& my $key2 = File::KDBX::Key::File\->new($fh); # or *IO .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" A file key (or \*(L"key file\*(R") 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 \s-1KDBX\s0 database with a key file, the same file must be presented. The database cannot be opened without the file. .PP Inherets methods and attributes from File::KDBX::Key. .PP There are multiple types of key files supported. See \*(L"type\*(R". This module can read and write key files. .SH "ATTRIBUTES" .IX Header "ATTRIBUTES" .SS "type" .IX Subsection "type" .Vb 1 \& $type = $key\->type; .Ve .PP Get the type of key file. Can be one of from \*(L":key_file\*(R" in File::KDBX::Constants: .IP "\(bu" 4 \&\f(CW\*(C`KEY_FILE_TYPE_BINARY\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`KEY_FILE_TYPE_HEX\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`KEY_FILE_TYPE_XML\*(C'\fR .IP "\(bu" 4 \&\f(CW\*(C`KEY_FILE_TYPE_HASHED\*(C'\fR .SS "version" .IX Subsection "version" .Vb 1 \& $version = $key\->version; .Ve .PP Get the file version. Only applies to \s-1XML\s0 key files. .SS "filepath" .IX Subsection "filepath" .Vb 1 \& $filepath = $key\->filepath; .Ve .PP Get the filepath to the key file, if known. .SH "METHODS" .IX Header "METHODS" .SS "load" .IX Subsection "load" .Vb 4 \& $key = $key\->load($filepath); \& $key = $key\->load(\e$string); \& $key = $key\->load($fh); \& $key = $key\->load(*IO); .Ve .PP Load a key file. .SS "reload" .IX Subsection "reload" .Vb 1 \& $key\->reload; .Ve .PP Re-read the key file, if possible, and update the raw key if the key changed. .SS "save" .IX Subsection "save" .Vb 2 \& $key\->save; \& $key\->save(%options); .Ve .PP Write a key file. Available options: .IP "\(bu" 4 \&\f(CW\*(C`type\*(C'\fR \- Type of key file (default: value of \*(L"type\*(R", or \f(CW\*(C`KEY_FILE_TYPE_XML\*(C'\fR) .IP "\(bu" 4 \&\f(CW\*(C`verson\*(C'\fR \- Version of key file (default: value of \*(L"version\*(R", or 2) .IP "\(bu" 4 \&\f(CW\*(C`filepath\*(C'\fR \- Where to save the file (default: value of \*(L"filepath\*(R") .IP "\(bu" 4 \&\f(CW\*(C`fh\*(C'\fR \- \s-1IO\s0 handle to write to (overrides \f(CW\*(C`filepath\*(C'\fR, one of which must be defined) .IP "\(bu" 4 \&\f(CW\*(C`raw_key\*(C'\fR \- Raw key (default: value of \*(L"raw_key\*(R") .IP "\(bu" 4 \&\f(CW\*(C`atomic\*(C'\fR \- Write to the filepath atomically (default: true) .SH "BUGS" .IX Header "BUGS" Please report any bugs or feature requests on the bugtracker website .PP 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. .SH "AUTHOR" .IX Header "AUTHOR" Charles McGarvey .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" This software is copyright (c) 2022 by Charles McGarvey. .PP This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.