Esempio n. 1
0
 def testLoadKeys(self):
     self.assertEqual({}, gpg.load_keys([]))
     keys = gpg.load_keys([THOMAS_FINGERPRINT])
     self.assertEqual(1, len(keys))
     key = keys[THOMAS_FINGERPRINT]
     self.assertEqual(THOMAS_FINGERPRINT, key.fingerprint)
     self.assertEqual("Thomas Leonard <*****@*****.**>", key.name)
Esempio n. 2
0
	def testLoadKeys(self):
		self.assertEqual({}, gpg.load_keys([]))
		keys = gpg.load_keys([THOMAS_FINGERPRINT])
		self.assertEqual(1, len(keys))
		key = keys[THOMAS_FINGERPRINT]
		self.assertEqual(THOMAS_FINGERPRINT, key.fingerprint)
		self.assertEqual('Thomas Leonard <*****@*****.**>',
				key.name)
		def update_keys():
			# Remember which ones are open
			expanded_elements = set()
			def add_row(tv, path, unused = None):
				if len(path) == 1:
					domain = self.trusted_keys[path][0]
					expanded_elements.add(domain)
			tv.map_expanded_rows(add_row, None)

			self.trusted_keys.clear()
			domains = {}

			keys = gpg.load_keys(list(trust.trust_db.keys.keys()))

			for fingerprint in keys:
				for domain in trust.trust_db.keys[fingerprint]:
					if domain not in domains:
						domains[domain] = set()
					domains[domain].add(keys[fingerprint])
			for domain in sorted(domains):
				iter = self.trusted_keys.append(None, [domain, None])
				for key in domains[domain]:
					self.trusted_keys.append(iter, [key.name, key])

			def may_expand(model, path, iter, unused):
				if len(path) == 1:
					if model[iter][0] in expanded_elements:
						tv.expand_row(path, False)
			self.trusted_keys.foreach(may_expand, None)
Esempio n. 4
0
        def update_keys():
            # Remember which ones are open
            expanded_elements = set()

            def add_row(tv, path):
                if len(path) == 1:
                    domain = self.trusted_keys[path][0]
                    expanded_elements.add(domain)

            tv.map_expanded_rows(add_row)

            self.trusted_keys.clear()
            domains = {}

            keys = gpg.load_keys(trust.trust_db.keys.keys())

            for fingerprint in keys:
                for domain in trust.trust_db.keys[fingerprint]:
                    if domain not in domains:
                        domains[domain] = set()
                    domains[domain].add(keys[fingerprint])
            for domain in sorted(domains):
                iter = self.trusted_keys.append(None, [domain, None])
                for key in domains[domain]:
                    self.trusted_keys.append(iter, [key.name, key])

            def may_expand(model, path, iter):
                if len(path) == 1:
                    if model[iter][0] in expanded_elements:
                        tv.expand_row(path, False)

            self.trusted_keys.foreach(may_expand)
Esempio n. 5
0
	def write_summary(self, topdir):
		sig_cache.save()

		names = []
		keys = gpg.load_keys(self.users.keys() + aliases.keys())
		top_users = []
		for fingerprint, user in self.users.iteritems():
			user.key = keys[fingerprint]
			try:
				# 0launch <= 0.45 doesn't returns names in unicode
				unicode(user.key.name)
			except:
				user.key.name = codecs.decode(user.key.name, 'utf-8')
			names.append((user.key.name, fingerprint))
		for name, fingerprint in sorted(names):
			user = self.users[fingerprint]
			user_dir = ensure_dirs(os.path.join(topdir, 'users', fingerprint))

			user_keys = [fingerprint] + reverse_aliases.get(fingerprint, [])
			user_xml = user.as_xml([keys[k] for k in user_keys])
			write_if_changed(user_xml, os.path.join(user_dir, 'user.xml'))
			top_users.append((user.get_karma(), user))

		users_xml = export_users(reversed(sorted(top_users)))
		write_if_changed(users_xml, os.path.join(topdir, 'top-users.xml'))

		for domain, feeds in self.sites.iteritems():
			site = ET.Element('site')
			site.attrib["name"] = domain
			feeds_elem = ET.SubElement(site, "feeds")
			sorted_feeds = sorted([(feed.get_name().lower(), feed) for feed in feeds])
			for name, feed in sorted_feeds:
				make_feed_element(feeds_elem, feed, self.active[feed])
			site_xml = ET.ElementTree(site)
			write_if_changed(site_xml, os.path.join(topdir, 'sites', 'site-%s.xml' % domain))

		top_sites = [(len(feeds), domain, feeds) for domain, feeds in self.sites.iteritems()]
		sites_xml = export_sites(reversed(sorted(top_sites)))
		write_if_changed(sites_xml, os.path.join(topdir, 'top-sites.xml'))

		for feed, metadata in self.feeds:
			for signer in metadata.findall("signer"):
				if "user" in signer.attrib:
					fingerprint = signer.attrib["user"]
					user = self.users[fingerprint]
					signer.attrib["name"] = user.key.get_short_name()

			metadata_xml = ET.ElementTree(metadata)
			feed_dir = get_feed_dir(feed.url)
			write_if_changed(metadata_xml, os.path.join(topdir, feed_dir, 'metadata.xml'))
Esempio n. 6
0
def get_secret_keys():
	child = subprocess.Popen(('gpg', '--list-secret-keys', '--with-colons', '--with-fingerprint'),
				 stdout = subprocess.PIPE)
	stdout, _ = child.communicate()
	status = child.wait()
	if status:
		raise Exception("GPG failed with exit code %d" % status)
	# First, collect fingerprints for available secret keys
	keys = []
	for line in stdout.split('\n'):
		line = line.split(':')
		if line[0] == 'fpr':
			keys.append([line[9], None])
	# When listing secret keys, the identity show may not be the primary identity as selected by
	# the user or shown when verifying a signature. However, the primary identity can be obtained
	# by listing the accompanying public key.
	loaded_keys = gpg.load_keys([k[0] for k in keys])
	for key in keys:
		key[1] = loaded_keys[key[0]].name
	return keys