gpgme 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,172 @@
1
+
2
+ SHELL = /bin/sh
3
+
4
+ #### Start of system configuration section. ####
5
+
6
+ srcdir = .
7
+ topdir = /usr/lib/ruby/1.8/x86_64-linux
8
+ hdrdir = $(topdir)
9
+ VPATH = $(srcdir):$(topdir):$(hdrdir)
10
+ exec_prefix = $(prefix)
11
+ prefix = $(DESTDIR)/usr
12
+ sharedstatedir = $(prefix)/com
13
+ mandir = $(prefix)/share/man
14
+ psdir = $(docdir)
15
+ oldincludedir = $(DESTDIR)/usr/include
16
+ localedir = $(datarootdir)/locale
17
+ bindir = $(exec_prefix)/bin
18
+ libexecdir = $(prefix)/lib/ruby1.8
19
+ sitedir = $(DESTDIR)/usr/local/lib/site_ruby
20
+ htmldir = $(docdir)
21
+ vendorarchdir = $(vendorlibdir)/$(sitearch)
22
+ includedir = $(prefix)/include
23
+ infodir = $(prefix)/share/info
24
+ vendorlibdir = $(vendordir)/$(ruby_version)
25
+ sysconfdir = $(DESTDIR)/etc
26
+ libdir = $(exec_prefix)/lib
27
+ sbindir = $(exec_prefix)/sbin
28
+ rubylibdir = $(libdir)/ruby/$(ruby_version)
29
+ docdir = $(datarootdir)/doc/$(PACKAGE)
30
+ dvidir = $(docdir)
31
+ vendordir = $(libdir)/ruby/vendor_ruby
32
+ datarootdir = $(prefix)/share
33
+ pdfdir = $(docdir)
34
+ archdir = $(rubylibdir)/$(arch)
35
+ sitearchdir = $(sitelibdir)/$(sitearch)
36
+ datadir = $(datarootdir)
37
+ localstatedir = $(DESTDIR)/var
38
+ sitelibdir = $(sitedir)/$(ruby_version)
39
+
40
+ CC = cc
41
+ LIBRUBY = $(LIBRUBY_SO)
42
+ LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
43
+ LIBRUBYARG_SHARED = -l$(RUBY_SO_NAME)
44
+ LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static
45
+
46
+ RUBY_EXTCONF_H =
47
+ CFLAGS = -fPIC -fno-strict-aliasing -g -g -O2 -fPIC $(cflags)
48
+ INCFLAGS = -I. -I. -I/usr/lib/ruby/1.8/x86_64-linux -I.
49
+ DEFS =
50
+ CPPFLAGS = -DHAVE_GPGME_OP_EXPORT_KEYS
51
+ CXXFLAGS = $(CFLAGS)
52
+ ldflags = -L. -rdynamic -Wl,-export-dynamic
53
+ dldflags =
54
+ archflag =
55
+ DLDFLAGS = $(ldflags) $(dldflags) $(archflag)
56
+ LDSHARED = $(CC) -shared
57
+ AR = ar
58
+ EXEEXT =
59
+
60
+ RUBY_INSTALL_NAME = ruby1.8
61
+ RUBY_SO_NAME = ruby1.8
62
+ arch = x86_64-linux
63
+ sitearch = x86_64-linux
64
+ ruby_version = 1.8
65
+ ruby = /usr/bin/ruby1.8
66
+ RUBY = $(ruby)
67
+ RM = rm -f
68
+ MAKEDIRS = mkdir -p
69
+ INSTALL = /usr/bin/install -c
70
+ INSTALL_PROG = $(INSTALL) -m 0755
71
+ INSTALL_DATA = $(INSTALL) -m 644
72
+ COPY = cp
73
+
74
+ #### End of system configuration section. ####
75
+
76
+ preload =
77
+
78
+ libpath = . $(libdir)
79
+ LIBPATH = -L. -L$(libdir)
80
+ DEFFILE =
81
+
82
+ CLEANFILES = mkmf.log
83
+ DISTCLEANFILES =
84
+
85
+ extout =
86
+ extout_prefix =
87
+ target_prefix =
88
+ LOCAL_LIBS =
89
+ LIBS = $(LIBRUBYARG_SHARED) -lgpgme -lgpg-error -lpthread -lrt -ldl -lcrypt -lm -lc
90
+ SRCS = gpgme_n.c
91
+ OBJS = gpgme_n.o
92
+ TARGET = gpgme_n
93
+ DLLIB = $(TARGET).so
94
+ EXTSTATIC =
95
+ STATIC_LIB =
96
+
97
+ BINDIR = $(bindir)
98
+ RUBYCOMMONDIR = $(sitedir)$(target_prefix)
99
+ RUBYLIBDIR = $(sitelibdir)$(target_prefix)
100
+ RUBYARCHDIR = $(sitearchdir)$(target_prefix)
101
+
102
+ TARGET_SO = $(DLLIB)
103
+ CLEANLIBS = $(TARGET).so $(TARGET).il? $(TARGET).tds $(TARGET).map
104
+ CLEANOBJS = *.o *.a *.s[ol] *.pdb *.exp *.bak
105
+
106
+ all: $(DLLIB)
107
+ static: $(STATIC_LIB)
108
+
109
+ clean:
110
+ @-$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES)
111
+
112
+ distclean: clean
113
+ @-$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
114
+ @-$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
115
+
116
+ realclean: distclean
117
+ install: install-so install-rb
118
+
119
+ install-so: $(RUBYARCHDIR)
120
+ install-so: $(RUBYARCHDIR)/$(DLLIB)
121
+ $(RUBYARCHDIR)/$(DLLIB): $(DLLIB)
122
+ $(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
123
+ install-rb: pre-install-rb install-rb-default
124
+ install-rb-default: pre-install-rb-default
125
+ pre-install-rb: Makefile
126
+ pre-install-rb-default: Makefile
127
+ pre-install-rb-default: $(RUBYLIBDIR)
128
+ install-rb-default: $(RUBYLIBDIR)/gpgme.rb
129
+ $(RUBYLIBDIR)/gpgme.rb: $(srcdir)/lib/gpgme.rb $(RUBYLIBDIR)
130
+ $(INSTALL_DATA) $(srcdir)/lib/gpgme.rb $(@D)
131
+ pre-install-rb-default: $(RUBYLIBDIR)/gpgme
132
+ install-rb-default: $(RUBYLIBDIR)/gpgme/compat.rb
133
+ $(RUBYLIBDIR)/gpgme/compat.rb: $(srcdir)/lib/gpgme/compat.rb $(RUBYLIBDIR)/gpgme
134
+ $(INSTALL_DATA) $(srcdir)/lib/gpgme/compat.rb $(@D)
135
+ install-rb-default: $(RUBYLIBDIR)/gpgme/constants.rb
136
+ $(RUBYLIBDIR)/gpgme/constants.rb: $(srcdir)/lib/gpgme/constants.rb $(RUBYLIBDIR)/gpgme
137
+ $(INSTALL_DATA) $(srcdir)/lib/gpgme/constants.rb $(@D)
138
+ $(RUBYARCHDIR):
139
+ $(MAKEDIRS) $@
140
+ $(RUBYLIBDIR):
141
+ $(MAKEDIRS) $@
142
+ $(RUBYLIBDIR)/gpgme:
143
+ $(MAKEDIRS) $@
144
+
145
+ site-install: site-install-so site-install-rb
146
+ site-install-so: install-so
147
+ site-install-rb: install-rb
148
+
149
+ .SUFFIXES: .c .m .cc .cxx .cpp .C .o
150
+
151
+ .cc.o:
152
+ $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
153
+
154
+ .cxx.o:
155
+ $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
156
+
157
+ .cpp.o:
158
+ $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
159
+
160
+ .C.o:
161
+ $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
162
+
163
+ .c.o:
164
+ $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) -c $<
165
+
166
+ $(DLLIB): $(OBJS) Makefile
167
+ @-$(RM) $@
168
+ $(LDSHARED) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
169
+
170
+
171
+
172
+ $(OBJS): ruby.h defines.h
@@ -0,0 +1,18 @@
1
+ COPYING
2
+ COPYING.LESSER
3
+ Makefile
4
+ Manifest.txt
5
+ README
6
+ Rakefile
7
+ THANKS
8
+ examples/edit.rb
9
+ examples/genkey.rb
10
+ examples/keylist.rb
11
+ examples/roundtrip.rb
12
+ examples/sign.rb
13
+ examples/verify.rb
14
+ extconf.rb
15
+ gpgme_n.c
16
+ lib/gpgme.rb
17
+ lib/gpgme/compat.rb
18
+ lib/gpgme/constants.rb
data/README ADDED
@@ -0,0 +1,86 @@
1
+ = Ruby-GPGME
2
+
3
+ * http://rubyforge.org/projects/ruby-gpgme/
4
+
5
+ == Description
6
+
7
+ Ruby-GPGME is a Ruby language binding of GPGME (GnuPG Made Easy).
8
+
9
+ GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
10
+ easier for applications. It provides a High-Level Crypto API for
11
+ encryption, decryption, signing, signature verification and key
12
+ management.
13
+
14
+ == Requirements
15
+
16
+ * Ruby 1.8 or later
17
+ * GPGME 1.1.2 or later
18
+ * gpg-agent (optional, but recommended)
19
+
20
+ == Installation
21
+
22
+ $ gem install ruby-gpgme
23
+
24
+ or
25
+
26
+ $ ruby extconf.rb
27
+ $ make
28
+ $ make install
29
+
30
+ == Examples
31
+
32
+ examples/genkey.rb Generate a key pair in your keyring.
33
+ examples/keylist.rb List your keyring like gpg --list-keys.
34
+ examples/roundtrip.rb Encrypt a plain text and then decrypt it.
35
+ examples/sign.rb Create a clear text signature.
36
+ examples/verify.rb Verify a clear text signature given from stdin.
37
+
38
+ == API
39
+
40
+ Ruby-GPGME provides three levels of API. The highest level API is
41
+ close to the command line interface of GnuPG. The mid level API looks
42
+ object-oriented (or rubyish). The lowest level API is close to the C
43
+ interface of GPGME.
44
+
45
+ === The highest level API
46
+
47
+ For example, to create a cleartext signature of the plaintext from
48
+ stdin and write the result to stdout can be written as follows.
49
+
50
+ $ ruby -rgpgme -e 'GPGME.clearsign($stdin, $stdout)'
51
+
52
+ === The mid level API
53
+
54
+ The same example can be rewritten in the mid level API as follows.
55
+
56
+ $ ruby -rgpgme -e <<End
57
+ ctx = GPGME::Ctx.new
58
+ plain = GPGME::Data.from_io($stdin)
59
+ sig = GPGME::Data.from_io($stdout)
60
+ ctx.sign(plain, sig, GPGME::SIG_MODE_CLEAR)
61
+ End
62
+
63
+ === The lowest level API
64
+
65
+ The same example can be rewritten in the lowest level API as follows.
66
+
67
+ $ ruby -rgpgme -e <<End
68
+ ret = Array.new
69
+ GPGME::gpgme_new(ret)
70
+ ctx = ret.shift
71
+ GPGME::gpgme_data_new_from_fd(ret, 0)
72
+ plain = ret.shift
73
+ GPGME::gpgme_data_new_from_fd(ret, 1)
74
+ sig = ret.shift
75
+ GPGME::gpgme_op_sign(ctx, plain, sig, GPGME::SIG_MODE_CLEAR)
76
+ End
77
+
78
+ As you see, it's much harder to write a program in this API than the
79
+ highest level API. However, if you are already familier with the C
80
+ interface of GPGME and want to control detailed behavior of GPGME, it
81
+ might be useful.
82
+
83
+ == License
84
+
85
+ The library itself is licensed under LGPLv2.1+. See the file
86
+ COPYING.LESSER and each file for copyright and warranty information.
@@ -0,0 +1,17 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+
6
+ Hoe.spec("gpgme") do
7
+ self.rubyforge_name = "ruby-gpgme"
8
+ self.author = ['Daiki Ueno']
9
+ self.email = 'ueno@unixuser.org'
10
+ self.readme_file = "README"
11
+ self.spec_extras = {
12
+ "extensions" => ["extconf.rb"],
13
+ }
14
+ self.need_tar = false
15
+ self.need_tar_gz = true
16
+ self.source_prefix = 'ruby-'
17
+ end
data/THANKS ADDED
@@ -0,0 +1,15 @@
1
+ Ruby-GPGME was originally written by Daiki Ueno. Other people
2
+ contributed by reporting problems, suggesting various improvements or
3
+ submitting actual code. Here is a list of those people. Help us keep
4
+ it complete and free of errors.
5
+
6
+
7
+
8
+ Carl Corliss
9
+ Jérémie Pierson
10
+ Kouhei Sutou
11
+ Kris Nuttycombe
12
+ Marc Dequènes
13
+ Rob Pitt
14
+ Rory McKinley
15
+ Sam Hall
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env ruby
2
+ require 'gpgme'
3
+
4
+ # If you do not have gpg-agent installed, comment out the following
5
+ # and set it as :passphrase_callback.
6
+ #
7
+ # def passfunc(hook, uid_hint, passphrase_info, prev_was_bad, fd)
8
+ # $stderr.write("Passphrase for #{uid_hint}: ")
9
+ # $stderr.flush
10
+ # begin
11
+ # system('stty -echo')
12
+ # io = IO.for_fd(fd, 'w')
13
+ # io.puts(gets)
14
+ # io.flush
15
+ # ensure
16
+ # (0 ... $_.length).each do |i| $_[i] = ?0 end if $_
17
+ # system('stty echo')
18
+ # end
19
+ # $stderr.puts
20
+ # end
21
+
22
+ unless ENV['GPG_AGENT_INFO']
23
+ $stderr.puts("gpg-agent is not running. See the comment in #{$0}.")
24
+ exit(1)
25
+ end
26
+
27
+ unless ENV['GNUPGHOME']
28
+ $stderr.write('As GNUPGHOME is not set, the generated key pair will be stored into *your* keyring. Really proceed? (y/N) ')
29
+ $stderr.flush
30
+ exit(1) unless gets.chomp == 'y'
31
+ end
32
+
33
+ unless ARGV.length == 1
34
+ $stderr.puts("Usage: #{$0} KEYGRIP")
35
+ exit(1)
36
+ end
37
+
38
+ def progfunc(hook, what, type, current, total)
39
+ $stderr.write("#{what}: #{current}/#{total}\r")
40
+ $stderr.flush
41
+ end
42
+
43
+ def editfunc(hook, status, args, fd)
44
+ case status
45
+ when GPGME::GPGME_STATUS_GET_BOOL
46
+ begin
47
+ $stderr.write("#{args} (y/n) ")
48
+ $stderr.flush
49
+ line = gets
50
+ end until line =~ /\A\s*[ny]\s*\z/
51
+ io = IO.for_fd(fd)
52
+ io.puts(line.strip)
53
+ io.flush
54
+ when GPGME::GPGME_STATUS_GET_LINE, GPGME::GPGME_STATUS_GET_HIDDEN
55
+ $stderr.write("#{args}: ")
56
+ $stderr.flush
57
+ line = gets
58
+ io = IO.for_fd(fd)
59
+ io.puts(line)
60
+ io.flush
61
+ else
62
+ $stderr.puts([status, args].inspect)
63
+ end
64
+ end
65
+
66
+ ctx = GPGME::Ctx.new({:progress_callback => method(:progfunc),
67
+ # :passphrase_callback => method(:passfunc)
68
+ })
69
+ keystr = ARGV.shift
70
+ keys = ctx.keys(keystr)
71
+ if keys.empty?
72
+ $stderr.puts("Can't find key for \"#{keystr}\"")
73
+ exit(1)
74
+ end
75
+
76
+ $stderr.puts(keys.first.inspect)
77
+ ctx.edit_key(keys.first, method(:editfunc))
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env ruby
2
+ require 'gpgme'
3
+
4
+ # If you do not have gpg-agent installed, comment out the following
5
+ # and set it as :passphrase_callback.
6
+ #
7
+ # def passfunc(hook, uid_hint, passphrase_info, prev_was_bad, fd)
8
+ # $stderr.write("Passphrase for #{uid_hint}: ")
9
+ # $stderr.flush
10
+ # begin
11
+ # system('stty -echo')
12
+ # io = IO.for_fd(fd, 'w')
13
+ # io.puts(gets)
14
+ # io.flush
15
+ # ensure
16
+ # (0 ... $_.length).each do |i| $_[i] = ?0 end if $_
17
+ # system('stty echo')
18
+ # end
19
+ # $stderr.puts
20
+ # end
21
+
22
+ unless ENV['GPG_AGENT_INFO']
23
+ $stderr.puts("gpg-agent is not running. See the comment in #{$0}.")
24
+ exit(1)
25
+ end
26
+
27
+ unless ENV['GNUPGHOME']
28
+ $stderr.write('As GNUPGHOME is not set, the generated key pair will be stored into *your* keyring. Really proceed? (y/N) ')
29
+ $stderr.flush
30
+ exit(1) unless gets.chomp == 'y'
31
+ end
32
+
33
+ def progfunc(hook, what, type, current, total)
34
+ $stderr.write("#{what}: #{current}/#{total}\r")
35
+ $stderr.flush
36
+ end
37
+
38
+ ctx = GPGME::Ctx.new({:progress_callback => method(:progfunc),
39
+ # :passphrase_callback => method(:passfunc)
40
+ })
41
+
42
+ ctx.genkey(<<'EOF', nil, nil)
43
+ <GnupgKeyParms format="internal">
44
+ Key-Type: DSA
45
+ Key-Length: 1024
46
+ Subkey-Type: ELG-E
47
+ Subkey-Length: 1024
48
+ Name-Real: Joe Tester
49
+ Name-Comment: with stupid passphrase
50
+ Name-Email: joe@foo.bar
51
+ Expire-Date: 0
52
+ Passphrase: abc
53
+ </GnupgKeyParms>
54
+ EOF
55
+ $stderr.puts