Sha256: d7343cf9644635ff496f01582b96fe041f53173e48151c51d101f3e8fd60450b

Contents?: true

Size: 1.98 KB

Versions: 6

Compression:

Stored size: 1.98 KB

Contents

[![Build Status](https://travis-ci.org/minond/ffi-hydrogen.svg?branch=master)](https://travis-ci.org/minond/ffi-hydrogen)

# FFI::Hydrogen

Combine [libhydrogen](https://github.com/jedisct1/libhydrogen) with a good
implementation of string encoding in C, Nick Galbreath's
[base64](https://github.com/client9/stringencoders) 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:

```ruby
gem "ffi-hydrogen"
```

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install ffi-hydrogen

## Usage

```ruby
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`

```ruby
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](https://rubygems.org).

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ffi-hydrogen-0.1.5 README.md
ffi-hydrogen-0.1.4 README.md
ffi-hydrogen-0.1.3 README.md
ffi-hydrogen-0.1.2 README.md
ffi-hydrogen-0.1.1 README.md
ffi-hydrogen-0.1.0 README.md