gpgme-ffi 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/examples/edit.rb +77 -0
- data/examples/genkey.rb +55 -0
- data/examples/keylist.rb +7 -0
- data/examples/roundtrip.rb +42 -0
- data/examples/sign.rb +31 -0
- data/examples/verify.rb +8 -0
- data/ext/gpgme/Makefile.in +55 -0
- data/ext/gpgme/extconf.rb +8 -0
- data/ext/gpgme/extract_enums.rb +88 -0
- data/ext/gpgme/gpgme-1.3.1.tar.bz2 +0 -0
- data/ext/gpgme/libassuan-2.0.2.tar.bz2 +0 -0
- data/ext/gpgme/libgpg-error-1.10.tar.bz2 +0 -0
- data/ext/gpgme/libgpgme_gem.so +0 -0
- data/lib/gpgme/compat.rb +48 -0
- data/lib/gpgme/constants.rb +187 -0
- data/lib/gpgme/crypto.rb +357 -0
- data/lib/gpgme/ctx.rb +462 -0
- data/lib/gpgme/data.rb +189 -0
- data/lib/gpgme/engine.rb +76 -0
- data/lib/gpgme/error.rb +66 -0
- data/lib/gpgme/ffi/ctx.rb +36 -0
- data/lib/gpgme/ffi/data.rb +24 -0
- data/lib/gpgme/ffi/decrypt_result.rb +14 -0
- data/lib/gpgme/ffi/encrypt_result.rb +22 -0
- data/lib/gpgme/ffi/engine_info.rb +17 -0
- data/lib/gpgme/ffi/enums.rb +687 -0
- data/lib/gpgme/ffi/functions.rb +364 -0
- data/lib/gpgme/ffi/import_result.rb +35 -0
- data/lib/gpgme/ffi/import_status.rb +15 -0
- data/lib/gpgme/ffi/invalid_key.rb +14 -0
- data/lib/gpgme/ffi/key.rb +60 -0
- data/lib/gpgme/ffi/key_sig.rb +20 -0
- data/lib/gpgme/ffi/library.rb +279 -0
- data/lib/gpgme/ffi/meta.rb +57 -0
- data/lib/gpgme/ffi/new_signature.rb +18 -0
- data/lib/gpgme/ffi/sig_notation.rb +12 -0
- data/lib/gpgme/ffi/sign_result.rb +33 -0
- data/lib/gpgme/ffi/signature.rb +35 -0
- data/lib/gpgme/ffi/sub_key.rb +27 -0
- data/lib/gpgme/ffi/trust_item.rb +31 -0
- data/lib/gpgme/ffi/user_id.rb +30 -0
- data/lib/gpgme/ffi/verify_result.rb +22 -0
- data/lib/gpgme/ffi.rb +22 -0
- data/lib/gpgme/io_callbacks.rb +21 -0
- data/lib/gpgme/key.rb +242 -0
- data/lib/gpgme/key_common.rb +43 -0
- data/lib/gpgme/key_sig.rb +35 -0
- data/lib/gpgme/misc.rb +66 -0
- data/lib/gpgme/signature.rb +85 -0
- data/lib/gpgme/sub_key.rb +58 -0
- data/lib/gpgme/user_id.rb +20 -0
- data/lib/gpgme/version.rb +3 -0
- data/lib/gpgme.rb +106 -0
- data/test/crypto_test.rb +246 -0
- data/test/ctx_test.rb +432 -0
- data/test/data_test.rb +129 -0
- data/test/files/testkey_pub.gpg +52 -0
- data/test/files/testkey_sec.gpg +54 -0
- data/test/gpgme_test.rb +12 -0
- data/test/key_test.rb +209 -0
- data/test/signature_test.rb +52 -0
- data/test/sub_key_test.rb +48 -0
- data/test/support/resources.rb +516 -0
- data/test/test_helper.rb +84 -0
- 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))
|
data/examples/genkey.rb
ADDED
@@ -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
|
data/examples/keylist.rb
ADDED
@@ -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
|
data/examples/verify.rb
ADDED
@@ -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,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
|
data/lib/gpgme/compat.rb
ADDED
@@ -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
|