/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
399.3.4 by Daniel Schierbeck
Moved crypt code to crypt.py.
1
import dbus
2
3
BUS_NAME = 'org.gnome.seahorse'
4
399.3.5 by Daniel Schierbeck
Added support for key fingerprints.
5
CRYPTO_INTERFACE = 'org.gnome.seahorse.CryptoService'
399.3.4 by Daniel Schierbeck
Moved crypt code to crypt.py.
6
CRYPTO_PATH = '/org/gnome/seahorse/crypto'
7
8
OPENPGP_INTERFACE = 'org.gnome.seahorse.Keys'
399.3.5 by Daniel Schierbeck
Added support for key fingerprints.
9
OPENPGP_PATH = '/org/gnome/seahorse/keys/openpgp'
10
11
KEY_TYPE_OPENPGP = 'openpgp'
399.3.4 by Daniel Schierbeck
Moved crypt code to crypt.py.
12
KEY_TYPE_SSH = 'ssh'
13
14
bus = dbus.SessionBus()
15
crypto = dbus.Interface(bus.get_object(BUS_NAME, CRYPTO_PATH), 
16
                        CRYPTO_INTERFACE)
17
openpgp = dbus.Interface(bus.get_object(BUS_NAME, OPENPGP_PATH),
399.3.5 by Daniel Schierbeck
Added support for key fingerprints.
18
                      OPENPGP_INTERFACE)
19
399.3.4 by Daniel Schierbeck
Moved crypt code to crypt.py.
20
FLAG_VALID = 0x0001
399.3.7 by Daniel Schierbeck
Made Seahorse discover unknown keys, and added trust level to the UI.
21
FLAG_CAN_ENCRYPT = 0x0002
22
FLAG_CAN_SIGN = 0x0004
23
FLAG_EXPIRED = 0x0100
24
FLAG_REVOKED = 0x0200
25
FLAG_DISABLED = 0x0400
26
FLAG_TRUSTED = 0x1000
27
28
TRUST_NEVER = -1
399.3.6 by Daniel Schierbeck
Added support for key trust.
29
TRUST_UNKNOWN = 0
30
TRUST_MARGINAL = 1
31
TRUST_FULL = 5
32
TRUST_ULTIMATE = 10
33
34
def discover(*key_ids):
399.3.7 by Daniel Schierbeck
Made Seahorse discover unknown keys, and added trust level to the UI.
35
    return openpgp.DiscoverKeys(key_ids, 0)
36
37
def verify(crypttext):
399.3.4 by Daniel Schierbeck
Moved crypt code to crypt.py.
38
    (cleartext, key) = crypto.VerifyText(KEY_TYPE_OPENPGP, 1, crypttext)
399.3.8 by Daniel Schierbeck
Moved crypt code into a Key class.
39
40
    return Key(key)
41
42
class Key:
43
44
    def __init__(self, key):
45
        self.key = key
46
        self.fingerprint = None
47
        self.trust = None
48
        self.flags = None
49
        self.display_name = None
399.3.10 by Daniel Schierbeck
Added getter for display name field.
50
399.3.8 by Daniel Schierbeck
Moved crypt code into a Key class.
51
    def get_field(self, field, default=None):
52
        (valid, value) = openpgp.GetKeyField(self.key, field)
53
54
        if valid:
55
            return value
56
        else:
57
            return default
58
    
59
    def get_flags(self):
60
        if self.flags is None:
61
            self.flags = self.get_field('flags', 0)
62
63
        return self.flags
64
65
    def get_display_name(self):
399.3.10 by Daniel Schierbeck
Added getter for display name field.
66
        if self.display_name is None:
67
            self.display_name = self.get_field('display-name')
68
69
        return self.display_name
70
71
    def get_id(self):
399.3.8 by Daniel Schierbeck
Moved crypt code into a Key class.
72
        return self.key.split(':')[1][8:]
73
74
    def get_fingerprint(self):
75
        if self.fingerprint is None:
76
            self.fingerprint = self.get_field('fingerprint')
77
78
        return self.fingerprint
79
80
    def get_trust(self):
81
        if self.trust is None:
82
            self.trust = self.get_field('trust', TRUST_UNKNOWN)
83
84
        return self.trust
85
86
    def is_available(self):
399.3.11 by Daniel Schierbeck
Fixed error with unavailable keys.
87
        return self.key != ""
88
399.3.8 by Daniel Schierbeck
Moved crypt code into a Key class.
89
    def is_trusted(self):
90
        return self.get_flags() & FLAG_TRUSTED
91