1 package File
::KDBX
::Constants
;
2 # ABSTRACT: All the KDBX-related constants you could ever want
4 # HOW TO add new constants:
5 # 1. Add it to the %CONSTANTS structure below.
6 # 2. List it in the pod at the bottom of this file in the section corresponding to its tag.
7 # 3. There is no step three.
13 use Exporter
qw(import);
14 use File
::KDBX
::Util
qw(int64);
15 use Scalar
::Util
qw(dualvar);
16 use namespace
::clean
-except
=> 'import';
18 our $VERSION = '0.906'; # VERSION
25 SIG1_FIRST_BYTE
=> 0x03,
30 __prefix
=> 'KDBX_VERSION',
38 MAJOR_MASK
=> 0xffff0000,
39 MINOR_MASK
=> 0x0000ffff,
43 END => dualvar
( 0, 'end'),
44 COMMENT
=> dualvar
( 1, 'comment'),
45 CIPHER_ID
=> dualvar
( 2, 'cipher_id'),
46 COMPRESSION_FLAGS
=> dualvar
( 3, 'compression_flags'),
47 MASTER_SEED
=> dualvar
( 4, 'master_seed'),
48 TRANSFORM_SEED
=> dualvar
( 5, 'transform_seed'),
49 TRANSFORM_ROUNDS
=> dualvar
( 6, 'transform_rounds'),
50 ENCRYPTION_IV
=> dualvar
( 7, 'encryption_iv'),
51 INNER_RANDOM_STREAM_KEY
=> dualvar
( 8, 'inner_random_stream_key'),
52 STREAM_START_BYTES
=> dualvar
( 9, 'stream_start_bytes'),
53 INNER_RANDOM_STREAM_ID
=> dualvar
( 10, 'inner_random_stream_id'),
54 KDF_PARAMETERS
=> dualvar
( 11, 'kdf_parameters'),
55 PUBLIC_CUSTOM_DATA
=> dualvar
( 12, 'public_custom_data'),
58 __prefix
=> 'COMPRESSION',
59 NONE
=> dualvar
( 0, 'none'),
60 GZIP
=> dualvar
( 1, 'gzip'),
64 UUID_AES128
=> "\x61\xab\x05\xa1\x94\x64\x41\xc3\x8d\x74\x3a\x56\x3d\xf8\xdd\x35",
65 UUID_AES256
=> "\x31\xc1\xf2\xe6\xbf\x71\x43\x50\xbe\x58\x05\x21\x6a\xfc\x5a\xff",
66 UUID_CHACHA20
=> "\xd6\x03\x8a\x2b\x8b\x6f\x4c\xb5\xa5\x24\x33\x9a\x31\xdb\xb5\x9a",
67 UUID_SALSA20
=> "\x71\x6e\x1c\x8a\xee\x17\x4b\xdc\x93\xae\xa9\x77\xb8\x82\x83\x3a",
68 UUID_SERPENT
=> "\x09\x85\x63\xff\xdd\xf7\x4f\x98\x86\x19\x80\x79\xf6\xdb\x89\x7a",
69 UUID_TWOFISH
=> "\xad\x68\xf2\x9f\x57\x6f\x4b\xb9\xa3\x6a\xd4\x7a\xf9\x65\x34\x6c",
73 UUID_AES
=> "\xc9\xd9\xf3\x9a\x62\x8a\x44\x60\xbf\x74\x0d\x08\xc1\x8a\x4f\xea",
74 UUID_AES_CHALLENGE_RESPONSE
=> "\x7c\x02\xbb\x82\x79\xa7\x4a\xc0\x92\x7d\x11\x4a\x00\x64\x82\x38",
75 UUID_ARGON2D
=> "\xef\x63\x6d\xdf\x8c\x29\x44\x4b\x91\xf7\xa9\xa4\x03\xe3\x0a\x0c",
76 UUID_ARGON2ID
=> "\x9e\x29\x8b\x19\x56\xdb\x47\x73\xb2\x3d\xfc\x3e\xc6\xf0\xa1\xe6",
77 PARAM_UUID
=> '$UUID',
78 PARAM_AES_ROUNDS
=> 'R',
79 PARAM_AES_SEED
=> 'S',
80 PARAM_ARGON2_SALT
=> 'S',
81 PARAM_ARGON2_PARALLELISM
=> 'P',
82 PARAM_ARGON2_MEMORY
=> 'M',
83 PARAM_ARGON2_ITERATIONS
=> 'I',
84 PARAM_ARGON2_VERSION
=> 'V',
85 PARAM_ARGON2_SECRET
=> 'K',
86 PARAM_ARGON2_ASSOCDATA
=> 'A',
87 DEFAULT_AES_ROUNDS
=> 100_000,
88 DEFAULT_ARGON2_ITERATIONS
=> 10,
89 DEFAULT_ARGON2_MEMORY
=> 1 << 16,
90 DEFAULT_ARGON2_PARALLELISM
=> 2,
91 DEFAULT_ARGON2_VERSION
=> 0x13,
98 SALSA20_IV
=> "\xe8\x30\x09\x4b\x97\x20\x5d\x2a",
104 VERSION_MAJOR_MASK
=> 0xff00,
112 TYPE_BYTEARRAY
=> 0x42,
115 __prefix
=> 'INNER_HEADER',
116 END => dualvar
( 0, 'end'),
117 INNER_RANDOM_STREAM_ID
=> dualvar
( 1, 'inner_random_stream_id'),
118 INNER_RANDOM_STREAM_KEY
=> dualvar
( 2, 'inner_random_stream_key'),
119 BINARY
=> dualvar
( 3, 'binary'),
120 BINARY_FLAG_PROTECT
=> 1,
123 __prefix
=> 'KEY_FILE',
124 TYPE_BINARY
=> dualvar
( 1, 'binary'),
125 TYPE_HASHED
=> dualvar
( 3, 'hashed'),
126 TYPE_HEX
=> dualvar
( 2, 'hex'),
127 TYPE_XML
=> dualvar
( 4, 'xml'),
130 __prefix
=> 'HISTORY',
131 DEFAULT_MAX_AGE
=> 365,
132 DEFAULT_MAX_ITEMS
=> 10,
133 DEFAULT_MAX_SIZE
=> 6_291_456, # 6 MiB
136 ITERATION_BFS
=> dualvar
(1, 'bfs'),
137 ITERATION_DFS
=> dualvar
(2, 'dfs'),
138 ITERATION_IDS
=> dualvar
(3, 'ids'),
142 PASSWORD
=> dualvar
( 0, 'Password'),
143 PACKAGE_NETWORK
=> dualvar
( 1, 'Package_Network'),
144 MESSAGEBOX_WARNING
=> dualvar
( 2, 'MessageBox_Warning'),
145 SERVER
=> dualvar
( 3, 'Server'),
146 KLIPPER
=> dualvar
( 4, 'Klipper'),
147 EDU_LANGUAGES
=> dualvar
( 5, 'Edu_Languages'),
148 KCMDF
=> dualvar
( 6, 'KCMDF'),
149 KATE
=> dualvar
( 7, 'Kate'),
150 SOCKET
=> dualvar
( 8, 'Socket'),
151 IDENTITY
=> dualvar
( 9, 'Identity'),
152 KONTACT
=> dualvar
( 10, 'Kontact'),
153 CAMERA
=> dualvar
( 11, 'Camera'),
154 IRKICKFLASH
=> dualvar
( 12, 'IRKickFlash'),
155 KGPG_KEY3
=> dualvar
( 13, 'KGPG_Key3'),
156 LAPTOP_POWER
=> dualvar
( 14, 'Laptop_Power'),
157 SCANNER
=> dualvar
( 15, 'Scanner'),
158 MOZILLA_FIREBIRD
=> dualvar
( 16, 'Mozilla_Firebird'),
159 CDROM_UNMOUNT
=> dualvar
( 17, 'CDROM_Unmount'),
160 DISPLAY
=> dualvar
( 18, 'Display'),
161 MAIL_GENERIC
=> dualvar
( 19, 'Mail_Generic'),
162 MISC
=> dualvar
( 20, 'Misc'),
163 KORGANIZER
=> dualvar
( 21, 'KOrganizer'),
164 ASCII
=> dualvar
( 22, 'ASCII'),
165 ICONS
=> dualvar
( 23, 'Icons'),
166 CONNECT_ESTABLISHED
=> dualvar
( 24, 'Connect_Established'),
167 FOLDER_MAIL
=> dualvar
( 25, 'Folder_Mail'),
168 FILESAVE
=> dualvar
( 26, 'FileSave'),
169 NFS_UNMOUNT
=> dualvar
( 27, 'NFS_Unmount'),
170 MESSAGE
=> dualvar
( 28, 'Message'),
171 KGPG_TERM
=> dualvar
( 29, 'KGPG_Term'),
172 KONSOLE
=> dualvar
( 30, 'Konsole'),
173 FILEPRINT
=> dualvar
( 31, 'FilePrint'),
174 FSVIEW
=> dualvar
( 32, 'FSView'),
175 RUN
=> dualvar
( 33, 'Run'),
176 CONFIGURE
=> dualvar
( 34, 'Configure'),
177 KRFB
=> dualvar
( 35, 'KRFB'),
178 ARK
=> dualvar
( 36, 'Ark'),
179 KPERCENTAGE
=> dualvar
( 37, 'KPercentage'),
180 SAMBA_UNMOUNT
=> dualvar
( 38, 'Samba_Unmount'),
181 HISTORY
=> dualvar
( 39, 'History'),
182 MAIL_FIND
=> dualvar
( 40, 'Mail_Find'),
183 VECTORGFX
=> dualvar
( 41, 'VectorGfx'),
184 KCMMEMORY
=> dualvar
( 42, 'KCMMemory'),
185 TRASHCAN_FULL
=> dualvar
( 43, 'Trashcan_Full'),
186 KNOTES
=> dualvar
( 44, 'KNotes'),
187 CANCEL
=> dualvar
( 45, 'Cancel'),
188 HELP
=> dualvar
( 46, 'Help'),
189 KPACKAGE
=> dualvar
( 47, 'KPackage'),
190 FOLDER
=> dualvar
( 48, 'Folder'),
191 FOLDER_BLUE_OPEN
=> dualvar
( 49, 'Folder_Blue_Open'),
192 FOLDER_TAR
=> dualvar
( 50, 'Folder_Tar'),
193 DECRYPTED
=> dualvar
( 51, 'Decrypted'),
194 ENCRYPTED
=> dualvar
( 52, 'Encrypted'),
195 APPLY
=> dualvar
( 53, 'Apply'),
196 SIGNATURE
=> dualvar
( 54, 'Signature'),
197 THUMBNAIL
=> dualvar
( 55, 'Thumbnail'),
198 KADDRESSBOOK
=> dualvar
( 56, 'KAddressBook'),
199 VIEW_TEXT
=> dualvar
( 57, 'View_Text'),
200 KGPG
=> dualvar
( 58, 'KGPG'),
201 PACKAGE_DEVELOPMENT
=> dualvar
( 59, 'Package_Development'),
202 KFM_HOME
=> dualvar
( 60, 'KFM_Home'),
203 SERVICES
=> dualvar
( 61, 'Services'),
204 TUX
=> dualvar
( 62, 'Tux'),
205 FEATHER
=> dualvar
( 63, 'Feather'),
206 APPLE
=> dualvar
( 64, 'Apple'),
207 W
=> dualvar
( 65, 'W'),
208 MONEY
=> dualvar
( 66, 'Money'),
209 CERTIFICATE
=> dualvar
( 67, 'Certificate'),
210 SMARTPHONE
=> dualvar
( 68, 'Smartphone'),
218 SECONDS_AD1_TO_UNIX_EPOCH
=> int64
('62135596800'),
221 YUBICO_VID
=> dualvar
( 0x1050, 'Yubico'),
222 YUBIKEY_PID
=> dualvar
( 0x0010, 'YubiKey 1/2'),
223 NEO_OTP_PID
=> dualvar
( 0x0110, 'YubiKey NEO OTP'),
224 NEO_OTP_CCID_PID
=> dualvar
( 0x0111, 'YubiKey NEO OTP+CCID'),
225 NEO_CCID_PID
=> dualvar
( 0x0112, 'YubiKey NEO CCID'),
226 NEO_U2F_PID
=> dualvar
( 0x0113, 'YubiKey NEO FIDO'),
227 NEO_OTP_U2F_PID
=> dualvar
( 0x0114, 'YubiKey NEO OTP+FIDO'),
228 NEO_U2F_CCID_PID
=> dualvar
( 0x0115, 'YubiKey NEO FIDO+CCID'),
229 NEO_OTP_U2F_CCID_PID
=> dualvar
( 0x0116, 'YubiKey NEO OTP+FIDO+CCID'),
230 YK4_OTP_PID
=> dualvar
( 0x0401, 'YubiKey 4/5 OTP'),
231 YK4_U2F_PID
=> dualvar
( 0x0402, 'YubiKey 4/5 FIDO'),
232 YK4_OTP_U2F_PID
=> dualvar
( 0x0403, 'YubiKey 4/5 OTP+FIDO'),
233 YK4_CCID_PID
=> dualvar
( 0x0404, 'YubiKey 4/5 CCID'),
234 YK4_OTP_CCID_PID
=> dualvar
( 0x0405, 'YubiKey 4/5 OTP+CCID'),
235 YK4_U2F_CCID_PID
=> dualvar
( 0x0406, 'YubiKey 4/5 FIDO+CCID'),
236 YK4_OTP_U2F_CCID_PID
=> dualvar
( 0x0407, 'YubiKey 4/5 OTP+FIDO+CCID'),
237 PLUS_U2F_OTP_PID
=> dualvar
( 0x0410, 'YubiKey Plus OTP+FIDO'),
239 ONLYKEY_VID
=> dualvar
( 0x1d50, 'OnlyKey'),
240 ONLYKEY_PID
=> dualvar
( 0x60fc, 'OnlyKey'),
242 YK_EUSBERR
=> dualvar
( 0x01, 'USB error'),
243 YK_EWRONGSIZ
=> dualvar
( 0x02, 'wrong size'),
244 YK_EWRITEERR
=> dualvar
( 0x03, 'write error'),
245 YK_ETIMEOUT
=> dualvar
( 0x04, 'timeout'),
246 YK_ENOKEY
=> dualvar
( 0x05, 'no yubikey present'),
247 YK_EFIRMWARE
=> dualvar
( 0x06, 'unsupported firmware version'),
248 YK_ENOMEM
=> dualvar
( 0x07, 'out of memory'),
249 YK_ENOSTATUS
=> dualvar
( 0x08, 'no status structure given'),
250 YK_ENOTYETIMPL
=> dualvar
( 0x09, 'not yet implemented'),
251 YK_ECHECKSUM
=> dualvar
( 0x0a, 'checksum mismatch'),
252 YK_EWOULDBLOCK
=> dualvar
( 0x0b, 'operation would block'),
253 YK_EINVALIDCMD
=> dualvar
( 0x0c, 'invalid command for operation'),
254 YK_EMORETHANONE
=> dualvar
( 0x0d, 'expected only one YubiKey but serveral present'),
255 YK_ENODATA
=> dualvar
( 0x0e, 'no data returned from device'),
257 CONFIG1_VALID
=> 0x01,
258 CONFIG2_VALID
=> 0x02,
259 CONFIG1_TOUCH
=> 0x04,
260 CONFIG2_TOUCH
=> 0x08,
261 CONFIG_LED_INV
=> 0x10,
262 CONFIG_STATUS_MASK
=> 0x1f,
268 no strict
'refs'; ## no critic (ProhibitNoStrict)
269 while (my ($tag, $constants) = each %CONSTANTS) {
270 my $prefix = delete $constants->{__prefix
};
271 while (my ($name, $value) = each %$constants) {
273 $val = $val+0 if $tag eq 'icon'; # TODO
275 my $full_name = $prefix ? "${prefix}_${name}" : $name;
276 die "Duplicate constant: $full_name\n" if $seen{$full_name};
277 *{$full_name} = sub() { $value };
278 push @{$EXPORT_TAGS{$tag} //= []}, $full_name;
285 push @{$EXPORT_TAGS{header
}}, 'to_header_constant';
286 push @{$EXPORT_TAGS{compression
}}, 'to_compression_constant';
287 push @{$EXPORT_TAGS{inner_header
}}, 'to_inner_header_constant';
288 push @{$EXPORT_TAGS{icon
}}, 'to_icon_constant';
290 $EXPORT_TAGS{all
} = [map { @$_ } values %EXPORT_TAGS];
291 our @EXPORT_OK = sort @{$EXPORT_TAGS{all
}};
295 HEADER_END
, HEADER_COMMENT
, HEADER_CIPHER_ID
, HEADER_COMPRESSION_FLAGS
,
296 HEADER_MASTER_SEED
, HEADER_TRANSFORM_SEED
, HEADER_TRANSFORM_ROUNDS
,
297 HEADER_ENCRYPTION_IV
, HEADER_INNER_RANDOM_STREAM_KEY
, HEADER_STREAM_START_BYTES
,
298 HEADER_INNER_RANDOM_STREAM_ID
, HEADER_KDF_PARAMETERS
, HEADER_PUBLIC_CUSTOM_DATA
,
300 $HEADER{$header} = $HEADER{0+$header} = $header;
302 sub to_header_constant
{ $HEADER{$_[0] // ''} }
305 for my $compression (COMPRESSION_NONE
, COMPRESSION_GZIP
) {
306 $COMPRESSION{$compression} = $COMPRESSION{0+$compression} = $compression;
308 sub to_compression_constant
{ $COMPRESSION{$_[0] // ''} }
311 for my $inner_header (
312 INNER_HEADER_END
, INNER_HEADER_INNER_RANDOM_STREAM_ID
,
313 INNER_HEADER_INNER_RANDOM_STREAM_KEY
, INNER_HEADER_BINARY
,
315 $INNER_HEADER{$inner_header} = $INNER_HEADER{0+$inner_header} = $inner_header;
317 sub to_inner_header_constant
{ $INNER_HEADER{$_[0] // ''} }
321 ICON_PASSWORD
, ICON_PACKAGE_NETWORK
, ICON_MESSAGEBOX_WARNING
, ICON_SERVER
, ICON_KLIPPER
,
322 ICON_EDU_LANGUAGES
, ICON_KCMDF
, ICON_KATE
, ICON_SOCKET
, ICON_IDENTITY
, ICON_KONTACT
, ICON_CAMERA
,
323 ICON_IRKICKFLASH
, ICON_KGPG_KEY3
, ICON_LAPTOP_POWER
, ICON_SCANNER
, ICON_MOZILLA_FIREBIRD
,
324 ICON_CDROM_UNMOUNT
, ICON_DISPLAY
, ICON_MAIL_GENERIC
, ICON_MISC
, ICON_KORGANIZER
, ICON_ASCII
, ICON_ICONS
,
325 ICON_CONNECT_ESTABLISHED
, ICON_FOLDER_MAIL
, ICON_FILESAVE
, ICON_NFS_UNMOUNT
, ICON_MESSAGE
, ICON_KGPG_TERM
,
326 ICON_KONSOLE
, ICON_FILEPRINT
, ICON_FSVIEW
, ICON_RUN
, ICON_CONFIGURE
, ICON_KRFB
, ICON_ARK
,
327 ICON_KPERCENTAGE
, ICON_SAMBA_UNMOUNT
, ICON_HISTORY
, ICON_MAIL_FIND
, ICON_VECTORGFX
, ICON_KCMMEMORY
,
328 ICON_TRASHCAN_FULL
, ICON_KNOTES
, ICON_CANCEL
, ICON_HELP
, ICON_KPACKAGE
, ICON_FOLDER
,
329 ICON_FOLDER_BLUE_OPEN
, ICON_FOLDER_TAR
, ICON_DECRYPTED
, ICON_ENCRYPTED
, ICON_APPLY
, ICON_SIGNATURE
,
330 ICON_THUMBNAIL
, ICON_KADDRESSBOOK
, ICON_VIEW_TEXT
, ICON_KGPG
, ICON_PACKAGE_DEVELOPMENT
, ICON_KFM_HOME
,
331 ICON_SERVICES
, ICON_TUX
, ICON_FEATHER
, ICON_APPLE
, ICON_W
, ICON_MONEY
, ICON_CERTIFICATE
, ICON_SMARTPHONE
,
333 $ICON{$icon} = $ICON{0+$icon} = $icon;
335 sub to_icon_constant
{ $ICON{$_[0] // ''} // ICON_PASSWORD
}
347 File::KDBX::Constants - All the KDBX-related constants you could ever want
355 use File::KDBX::Constants qw(:all);
357 say KDBX_VERSION_4_1;
361 This module provides importable constants related to KDBX. Constants can be imported individually or in groups
362 (by tag). The available tags are:
428 C<:all> - All of the above
432 View the source of this module to see the constant values (but really you shouldn't care).
436 =head2 to_header_constant
438 $constant = to_header_constant($number);
439 $constant = to_header_constant($string);
441 Get a header constant from an integer or string value.
443 =head2 to_compression_constant
445 $constant = to_compression_constant($number);
446 $constant = to_compression_constant($string);
448 Get a compression constant from an integer or string value.
450 =head2 to_inner_header_constant
452 $constant = to_inner_header_constant($number);
453 $constant = to_inner_header_constant($string);
455 Get an inner header constant from an integer or string value.
457 =head2 to_icon_constant
459 $constant = to_icon_constant($number);
460 $constant = to_icon_constant($string);
462 Get an icon constant from an integer or string value.
468 Constants related to identifying the file types:
474 =item C<KDBX_SIG1_FIRST_BYTE>
484 Constants related to identifying the format version of a file:
488 =item C<KDBX_VERSION_2_0>
490 =item C<KDBX_VERSION_3_0>
492 =item C<KDBX_VERSION_3_1>
494 =item C<KDBX_VERSION_4_0>
496 =item C<KDBX_VERSION_4_1>
498 =item C<KDBX_VERSION_OLDEST>
500 =item C<KDBX_VERSION_LATEST>
502 =item C<KDBX_VERSION_MAJOR_MASK>
504 =item C<KDBX_VERSION_MINOR_MASK>
510 Constants related to parsing and generating KDBX file headers:
516 =item C<HEADER_COMMENT>
518 =item C<HEADER_CIPHER_ID>
520 =item C<HEADER_COMPRESSION_FLAGS>
522 =item C<HEADER_MASTER_SEED>
524 =item C<HEADER_TRANSFORM_SEED>
526 =item C<HEADER_TRANSFORM_ROUNDS>
528 =item C<HEADER_ENCRYPTION_IV>
530 =item C<HEADER_INNER_RANDOM_STREAM_KEY>
532 =item C<HEADER_STREAM_START_BYTES>
534 =item C<HEADER_INNER_RANDOM_STREAM_ID>
536 =item C<HEADER_KDF_PARAMETERS>
538 =item C<HEADER_PUBLIC_CUSTOM_DATA>
544 Constants related to identifying the compression state of a file:
548 =item C<COMPRESSION_NONE>
550 =item C<COMPRESSION_GZIP>
556 Constants related to ciphers:
560 =item C<CIPHER_UUID_AES128>
562 =item C<CIPHER_UUID_AES256>
564 =item C<CIPHER_UUID_CHACHA20>
566 =item C<CIPHER_UUID_SALSA20>
568 =item C<CIPHER_UUID_SERPENT>
570 =item C<CIPHER_UUID_TWOFISH>
574 =head2 :random_stream
576 Constants related to memory protection stream ciphers:
580 =item C<STREAM_ID_RC4_VARIANT>
582 This is insecure and not implemented.
584 =item C<STREAM_ID_SALSA20>
586 =item C<STREAM_ID_CHACHA20>
588 =item C<STREAM_SALSA20_IV>
594 Constants related to key derivation functions and configuration:
598 =item C<KDF_UUID_AES>
600 =item C<KDF_UUID_AES_CHALLENGE_RESPONSE>
602 This is what KeePassXC calls C<KDF_AES_KDBX4>.
604 =item C<KDF_UUID_ARGON2D>
606 =item C<KDF_UUID_ARGON2ID>
608 =item C<KDF_PARAM_UUID>
610 =item C<KDF_PARAM_AES_ROUNDS>
612 =item C<KDF_PARAM_AES_SEED>
614 =item C<KDF_PARAM_ARGON2_SALT>
616 =item C<KDF_PARAM_ARGON2_PARALLELISM>
618 =item C<KDF_PARAM_ARGON2_MEMORY>
620 =item C<KDF_PARAM_ARGON2_ITERATIONS>
622 =item C<KDF_PARAM_ARGON2_VERSION>
624 =item C<KDF_PARAM_ARGON2_SECRET>
626 =item C<KDF_PARAM_ARGON2_ASSOCDATA>
628 =item C<KDF_DEFAULT_AES_ROUNDS>
630 =item C<KDF_DEFAULT_ARGON2_ITERATIONS>
632 =item C<KDF_DEFAULT_ARGON2_MEMORY>
634 =item C<KDF_DEFAULT_ARGON2_PARALLELISM>
636 =item C<KDF_DEFAULT_ARGON2_VERSION>
642 Constants related to parsing and generating KDBX4 variant maps:
646 =item C<VMAP_VERSION>
648 =item C<VMAP_VERSION_MAJOR_MASK>
650 =item C<VMAP_TYPE_END>
652 =item C<VMAP_TYPE_UINT32>
654 =item C<VMAP_TYPE_UINT64>
656 =item C<VMAP_TYPE_BOOL>
658 =item C<VMAP_TYPE_INT32>
660 =item C<VMAP_TYPE_INT64>
662 =item C<VMAP_TYPE_STRING>
664 =item C<VMAP_TYPE_BYTEARRAY>
670 Constants related to parsing and generating KDBX4 inner headers:
674 =item C<INNER_HEADER_END>
676 =item C<INNER_HEADER_INNER_RANDOM_STREAM_ID>
678 =item C<INNER_HEADER_INNER_RANDOM_STREAM_KEY>
680 =item C<INNER_HEADER_BINARY>
682 =item C<INNER_HEADER_BINARY_FLAG_PROTECT>
688 Constants related to identifying key file types:
692 =item C<KEY_FILE_TYPE_BINARY>
694 =item C<KEY_FILE_TYPE_HASHED>
696 =item C<KEY_FILE_TYPE_HEX>
698 =item C<KEY_FILE_TYPE_XML>
704 Constants for history-related default values:
708 =item C<HISTORY_DEFAULT_MAX_AGE>
710 =item C<HISTORY_DEFAULT_MAX_ITEMS>
712 =item C<HISTORY_DEFAULT_MAX_SIZE>
718 Constants for searching algorithms.
722 =item C<ITERATION_IDS> - Iterative deepening search
724 =item C<ITERATION_BFS> - Breadth-first search
726 =item C<ITERATION_DFS> - Depth-first search
732 Constants for default icons used by KeePass password safe implementations:
736 =item C<ICON_PASSWORD>
738 =item C<ICON_PACKAGE_NETWORK>
740 =item C<ICON_MESSAGEBOX_WARNING>
744 =item C<ICON_KLIPPER>
746 =item C<ICON_EDU_LANGUAGES>
754 =item C<ICON_IDENTITY>
756 =item C<ICON_KONTACT>
760 =item C<ICON_IRKICKFLASH>
762 =item C<ICON_KGPG_KEY3>
764 =item C<ICON_LAPTOP_POWER>
766 =item C<ICON_SCANNER>
768 =item C<ICON_MOZILLA_FIREBIRD>
770 =item C<ICON_CDROM_UNMOUNT>
772 =item C<ICON_DISPLAY>
774 =item C<ICON_MAIL_GENERIC>
778 =item C<ICON_KORGANIZER>
784 =item C<ICON_CONNECT_ESTABLISHED>
786 =item C<ICON_FOLDER_MAIL>
788 =item C<ICON_FILESAVE>
790 =item C<ICON_NFS_UNMOUNT>
792 =item C<ICON_MESSAGE>
794 =item C<ICON_KGPG_TERM>
796 =item C<ICON_KONSOLE>
798 =item C<ICON_FILEPRINT>
804 =item C<ICON_CONFIGURE>
810 =item C<ICON_KPERCENTAGE>
812 =item C<ICON_SAMBA_UNMOUNT>
814 =item C<ICON_HISTORY>
816 =item C<ICON_MAIL_FIND>
818 =item C<ICON_VECTORGFX>
820 =item C<ICON_KCMMEMORY>
822 =item C<ICON_TRASHCAN_FULL>
830 =item C<ICON_KPACKAGE>
834 =item C<ICON_FOLDER_BLUE_OPEN>
836 =item C<ICON_FOLDER_TAR>
838 =item C<ICON_DECRYPTED>
840 =item C<ICON_ENCRYPTED>
844 =item C<ICON_SIGNATURE>
846 =item C<ICON_THUMBNAIL>
848 =item C<ICON_KADDRESSBOOK>
850 =item C<ICON_VIEW_TEXT>
854 =item C<ICON_PACKAGE_DEVELOPMENT>
856 =item C<ICON_KFM_HOME>
858 =item C<ICON_SERVICES>
862 =item C<ICON_FEATHER>
870 =item C<ICON_CERTIFICATE>
872 =item C<ICON_SMARTPHONE>
890 Constants related to time:
894 =item C<TIME_SECONDS_AD1_TO_UNIX_EPOCH>
900 Constants related to working with YubiKeys:
910 =item C<NEO_OTP_CCID_PID>
912 =item C<NEO_CCID_PID>
916 =item C<NEO_OTP_U2F_PID>
918 =item C<NEO_U2F_CCID_PID>
920 =item C<NEO_OTP_U2F_CCID_PID>
926 =item C<YK4_OTP_U2F_PID>
928 =item C<YK4_CCID_PID>
930 =item C<YK4_OTP_CCID_PID>
932 =item C<YK4_U2F_CCID_PID>
934 =item C<YK4_OTP_U2F_CCID_PID>
936 =item C<PLUS_U2F_OTP_PID>
944 =item C<YK_EWRONGSIZ>
946 =item C<YK_EWRITEERR>
952 =item C<YK_EFIRMWARE>
956 =item C<YK_ENOSTATUS>
958 =item C<YK_ENOTYETIMPL>
960 =item C<YK_ECHECKSUM>
962 =item C<YK_EWOULDBLOCK>
964 =item C<YK_EINVALIDCMD>
966 =item C<YK_EMORETHANONE>
970 =item C<CONFIG1_VALID>
972 =item C<CONFIG2_VALID>
974 =item C<CONFIG1_TOUCH>
976 =item C<CONFIG2_TOUCH>
978 =item C<CONFIG_LED_INV>
980 =item C<CONFIG_STATUS_MASK>
986 Please report any bugs or feature requests on the bugtracker website
987 L<https://github.com/chazmcgarvey/File-KDBX/issues>
989 When submitting a bug or request, please include a test-file or a
990 patch to an existing test-file that illustrates the bug or desired
995 Charles McGarvey <ccm@cpan.org>
997 =head1 COPYRIGHT AND LICENSE
999 This software is copyright (c) 2022 by Charles McGarvey.
1001 This is free software; you can redistribute it and/or modify it under
1002 the same terms as the Perl 5 programming language system itself.