/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
        discover(key)
52
53
    def get_field(self, field, default=None):
54
        (valid, value) = openpgp.GetKeyField(self.key, field)
55
56
        if valid:
57
            return value
58
        else:
59
            return default
60
    
61
    def get_flags(self):
62
        if self.flags is None:
63
            self.flags = self.get_field('flags', 0)
64
65
        return self.flags
66
67
    def get_display_name(self):
399.3.10 by Daniel Schierbeck
Added getter for display name field.
68
        if self.display_name is None:
69
            self.display_name = self.get_field('display-name')
70
71
        return self.display_name
72
73
    def get_id(self):
399.3.8 by Daniel Schierbeck
Moved crypt code into a Key class.
74
        return self.key.split(':')[1][8:]
75
76
    def get_fingerprint(self):
77
        if self.fingerprint is None:
78
            self.fingerprint = self.get_field('fingerprint')
79
80
        return self.fingerprint
81
82
    def get_trust(self):
83
        if self.trust is None:
84
            self.trust = self.get_field('trust', TRUST_UNKNOWN)
85
86
        return self.trust
87
88
    def is_valid(self):
89
        return self.get_flags() & FLAG_VALID
90
91
    def is_trusted(self):
92
        return self.get_flags() & FLAG_TRUSTED
93