Here is a sampling of the Open Source projects I have created, maintain, or contribute to. I have contributed thousands of commits, pull requests, and issue reports to open source projects in the last decade and I believe very strongly in the benefits of Open Source Software. You can see a summary of my contributions on my Github profile page.

In the section that follows I have summarized some of the more recent interesting projects I have been working on.

grempe/grempe.github.io (HTML/Markdown/CSS)

The source code for this website.

grempe/sirp (Ruby)

SiRP is a pure Ruby implementation of the Secure Remote Password protocol (SRP-6a), which is a ‘zero-knowledge’ mutual authentication system.

SRP is a protocol that allows for mutual authentication of a client and server over an insecure network connection without revealing the password to the server or an eavesdropper.

There is a live demo version you can try.

grempe/tss-rb (Ruby)

Threshold Secret Sharing (TSS) provides a way to generate N shares from a value, so that any M of those shares can be used to reconstruct the original value, but any M-1 shares provide no information about that value. This method can provide shared access control on key material and other secrets that must be strongly protected.

This gem implements a Threshold Secret Sharing method based on polynomial interpolation in GF(256) and a format for the storage and transmission of shares.

This implementation follows the draft-mcgrew-tss-03 specification.

grempe/rack-json_web_token_auth (Ruby)

Rack::JsonWebTokenAuth is a Rack middleware that makes it easy for your Rack based application (Sinatra, Rails) to authenticate clients that present a valid Authorization: Bearer [token] header with a cryptographically signed JSON Web Token (JWT).

grempe/session-keys-rb (Ruby)

SessionKeys is a cryptographic tool for the deterministic generation of NaCl compatible Curve25519 encryption and Ed25519 digital signature keys.

Compatible with grempe/session-keys-js

grempe/session-keys-js (JavaScript)

SessionKeys is a cryptographic tool for the deterministic generation of NaCl compatible Curve25519 encryption and Ed25519 digital signature keys.

Compatible with grempe/session-keys-rb

grempe/ex_rated (Elixir)

ExRated, the Elixir OTP GenServer with the naughty name that allows you to rate-limit calls to any service that requires it.

grempe/diceware (HTML/JavaScript/CSS)

Diceware is used to create cryptographically strong passphrases. It is based on the principle that the truly random selection, based on rolls of dice, of words in a word list can result in easily memorable passwords that are also extremely resistant to attack by even the most powerful adversaries. Passwords that are six words or longer are thought to be safe for high security applications.

A live version of this tool can be found at https://grempe.github.io/diceware/

grempe/strongpass (HTML/JavaScript/CSS)

A deterministic, cryptographically strong, password and bitcoin wallet generator.

We all need passwords that are strong and easy to remember. If you can remember one strong passphrase you can generate a password for any number of websites, local applications, or even Bitcoin wallets. The same passphrase and options will always result in the same output being generated. You can rest assured that all cryptographic operations are done in your browser and no information is sent elsewhere or shared with anyone.

A live version of this tool can be found at https://grempe.github.io/strongpass/

grempe/secrets.js (JavaScript)

Another implementation of Shamir’s Secret Sharing in JavaScript.