Clarified copyrights.
[zeroinstall.git] / zeroinstall / injector / trust.py
blob7099ee0817e65ca1b3c31ed0b008b5d2f97dfc5a
1 # Copyright (C) 2006, Thomas Leonard
2 # See the README file for details, or visit http://0install.net.
4 import os
6 import basedir
7 from namespaces import config_site, config_prog
9 class TrustDB:
10 keys = None
12 def __init__(self):
13 self.keys = None
15 def is_trusted(self, key):
16 self.ensure_uptodate()
17 return key in self.keys
19 def trust_key(self, key):
20 self.ensure_uptodate()
21 if key in self.keys: return
22 int(key, 16) # Ensure fingerprint is valid
23 self.keys[key] = True
24 self.save()
26 def untrust_key(self, key):
27 self.ensure_uptodate()
28 del self.keys[key]
29 self.save()
31 def save(self):
32 d = basedir.save_config_path(config_site, config_prog)
33 # XXX
34 f = file(os.path.join(d, 'trust'), 'w')
35 for key in self.keys:
36 print >>f, key
37 f.close()
39 def ensure_uptodate(self):
40 # This is a bit inefficient...
41 trust = basedir.load_first_config(config_site, config_prog,
42 'trust')
43 # By default, trust our own key
44 self.keys = {"92429807C9853C0744A68B9AAE07828059A53CC1": True}
45 if trust:
46 #print "Loading trust from", trust_db
47 for key in file(trust).read().split('\n'):
48 if key:
49 self.keys[key] = True
51 # Singleton
52 trust_db = TrustDB()