More on 1Password’s Components

Stefan van AsStefan van As of 1Password fame sent me a more exhaustive list of the libraries and tools used in 1Password. I thought I would share it with everyone. He also recently started blogging about security, software development and Delphi.

Here is an overview of the 3rd party components used in 1Password:

  • 1PasswordBrowser Helper Objects (BHOs) — this is what powers 1Password inside Internet Explorer.
  • Bonjour — this is what powers Wi-Fi Sync. (here is an unrelated Delphi
    implementation
    )
  • ChilkatCrypt — this is what powers some of our crypto
  • MS Crypto — this is the Pseudo Random Number Generator (PRNG)
  • DISQLite — Some of 1Password’s features – such as Watchtower, for example – are utilizing SQLite. Because 1Password 4 is in Delphi 2007, we use DISQLite for that (today, it would be using FireDAC for that)
  • dxgettext — this is used to localize 1Password. It works nicely with Crowdin, a localization project management platform
  • GraphicEx and Graphics32 — this gives (alpha channel) transparency
  • HyperString — super fast string handling routines. (no longer available)
  • OpenSSL — this is what powers PBKDF2 (among other crypto routines)
  • sgcWebSockets — The WebSockets are used with the Chrome and Firefox browser extensions
  • StreamSec — another crypto library, mostly for SSL/TLS
  • zlib and LibTar — for OS X-compatible compression routines

Also uses the following tools:

A lot of great tools and libraries there.

This entry was posted in Article, News, Tools. Bookmark the permalink.

10 Responses to More on 1Password’s Components

  1. John says:

    From the component list, I assume 1Password is written in VCL framework, right? It’s not a Firemonkey app. Which language are they using for the Mac version? Objective-C?

  2. Jim McKeeth says:

    1Password was originally for OS X, then later the Windows version was developed with VCL, before the release of FMX. I believe it was written in Objective-C.

  3. Fronzel Neekburm says:

    Amazing that dxGetText is still being used widely.

  4. john says:

    GetText and derivatives are still the most convenient solution. Resource strings (or named strings like in Android) bring more micro-management problems.

    Also 1password seem like another casualty of the Unicode transition (stuck in D2007…)

  5. Frederik says:

    Hi Jim,

    I am proud to see that 1Password for Windows uses my precompiled OpenSSL libraries (always initially published for the Indy Team and Users), as they are a usable without dependencies to the newer VC runtime libraries. Being a 1Password user on OS X for a long time, I am glad to see them making use of them 🙂

    Regarding 1Password on OS X: Currently it’s developed with a mix of Swift and Objective C.

    – Frederik
    (Indy Core Team)

  6. Jim McKeeth says:

    Thanks for the clarification on OS X.

  7. John says:

    I am 1Password customer on Mac as well and pretty happy with the product. Out of interest, what do you use to develpp the Android app?

  8. Frederik says:

    @Jim: You’re welcome.

    @John: If this is directed to me: I am not working for AgileBits, so unfortunately I cannot comment on the Android app. My statement on the OS X version was made after I inspected the current OS X app, but what I said is pretty obvious and no secret. Hth!

  9. emayevski says:

    It’s amazing to see a security-focused application use five different security-related libraries instead of one comprehensive solution.

  10. John says:

    @Frederik: I didn’t assume you work for AgileBits. Just thought you may know what they use for the Android app

Leave a Reply