Skip to content


Development on passgen happens at GitLab. Merge requests and bug reports are more than welcome there. You may also use the GitHub project page, which is kept somewhat in sync.

GitLab CI is used to test and build the code on every commit, for all of the platforms that are supported. LLVM sanitizers and valgrind are used to catch memory unsafety errors. QEMU is used to execute all of the unit tests for all of the supported platforms. Additionally, the CI generates SSH signatures for the nightly builds that are also available for download at the releases page.

Doxygen documentation is published for the source code on every commit to the master branch. Finally, code coverage (as determined by the unit tests) is generated by lcov and llvm-cov, and published similarly (see the respective links).

Passgen is written in C, consisting of a library and a command-line utility that uses the library. It can be easily embedded into other applications. Passgen does not use any global state, and as such it is safe to use from different threads. However, the parser can only be used from one thread at a time (it has no mutex to prevent errors from happening due to concurrent access).

Passgen uses the CMake build system, allowing it to be built on different platforms and with different compilers. However, only gcc and clang are officially supported and tested, as those are used in the CI builds.