def self.new(options = Hash.new)
rctx = Array.new
err = GPGME::gpgme_new(rctx)
exc = GPGME::error_to_exception(err)
raise exc if exc
ctx = rctx[0]
options.each_pair do |key, value|
case key
when :protocol
ctx.protocol = value
when :armor
ctx.armor = value
when :textmode
ctx.textmode = value
when :keylist_mode
ctx.keylist_mode = value
when :passphrase_callback
ctx.set_passphrase_callback(value,
options[:passphrase_callback_value])
when :progress_callback
ctx.set_progress_callback(value,
options[:progress_callback_value])
end
end
if block_given?
begin
yield ctx
ensure
GPGME::gpgme_release(ctx)
end
else
ctx
end
end