gpgme-ffi 3.0.0

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.
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