1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
= Ruby-GPGME
* http://rubyforge.org/projects/ruby-gpgme/
== Description
Ruby-GPGME is a Ruby language binding of GPGME (GnuPG Made Easy).
GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
easier for applications. It provides a High-Level Crypto API for
encryption, decryption, signing, signature verification and key
management.
== Requirements
* Ruby 1.8 or later
* GPGME 1.1.2 or later
* gpg-agent (optional, but recommended)
== Installation
$ gem install ruby-gpgme
or
$ ruby extconf.rb
$ make
$ make install
== Examples
examples/genkey.rb Generate a key pair in your keyring.
examples/keylist.rb List your keyring like gpg --list-keys.
examples/roundtrip.rb Encrypt a plain text and then decrypt it.
examples/sign.rb Create a clear text signature.
examples/verify.rb Verify a clear text signature given from stdin.
== API
Ruby-GPGME provides three levels of API. The highest level API is
close to the command line interface of GnuPG. The mid level API looks
object-oriented (or rubyish). The lowest level API is close to the C
interface of GPGME.
=== The highest level API
For example, to create a cleartext signature of the plaintext from
stdin and write the result to stdout can be written as follows.
$ ruby -rgpgme -e 'GPGME.clearsign($stdin, $stdout)'
=== The mid level API
The same example can be rewritten in the mid level API as follows.
$ ruby -rgpgme -e <<End
ctx = GPGME::Ctx.new
plain = GPGME::Data.from_io($stdin)
sig = GPGME::Data.from_io($stdout)
ctx.sign(plain, sig, GPGME::SIG_MODE_CLEAR)
End
=== The lowest level API
The same example can be rewritten in the lowest level API as follows.
$ ruby -rgpgme -e <<End
ret = Array.new
GPGME::gpgme_new(ret)
ctx = ret.shift
GPGME::gpgme_data_new_from_fd(ret, 0)
plain = ret.shift
GPGME::gpgme_data_new_from_fd(ret, 1)
sig = ret.shift
GPGME::gpgme_op_sign(ctx, plain, sig, GPGME::SIG_MODE_CLEAR)
End
As you see, it's much harder to write a program in this API than the
highest level API. However, if you are already familier with the C
interface of GPGME and want to control detailed behavior of GPGME, it
might be useful.
== License
The library itself is licensed under LGPLv2.1+. See the file
COPYING.LESSER and each file for copyright and warranty information.
|