I am working on a physical security start up and all the available software for master keying systems is either bad, costs hundreds of dollars, or usually both, and there are no working open source solutions available.

What it does

KeyMaster takes information about the type of locks the user wishes to use, and what type of Master Keying system the user wants, and then outputs a list of lock specifications and key bittings in a form that could probably be sent to the lock manufacturer. KeyMaster also guarantees that no issued key will open a lock within its master other than the ones it is intended to open.

What I learned

This problem turned out to be a lot harder than I was expecting, and, I learned a lot about good design in master keying systems, and also about how to solve problems with potentially huge solution spaces.

What's next for KeyMaster

  • Allow for an arbitrary number of levels rather than the current maximum of three
  • Make a GUI that provides a graphical representation of both the key and pin stacks
  • More consistent minimization of the number of phantom keys
  • Some locks have a limit on how many identical cuts can happen in a row, KeyMaster currently doesn't understand this
  • Expand the no-cross-keying guarantee to the entire system rather than just within the master group

Built With

  • haskell
Share this project: