gpgme.rb

Path: lib/gpgme.rb
Last Update: Wed Sep 16 04:00:05 +0000 2009

What‘s this?

Ruby-GPGME is a Ruby language binding of GPGME (GnuPG Made Easy).

Requirements

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 and decrypt a plain text.
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

It can be written in the highest level API to create a cleartext signature of the plaintext from stdin 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 higher level API. However, if you are already familier with the C interface of GPGME and/or want to control detailed behavior of GPGME, it might be useful.

License

Copyright (C) 2003,2006,2007,2008,2009 Daiki Ueno

This file is a part of Ruby-GPGME.

Ruby-GPGME is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

Ruby-GPGME is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Required files

gpgme_n   gpgme/constants  

[Validate]