generate strong keys.
The KDBX format allows for the key derivation function to be tuned. The idea is that you want each single
-brute-foce attempt to be expensive (in terms of time, CPU usage or memory usage), so that making a lot of
+brute-force attempt to be expensive (in terms of time, CPU usage or memory usage), so that making a lot of
attempts (which would be required if you have a strong master key) gets I<really> expensive.
How expensive you want to make each attempt is up to you and can depend on the application.
It helps to read it right-to-left, like "usage_count is greater than or equal to 5".
-If you find the disambiguating structures to be distracting or confusing, you can also the
+If you find the disambiguating structures to be distracting or confusing, you can also use the
L<File::KDBX::Util/simple_expression_query> function as a more intuitive alternative. The following example is
equivalent to the previous:
Note: L<File::KDBX::Constants/ICON_SMARTPHONE> is just a constant from L<File::KDBX::Constants>. It isn't
special to this example or to queries generally. We could have just used a literal number.
-The important thing to notice here is how we wrapped the condition in another arrayref with a single key-value
+The important thing to notice here is how we wrapped the condition in another hashref with a single key-value
pair where the key is the name of an operator and the value is the thing to match against. The supported
operators are:
keystroke_sequence => '{USERNAME}{TAB}{PASSWORD}{ENTER}',
}
-Keystroke sequences can have </Placeholders>, most commonly C<{USERNAME}> and C<{PASSWORD}>.
+Keystroke sequences can have L</Placeholders>, most commonly C<{USERNAME}> and C<{PASSWORD}>.
=attr quality_check
=method expand_string_value
- $string = $entry->expand_string_value;
+ $string = $entry->expand_string_value($string_key);
Same as L</string_value> but will substitute placeholders and resolve field references. Any placeholders that
do not expand to values are left as-is.
Some placeholders (notably field references) require the entry be connected to a database and will throw an
error if it is not.
+=method expand_notes
+
+Shortcut equivalent to C<< ->expand_string_value('Notes') >>.
+
+=method expand_password
+
+Shortcut equivalent to C<< ->expand_string_value('Password') >>.
+
+=method expand_title
+
+Shortcut equivalent to C<< ->expand_string_value('Title') >>.
+
+=method expand_url
+
+Shortcut equivalent to C<< ->expand_string_value('URL') >>.
+
+=method expand_username
+
+Shortcut equivalent to C<< ->expand_string_value('UserName') >>.
+
=cut
sub _expand_placeholder {
return $self->_expand_string($str);
}
-=attr expand_notes
-
-Shortcut equivalent to C<< ->expand_string_value('Notes') >>.
-
-=attr expand_password
-
-Shortcut equivalent to C<< ->expand_string_value('Password') >>.
-
-=attr expand_title
-
-Shortcut equivalent to C<< ->expand_string_value('Title') >>.
-
-=attr expand_url
-
-Shortcut equivalent to C<< ->expand_string_value('URL') >>.
-
-=attr expand_username
-
-Shortcut equivalent to C<< ->expand_string_value('UserName') >>.
-
=method other_strings
$other = $entry->other_strings;
$params{secret} = encode_b32r($params{secret}) if !$params{base32};
$params{base32} = 1;
- my $otp = eval {Pass::OTP::otp(%params, @_) };
+ my $otp = eval { Pass::OTP::otp(%params, @_) };
if (my $err = $@) {
throw 'Unable to generate HOTP', error => $err;
}
$params{secret} = encode_b32r($params{secret}) if !$params{base32};
$params{base32} = 1;
- my $otp = eval {Pass::OTP::otp(%params, @_) };
+ my $otp = eval { Pass::OTP::otp(%params, @_) };
if (my $err = $@) {
throw 'Unable to generate TOTP', error => $err;
}