Skip to content

Add support for 1Password .opvault format #1462

@mdaniel

Description

@mdaniel

Expected Behavior

KeePassXC should either open, or at least import, the 1Password OpVault database format.

While merely importing the database would help in cross-platform situations, currently the KeePassXC Entry and EntryAttachments models would need to be extended quite a bit to capture the "entry" and attachment models used by OpVault. Thus, opening OpVault for use is likely a stretch goal.

Current Behavior

There does not appear to be a way to open the 1Password.opvault directory(database), neither as a source for importing nor as a database.

Possible Solution

I have a working branch that does the importing part, but it currently goes no further because that was the functionality I required.

Context

I have 1Password on my Mac and on my Android phone (they have an iOS app too, but I am not affected by that). However, it is a major pain to access that data while on Windows or on my Linux laptop. I have been following KeePassXC for quite a while, and thus it seemed like the perfect(?) platform to teach to read OpVault, partially to improve the security community and wholly to "scratch my itch."

Since this issue/feature is unsolicited, I am also prepared for a "closed-wontfix" outcome. I didn't want to open an issue until I knew the format could, in fact, be implemented just from their specification. But now that I have an implementation that at least appears to function, I thought I'd test for interest.

Discussion

Here is where my caveats go:

  • I am not a C++ developer, so I am quite certain I have not written idiomatic C++
  • The code on that branch is without question not what I would submit for inclusion. It is currently in a "one file to rule them all" state since it is basically a PoC that got out of hand :-) I also haven't fired up clang-format, in part because that file needs to be split into components before formatting becomes a worry
  • The test coverage is lousy, where even the one test I did initially write is broken because I made the code work correctly

But if that feature is something the KeePassXC community would value, then I will do all in my power to bring the code into alignment so it can land

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions