Skip to content

davideroberts/ffi-hydrogen

 
 

Repository files navigation

Build Status

FFI::Hydrogen

Combine libhydrogen with a good implementation of string encoding in C, Nick Galbreath's base64 implementation in this case, and the end result is hopefully a fast method of encrypting data in a way that is URL safe.

Installation

Add this line to your application's Gemfile:

gem "ffi-hydrogen"

And then execute:

$ bundle

Or install it yourself as:

$ gem install ffi-hydrogen

Usage

key = ::FFI::Hydrogen.hydro_secretbox_keygen
context = "examples"

message = "0123456789"
encrypted = ::FFI::Hydrogen.hydro_secretbox_encrypt(message, context, key)
encoded = ::FFI::Hydrogen.modp_b64_encode(encrypted)
decoded = ::FFI::Hydrogen.modp_b64_decode(encoded)
decrypted = ::FFI::Hydrogen.hydro_secretbox_decrypt(decoded, context, key)

puts "message: #{message}"
puts "encrypted: #{encrypted}"
puts "encoded: #{encoded}"
puts "decoded: #{decoded}"
puts "decrypted: #{decrypted}"

::FFI::Hydrogen::Secretbox

ctx = "examples"
key = ::FFI::Hydrogen.hydro_secretbox_keygen
box = ::FFI::Hydrogen::Secretbox.new(ctx, key)

message = "0123456789"
boxed = box.encrypt_encode(message)
unboxed = box.decode_decrypt(boxed)

puts "message: #{message}"
puts "boxed: #{boxed}"
puts "unboxed: #{unboxed}"

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in ffi-hydrogen.gemspec, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

About

Ruby FFI bindings for libhydrogen

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 78.1%
  • C 21.4%
  • Shell 0.5%