Skip to content

Implement framework for flexible 2FA#379

Open
BryanJacobs wants to merge 3 commits intolibkeepass:masterfrom
BryanJacobs:fido2_factor
Open

Implement framework for flexible 2FA#379
BryanJacobs wants to merge 3 commits intolibkeepass:masterfrom
BryanJacobs:fido2_factor

Conversation

@BryanJacobs
Copy link

This adds support for using the hmac-secret FIDO extension to contribute keying material for a KeePass 4 file.

It does this by storing an additional XML statekeeping blob in the outer ("public") header. This blob is designed to hold a variety of different authentication factors, such as passwords, key files, and Yubikey challenge-response devices.

This is a reopening of the accidentally-closed #373 . Sorry about that.

This adds support for using the hmac-secret FIDO extension to contribute keying material for a KeePass 4 file. It does this by storing an additional XML statekeeping blob in the outer ("public") header. This blob is designed to hold a variety of different authentication factors, such as passwords, key files, and Yubikey challenge-response devices.
if "public_custom_data" in kdbx.header.value.dynamic_header:
del kdbx.header.value.dynamic_header["public_custom_data"]

# Beyond Python 3.7, construct makes the base class of a Container be `dict` instead of `OrderedDict`
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is very unfortunate: the construct library dynamically changes which methods are available on a Container based on the version the Python interpreter reports.

If you run Python 3.5, you get all the OrderedDict methods. If you run Python 3.11 you get only dict methods.

@Evidlo Evidlo force-pushed the master branch 2 times, most recently from 2a37542 to 3c1af14 Compare December 10, 2024 23:57
@mathben
Copy link

mathben commented Jun 2, 2025

PR about ticket #311

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants