use frozensets to represent APK cert sets

Change-Id: Ic92c83be0c3f6a76bf1bd21f0216cd1b87586959
This commit is contained in:
Doug Zongker 2011-11-11 09:51:37 -08:00
parent 278c9781ec
commit a5f534df07
1 changed files with 5 additions and 4 deletions

View File

@ -187,15 +187,15 @@ def CertFromPKCS7(data, filename):
class APK(object): class APK(object):
def __init__(self, full_filename, filename): def __init__(self, full_filename, filename):
self.filename = filename self.filename = filename
self.certs = set()
Push(filename+":") Push(filename+":")
try: try:
self.RecordCert(full_filename) self.RecordCerts(full_filename)
self.ReadManifest(full_filename) self.ReadManifest(full_filename)
finally: finally:
Pop() Pop()
def RecordCert(self, full_filename): def RecordCerts(self, full_filename):
out = set()
try: try:
f = open(full_filename) f = open(full_filename)
apk = zipfile.ZipFile(f, "r") apk = zipfile.ZipFile(f, "r")
@ -205,12 +205,13 @@ class APK(object):
(info.filename.endswith(".DSA") or info.filename.endswith(".RSA")): (info.filename.endswith(".DSA") or info.filename.endswith(".RSA")):
pkcs7 = apk.read(info.filename) pkcs7 = apk.read(info.filename)
cert = CertFromPKCS7(pkcs7, info.filename) cert = CertFromPKCS7(pkcs7, info.filename)
self.certs.add(cert) out.add(cert)
ALL_CERTS.Add(cert) ALL_CERTS.Add(cert)
if not pkcs7: if not pkcs7:
AddProblem("no signature") AddProblem("no signature")
finally: finally:
f.close() f.close()
self.certs = frozenset(out)
def ReadManifest(self, full_filename): def ReadManifest(self, full_filename):
p = common.Run(["aapt", "dump", "xmltree", full_filename, p = common.Run(["aapt", "dump", "xmltree", full_filename,