gpgme-ffi 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. data/examples/edit.rb +77 -0
  2. data/examples/genkey.rb +55 -0
  3. data/examples/keylist.rb +7 -0
  4. data/examples/roundtrip.rb +42 -0
  5. data/examples/sign.rb +31 -0
  6. data/examples/verify.rb +8 -0
  7. data/ext/gpgme/Makefile.in +55 -0
  8. data/ext/gpgme/extconf.rb +8 -0
  9. data/ext/gpgme/extract_enums.rb +88 -0
  10. data/ext/gpgme/gpgme-1.3.1.tar.bz2 +0 -0
  11. data/ext/gpgme/libassuan-2.0.2.tar.bz2 +0 -0
  12. data/ext/gpgme/libgpg-error-1.10.tar.bz2 +0 -0
  13. data/ext/gpgme/libgpgme_gem.so +0 -0
  14. data/lib/gpgme/compat.rb +48 -0
  15. data/lib/gpgme/constants.rb +187 -0
  16. data/lib/gpgme/crypto.rb +357 -0
  17. data/lib/gpgme/ctx.rb +462 -0
  18. data/lib/gpgme/data.rb +189 -0
  19. data/lib/gpgme/engine.rb +76 -0
  20. data/lib/gpgme/error.rb +66 -0
  21. data/lib/gpgme/ffi/ctx.rb +36 -0
  22. data/lib/gpgme/ffi/data.rb +24 -0
  23. data/lib/gpgme/ffi/decrypt_result.rb +14 -0
  24. data/lib/gpgme/ffi/encrypt_result.rb +22 -0
  25. data/lib/gpgme/ffi/engine_info.rb +17 -0
  26. data/lib/gpgme/ffi/enums.rb +687 -0
  27. data/lib/gpgme/ffi/functions.rb +364 -0
  28. data/lib/gpgme/ffi/import_result.rb +35 -0
  29. data/lib/gpgme/ffi/import_status.rb +15 -0
  30. data/lib/gpgme/ffi/invalid_key.rb +14 -0
  31. data/lib/gpgme/ffi/key.rb +60 -0
  32. data/lib/gpgme/ffi/key_sig.rb +20 -0
  33. data/lib/gpgme/ffi/library.rb +279 -0
  34. data/lib/gpgme/ffi/meta.rb +57 -0
  35. data/lib/gpgme/ffi/new_signature.rb +18 -0
  36. data/lib/gpgme/ffi/sig_notation.rb +12 -0
  37. data/lib/gpgme/ffi/sign_result.rb +33 -0
  38. data/lib/gpgme/ffi/signature.rb +35 -0
  39. data/lib/gpgme/ffi/sub_key.rb +27 -0
  40. data/lib/gpgme/ffi/trust_item.rb +31 -0
  41. data/lib/gpgme/ffi/user_id.rb +30 -0
  42. data/lib/gpgme/ffi/verify_result.rb +22 -0
  43. data/lib/gpgme/ffi.rb +22 -0
  44. data/lib/gpgme/io_callbacks.rb +21 -0
  45. data/lib/gpgme/key.rb +242 -0
  46. data/lib/gpgme/key_common.rb +43 -0
  47. data/lib/gpgme/key_sig.rb +35 -0
  48. data/lib/gpgme/misc.rb +66 -0
  49. data/lib/gpgme/signature.rb +85 -0
  50. data/lib/gpgme/sub_key.rb +58 -0
  51. data/lib/gpgme/user_id.rb +20 -0
  52. data/lib/gpgme/version.rb +3 -0
  53. data/lib/gpgme.rb +106 -0
  54. data/test/crypto_test.rb +246 -0
  55. data/test/ctx_test.rb +432 -0
  56. data/test/data_test.rb +129 -0
  57. data/test/files/testkey_pub.gpg +52 -0
  58. data/test/files/testkey_sec.gpg +54 -0
  59. data/test/gpgme_test.rb +12 -0
  60. data/test/key_test.rb +209 -0
  61. data/test/signature_test.rb +52 -0
  62. data/test/sub_key_test.rb +48 -0
  63. data/test/support/resources.rb +516 -0
  64. data/test/test_helper.rb +84 -0
  65. metadata +203 -0
data/examples/edit.rb ADDED
@@ -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 = ::FFI::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 = ::FFI::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 = ::FFI::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 = ::FFI::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
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ require 'gpgme'
3
+
4
+ ctx = GPGME::Ctx.new
5
+ ctx.each_key(ARGV.shift) do |key|
6
+ puts(key)
7
+ end
@@ -0,0 +1,42 @@
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 = ::FFI::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
+ plain = 'test test test'
28
+ puts("Plaintext:\n#{plain}")
29
+
30
+ # Perform symmetric encryption on PLAIN.
31
+ crypto = GPGME::Crypto.new(:armor => true)
32
+ cipher = crypto.encrypt(plain, {:symmetric => true,
33
+ # :passphrase_callback => method(:passfunc)
34
+ })
35
+ str = cipher.read
36
+ puts("Ciphertext:\n#{str}")
37
+
38
+ cipher = GPGME::Data.new(str)
39
+ plain = crypto.decrypt(cipher, {
40
+ # :passphrase_callback => method(:passfunc)
41
+ })
42
+ puts("Plaintext:\n#{plain.read}")
data/examples/sign.rb ADDED
@@ -0,0 +1,31 @@
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 = ::FFI::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
+ crypto = GPGME::Crypto.new
28
+ signature = crypto.clearsign('test test test', {
29
+ # :passphrase_callback => method(:passfunc)
30
+ })
31
+ puts signature.read
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ require 'gpgme'
3
+
4
+ crypto = GPGME::Crypto.new
5
+ signature = GPGME::Data.new(ARGF.read)
6
+ crypto.verify(signature) do |sig|
7
+ puts(sig.to_s)
8
+ end
@@ -0,0 +1,55 @@
1
+ BUILD := <%= BUILD %>
2
+ SRC := <%= SRC %>
3
+ PREFIX := <%= PREFIX %>
4
+
5
+ TARGETS := ${SRC}/libgpgme_gem.so ${SRC}/../../lib/gpgme/ffi/enums.rb
6
+
7
+ GPG_ERROR := libgpg-error-1.10
8
+ ASSUAN := libassuan-2.0.2
9
+ GPGME := gpgme-1.3.1
10
+
11
+ COMMON_FLAGS := --prefix=${PREFIX} --disable-shared --enable-static --with-pic
12
+ GPG_ERROR_FLAGS := --disable-nls
13
+ ASSUAN_FLAGS := --with-gpg-error-prefix=${PREFIX}
14
+ GPGME_FLAGS := --with-gpg-error-prefix=${PREFIX} --with-libassuan-prefix=${PREFIX}
15
+
16
+ all: ${BUILD}/libgpgme_gem.so ${BUILD}/enums.rb
17
+
18
+ clean:
19
+ rm -f ${BUILD}/libgpgme_gem.so ${BUILD}/enums.rb
20
+
21
+ ${BUILD}/libgpgme_gem.so: ${BUILD}/libgpgme_ext.a ${BUILD}/libgpg-error_ext.a ${BUILD}/libassuan_ext.a
22
+ gcc -s -shared -o $@ -Wl,--whole-archive ${BUILD}/libgpgme_ext.a -Wl,--no-whole-archive ${BUILD}/libgpg-error_ext.a ${BUILD}/libassuan_ext.a
23
+
24
+ ${BUILD}/%_ext.a: ${PREFIX}/lib/%.a
25
+ cp $< $@
26
+
27
+ ${PREFIX}/lib/libgpgme.a ${GPGME}/src/gpgme.h: ${SRC}/${GPGME}.tar.bz2 ${PREFIX}/lib/libassuan.a ${PREFIX}/lib/libgpg-error.a
28
+ tar xf $< -C ${BUILD}
29
+ cd ${GPGME} && ./configure ${COMMON_FLAGS} ${GPGME_FLAGS}
30
+ ${MAKE} -C ${GPGME} install
31
+
32
+ ${PREFIX}/lib/libassuan.a: ${SRC}/${ASSUAN}.tar.bz2 ${PREFIX}/lib/libgpg-error.a
33
+ tar xf $< -C ${BUILD}
34
+ cd ${ASSUAN} && ./configure ${COMMON_FLAGS} ${ASSUAN_FLAGS}
35
+ ${MAKE} -C ${ASSUAN} install
36
+
37
+ ${PREFIX}/lib/libgpg-error.a ${GPG_ERROR}/src/gpg-error.h: ${SRC}/${GPG_ERROR}.tar.bz2
38
+ tar xf $< -C ${BUILD}
39
+ cd ${GPG_ERROR} && ./configure ${COMMON_FLAGS} ${GPG_ERROR_FLAGS}
40
+ ${MAKE} -C ${GPG_ERROR} install
41
+
42
+ ${BUILD}/enums.rb: ${SRC}/extract_enums.rb ${GPG_ERROR}/src/gpg-error.h ${GPGME}/src/gpgme.h
43
+ ruby -- $^ $@
44
+
45
+ install: all
46
+ if [ "${SRC}" != "${BUILD}" ]; then \
47
+ cp ${BUILD}/libgpgme_gem.so ${SRC}/libgpgme_gem.so; \
48
+ fi
49
+ cp ${BUILD}/enums.rb ${SRC}/../../lib/gpgme/ffi/enums.rb
50
+
51
+ uninstall:
52
+ if [ "${SRC}" != "${BUILD}" ]; then \
53
+ rm -f ${SRC}/libgpgme_gem.so; \
54
+ fi
55
+ rm -f ${SRC}/../../lib/gpgme/ffi/enums.rb
@@ -0,0 +1,8 @@
1
+ require "erb"
2
+
3
+ BUILD = Dir::pwd
4
+ SRC = File.expand_path(File.dirname(__FILE__))
5
+ PREFIX = "#{BUILD}/dst"
6
+
7
+ template = ERB.new File.read("#{SRC}/Makefile.in")
8
+ File.write "#{BUILD}/Makefile", template.result(binding)
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ def rubify(filename, enums)
4
+
5
+ state = :source
6
+ fields = {}
7
+ last_field = nil
8
+
9
+ enums.puts " # rubified #{File.basename(filename)}"
10
+
11
+ close_enum = ->(name) do
12
+
13
+ enums.puts " # #{$1}"
14
+ fields.each do |key, value|
15
+ enums.puts " #{key} = #{value}"
16
+ end
17
+
18
+ fields = {}
19
+ last_field = nil
20
+
21
+
22
+ enums.puts ""
23
+ end
24
+
25
+ File.open(filename, "r") do |io|
26
+ loop do
27
+ line = io.gets
28
+ break if line.nil?
29
+ line.strip!
30
+ next if line.empty?
31
+
32
+ case state
33
+ when :source
34
+ state = :enum if line == "typedef enum"
35
+
36
+ when :enum
37
+ state = :enum_block if line == "{"
38
+ if line =~ /^([a-z0-9_]+);$/
39
+ state = :source
40
+
41
+ close_enum.call $1
42
+ end
43
+
44
+ when :enum_block
45
+ state = :enum if line == "}"
46
+
47
+ if line =~ /^([A-Z0-9_a-z]+)\s*=([^,\/]+),?/
48
+ fields[$1] = $2
49
+
50
+ last_field = $1
51
+ elsif line =~ /^([A-Z0-9_a-z]+)\s*,?/
52
+ if last_field.nil?
53
+ fields[$1] = 0
54
+ else
55
+ fields[$1] = "#{last_field} + 1"
56
+ end
57
+
58
+ last_field = $1
59
+ elsif line =~ /^} ([a-z0-9_]+);$/
60
+ state = :source
61
+ close_enum.call $1
62
+ end
63
+ end
64
+
65
+ if line =~ /^#define ([A-Z0-9_a-z]+)\s+([^\/]+)/
66
+ if $1.start_with?("Gpgme") ||
67
+ $1.start_with?("_GPG") ||
68
+ $1 == "GPG_ERROR_H" ||
69
+ $1 == "GPG_ERR_INLINE"
70
+
71
+ next
72
+ else
73
+ enums.puts " #{$1} = #{$2}"
74
+ end
75
+ end
76
+ end
77
+ end
78
+
79
+ enums.puts ""
80
+ end
81
+
82
+ enums = File.open(ARGV.pop, "w")
83
+
84
+ enums.puts "module GPGME"
85
+
86
+ ARGV.each { |source| rubify source, enums }
87
+
88
+ enums.puts "end"
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,48 @@
1
+ require 'gpgme'
2
+
3
+ # TODO: Find why is this needed. I guess the name compat means it's just
4
+ # backwards compatibility. Consider removing?
5
+ module GPGME
6
+ GpgmeError = Error
7
+ GpgmeData = Data
8
+ GpgmeEngineInfo = EngineInfo
9
+ GpgmeCtx = Ctx
10
+ GpgmeKey = Key
11
+ GpgmeSubKey = SubKey
12
+ GpgmeUserID = UserID
13
+ GpgmeKeySig = KeySig
14
+ GpgmeVerifyResult = VerifyResult
15
+ GpgmeSignature = Signature
16
+ GpgmeDecryptResult = DecryptResult
17
+ GpgmeSignResult = SignResult
18
+ GpgmeEncryptResult = EncryptResult
19
+ GpgmeInvalidKey = InvalidKey
20
+ GpgmeNewSignature = NewSignature
21
+ GpgmeImportStatus = ImportStatus
22
+ GpgmeImportResult = ImportResult
23
+
24
+ class Ctx
25
+ # Set the data pointer to the beginning.
26
+ def rewind
27
+ seek(0)
28
+ end
29
+ end
30
+
31
+ def gpgme_data_rewind(dh)
32
+ begin
33
+ GPGME::gpgme_data_seek(dh, 0, IO::SEEK_SET)
34
+ rescue SystemCallError => e
35
+ return e.errno
36
+ end
37
+ end
38
+ module_function :gpgme_data_rewind
39
+
40
+ def gpgme_op_import_ext(ctx, keydata, nr)
41
+ err = GPGME::gpgme_op_import(ctx, keydata)
42
+ if GPGME::gpgme_err_code(err) == GPGME::GPG_ERR_NO_ERROR
43
+ result = GPGME::gpgme_op_import_result(ctx)
44
+ nr.push(result.considered)
45
+ end
46
+ end
47
+ module_function :gpgme_op_import_ext
48
+ end
@@ -0,0 +1,187 @@
1
+ module GPGME
2
+
3
+ ATTR_ALGO = GPGME_ATTR_ALGO
4
+ ATTR_CAN_CERTIFY = GPGME_ATTR_CAN_CERTIFY
5
+ ATTR_CAN_ENCRYPT = GPGME_ATTR_CAN_ENCRYPT
6
+ ATTR_CAN_SIGN = GPGME_ATTR_CAN_SIGN
7
+ ATTR_CHAINID = GPGME_ATTR_CHAINID
8
+ ATTR_COMMENT = GPGME_ATTR_COMMENT
9
+ ATTR_CREATED = GPGME_ATTR_CREATED
10
+ ATTR_EMAIL = GPGME_ATTR_EMAIL
11
+ ATTR_ERRTOK = GPGME_ATTR_ERRTOK
12
+ ATTR_EXPIRE = GPGME_ATTR_EXPIRE
13
+ ATTR_FPR = GPGME_ATTR_FPR
14
+ ATTR_ISSUER = GPGME_ATTR_ISSUER
15
+ ATTR_IS_SECRET = GPGME_ATTR_IS_SECRET
16
+ ATTR_KEYID = GPGME_ATTR_KEYID
17
+ ATTR_KEY_CAPS = GPGME_ATTR_KEY_CAPS
18
+ ATTR_KEY_DISABLED = GPGME_ATTR_KEY_DISABLED
19
+ ATTR_KEY_EXPIRED = GPGME_ATTR_KEY_EXPIRED
20
+ ATTR_KEY_INVALID = GPGME_ATTR_KEY_INVALID
21
+ ATTR_KEY_REVOKED = GPGME_ATTR_KEY_REVOKED
22
+ ATTR_LEN = GPGME_ATTR_LEN
23
+ ATTR_LEVEL = GPGME_ATTR_LEVEL
24
+ ATTR_NAME = GPGME_ATTR_NAME
25
+ ATTR_OTRUST = GPGME_ATTR_OTRUST
26
+ ATTR_SERIAL = GPGME_ATTR_SERIAL
27
+ ATTR_SIG_STATUS = GPGME_ATTR_SIG_STATUS
28
+ ATTR_SIG_SUMMARY = GPGME_ATTR_SIG_SUMMARY
29
+ ATTR_TYPE = GPGME_ATTR_TYPE
30
+ ATTR_UID_INVALID = GPGME_ATTR_UID_INVALID
31
+ ATTR_UID_REVOKED = GPGME_ATTR_UID_REVOKED
32
+ ATTR_USERID = GPGME_ATTR_USERID
33
+ ATTR_VALIDITY = GPGME_ATTR_VALIDITY
34
+ DATA_ENCODING_ARMOR = GPGME_DATA_ENCODING_ARMOR
35
+ DATA_ENCODING_BASE64 = GPGME_DATA_ENCODING_BASE64
36
+ DATA_ENCODING_BINARY = GPGME_DATA_ENCODING_BINARY
37
+ DATA_ENCODING_NONE = GPGME_DATA_ENCODING_NONE
38
+ ENCRYPT_ALWAYS_TRUST = GPGME_ENCRYPT_ALWAYS_TRUST
39
+ IMPORT_NEW = GPGME_IMPORT_NEW
40
+ IMPORT_SECRET = GPGME_IMPORT_SECRET
41
+ IMPORT_SIG = GPGME_IMPORT_SIG
42
+ IMPORT_SUBKEY = GPGME_IMPORT_SUBKEY
43
+ IMPORT_UID = GPGME_IMPORT_UID
44
+ KEYLIST_MODE_EXTERN = GPGME_KEYLIST_MODE_EXTERN
45
+ KEYLIST_MODE_LOCAL = GPGME_KEYLIST_MODE_LOCAL
46
+ KEYLIST_MODE_SIGS = GPGME_KEYLIST_MODE_SIGS
47
+ KEYLIST_MODE_VALIDATE = GPGME_KEYLIST_MODE_VALIDATE
48
+ MD_CRC24_RFC2440 = GPGME_MD_CRC24_RFC2440
49
+ MD_CRC32 = GPGME_MD_CRC32
50
+ MD_CRC32_RFC1510 = GPGME_MD_CRC32_RFC1510
51
+ MD_HAVAL = GPGME_MD_HAVAL
52
+ MD_MD2 = GPGME_MD_MD2
53
+ MD_MD4 = GPGME_MD_MD4
54
+ MD_MD5 = GPGME_MD_MD5
55
+ MD_RMD160 = GPGME_MD_RMD160
56
+ MD_SHA1 = GPGME_MD_SHA1
57
+ MD_SHA256 = GPGME_MD_SHA256
58
+ MD_SHA384 = GPGME_MD_SHA384
59
+ MD_SHA512 = GPGME_MD_SHA512
60
+ MD_TIGER = GPGME_MD_TIGER
61
+ PK_DSA = GPGME_PK_DSA
62
+ PK_ELG = GPGME_PK_ELG
63
+ PK_ELG_E = GPGME_PK_ELG_E
64
+ PK_RSA = GPGME_PK_RSA
65
+ PROTOCOL_CMS = GPGME_PROTOCOL_CMS
66
+ PROTOCOL_OpenPGP = GPGME_PROTOCOL_OpenPGP
67
+ SIGSUM_BAD_POLICY = GPGME_SIGSUM_BAD_POLICY
68
+ SIGSUM_CRL_MISSING = GPGME_SIGSUM_CRL_MISSING
69
+ SIGSUM_CRL_TOO_OLD = GPGME_SIGSUM_CRL_TOO_OLD
70
+ SIGSUM_GREEN = GPGME_SIGSUM_GREEN
71
+ SIGSUM_KEY_EXPIRED = GPGME_SIGSUM_KEY_EXPIRED
72
+ SIGSUM_KEY_MISSING = GPGME_SIGSUM_KEY_MISSING
73
+ SIGSUM_KEY_REVOKED = GPGME_SIGSUM_KEY_REVOKED
74
+ SIGSUM_RED = GPGME_SIGSUM_RED
75
+ SIGSUM_SIG_EXPIRED = GPGME_SIGSUM_SIG_EXPIRED
76
+ SIGSUM_SYS_ERROR = GPGME_SIGSUM_SYS_ERROR
77
+ SIGSUM_VALID = GPGME_SIGSUM_VALID
78
+ SIG_MODE_CLEAR = GPGME_SIG_MODE_CLEAR
79
+ SIG_MODE_DETACH = GPGME_SIG_MODE_DETACH
80
+ SIG_MODE_NORMAL = GPGME_SIG_MODE_NORMAL
81
+ SIG_STAT_BAD = GPGME_SIG_STAT_BAD
82
+ SIG_STAT_DIFF = GPGME_SIG_STAT_DIFF
83
+ SIG_STAT_ERROR = GPGME_SIG_STAT_ERROR
84
+ SIG_STAT_GOOD = GPGME_SIG_STAT_GOOD
85
+ SIG_STAT_GOOD_EXP = GPGME_SIG_STAT_GOOD_EXP
86
+ SIG_STAT_GOOD_EXPKEY = GPGME_SIG_STAT_GOOD_EXPKEY
87
+ SIG_STAT_NOKEY = GPGME_SIG_STAT_NOKEY
88
+ SIG_STAT_NONE = GPGME_SIG_STAT_NONE
89
+ SIG_STAT_NOSIG = GPGME_SIG_STAT_NOSIG
90
+ STATUS_ABORT = GPGME_STATUS_ABORT
91
+ STATUS_ALREADY_SIGNED = GPGME_STATUS_ALREADY_SIGNED
92
+ STATUS_BADARMOR = GPGME_STATUS_BADARMOR
93
+ STATUS_BADMDC = GPGME_STATUS_BADMDC
94
+ STATUS_BADSIG = GPGME_STATUS_BADSIG
95
+ STATUS_BAD_PASSPHRASE = GPGME_STATUS_BAD_PASSPHRASE
96
+ STATUS_BEGIN_DECRYPTION = GPGME_STATUS_BEGIN_DECRYPTION
97
+ STATUS_BEGIN_ENCRYPTION = GPGME_STATUS_BEGIN_ENCRYPTION
98
+ STATUS_BEGIN_STREAM = GPGME_STATUS_BEGIN_STREAM
99
+ STATUS_DECRYPTION_FAILED = GPGME_STATUS_DECRYPTION_FAILED
100
+ STATUS_DECRYPTION_OKAY = GPGME_STATUS_DECRYPTION_OKAY
101
+ STATUS_DELETE_PROBLEM = GPGME_STATUS_DELETE_PROBLEM
102
+ STATUS_ENC_TO = GPGME_STATUS_ENC_TO
103
+ STATUS_END_DECRYPTION = GPGME_STATUS_END_DECRYPTION
104
+ STATUS_END_ENCRYPTION = GPGME_STATUS_END_ENCRYPTION
105
+ STATUS_END_STREAM = GPGME_STATUS_END_STREAM
106
+ STATUS_ENTER = GPGME_STATUS_ENTER
107
+ STATUS_EOF = GPGME_STATUS_EOF
108
+ STATUS_ERRMDC = GPGME_STATUS_ERRMDC
109
+ STATUS_ERROR = GPGME_STATUS_ERROR
110
+ STATUS_ERRSIG = GPGME_STATUS_ERRSIG
111
+ STATUS_EXPKEYSIG = GPGME_STATUS_EXPKEYSIG
112
+ STATUS_EXPSIG = GPGME_STATUS_EXPSIG
113
+ STATUS_FILE_DONE = GPGME_STATUS_FILE_DONE
114
+ STATUS_FILE_ERROR = GPGME_STATUS_FILE_ERROR
115
+ STATUS_FILE_START = GPGME_STATUS_FILE_START
116
+ STATUS_GET_BOOL = GPGME_STATUS_GET_BOOL
117
+ STATUS_GET_HIDDEN = GPGME_STATUS_GET_HIDDEN
118
+ STATUS_GET_LINE = GPGME_STATUS_GET_LINE
119
+ STATUS_GOODMDC = GPGME_STATUS_GOODMDC
120
+ STATUS_GOODSIG = GPGME_STATUS_GOODSIG
121
+ STATUS_GOOD_PASSPHRASE = GPGME_STATUS_GOOD_PASSPHRASE
122
+ STATUS_GOT_IT = GPGME_STATUS_GOT_IT
123
+ STATUS_IMPORTED = GPGME_STATUS_IMPORTED
124
+ STATUS_IMPORT_RES = GPGME_STATUS_IMPORT_RES
125
+ STATUS_INV_RECP = GPGME_STATUS_INV_RECP
126
+ STATUS_KEYEXPIRED = GPGME_STATUS_KEYEXPIRED
127
+ STATUS_KEYREVOKED = GPGME_STATUS_KEYREVOKED
128
+ STATUS_KEY_CREATED = GPGME_STATUS_KEY_CREATED
129
+ STATUS_LEAVE = GPGME_STATUS_LEAVE
130
+ STATUS_MISSING_PASSPHRASE = GPGME_STATUS_MISSING_PASSPHRASE
131
+ STATUS_NEED_PASSPHRASE = GPGME_STATUS_NEED_PASSPHRASE
132
+ STATUS_NEED_PASSPHRASE_SYM = GPGME_STATUS_NEED_PASSPHRASE_SYM
133
+ STATUS_NODATA = GPGME_STATUS_NODATA
134
+ STATUS_NOTATION_DATA = GPGME_STATUS_NOTATION_DATA
135
+ STATUS_NOTATION_NAME = GPGME_STATUS_NOTATION_NAME
136
+ STATUS_NO_PUBKEY = GPGME_STATUS_NO_PUBKEY
137
+ STATUS_NO_RECP = GPGME_STATUS_NO_RECP
138
+ STATUS_NO_SECKEY = GPGME_STATUS_NO_SECKEY
139
+ STATUS_POLICY_URL = GPGME_STATUS_POLICY_URL
140
+ STATUS_PROGRESS = GPGME_STATUS_PROGRESS
141
+ STATUS_RSA_OR_IDEA = GPGME_STATUS_RSA_OR_IDEA
142
+ STATUS_SESSION_KEY = GPGME_STATUS_SESSION_KEY
143
+ STATUS_SHM_GET = GPGME_STATUS_SHM_GET
144
+ STATUS_SHM_GET_BOOL = GPGME_STATUS_SHM_GET_BOOL
145
+ STATUS_SHM_GET_HIDDEN = GPGME_STATUS_SHM_GET_HIDDEN
146
+ STATUS_SHM_INFO = GPGME_STATUS_SHM_INFO
147
+ STATUS_SIGEXPIRED = GPGME_STATUS_SIGEXPIRED
148
+ STATUS_SIG_CREATED = GPGME_STATUS_SIG_CREATED
149
+ STATUS_SIG_ID = GPGME_STATUS_SIG_ID
150
+ STATUS_TRUNCATED = GPGME_STATUS_TRUNCATED
151
+ STATUS_TRUST_FULLY = GPGME_STATUS_TRUST_FULLY
152
+ STATUS_TRUST_MARGINAL = GPGME_STATUS_TRUST_MARGINAL
153
+ STATUS_TRUST_NEVER = GPGME_STATUS_TRUST_NEVER
154
+ STATUS_TRUST_ULTIMATE = GPGME_STATUS_TRUST_ULTIMATE
155
+ STATUS_TRUST_UNDEFINED = GPGME_STATUS_TRUST_UNDEFINED
156
+ STATUS_UNEXPECTED = GPGME_STATUS_UNEXPECTED
157
+ STATUS_USERID_HINT = GPGME_STATUS_USERID_HINT
158
+ STATUS_VALIDSIG = GPGME_STATUS_VALIDSIG
159
+ VALIDITY_FULL = GPGME_VALIDITY_FULL
160
+ VALIDITY_MARGINAL = GPGME_VALIDITY_MARGINAL
161
+ VALIDITY_NEVER = GPGME_VALIDITY_NEVER
162
+ VALIDITY_ULTIMATE = GPGME_VALIDITY_ULTIMATE
163
+ VALIDITY_UNDEFINED = GPGME_VALIDITY_UNDEFINED
164
+ VALIDITY_UNKNOWN = GPGME_VALIDITY_UNKNOWN
165
+
166
+ PROTOCOL_NAMES = {
167
+ PROTOCOL_OpenPGP => :OpenPGP,
168
+ PROTOCOL_CMS => :CMS
169
+ }
170
+
171
+ KEYLIST_MODE_NAMES = {
172
+ KEYLIST_MODE_LOCAL => :local,
173
+ KEYLIST_MODE_EXTERN => :extern,
174
+ KEYLIST_MODE_SIGS => :sigs,
175
+ KEYLIST_MODE_VALIDATE => :validate
176
+ }
177
+
178
+ VALIDITY_NAMES = {
179
+ VALIDITY_UNKNOWN => :unknown,
180
+ VALIDITY_UNDEFINED => :undefined,
181
+ VALIDITY_NEVER => :never,
182
+ VALIDITY_MARGINAL => :marginal,
183
+ VALIDITY_FULL => :full,
184
+ VALIDITY_ULTIMATE => :ultimate
185
+ }
186
+
187
+ end