Mercurial > paraspace
diff paraspace/dexfile.py @ 126:ff6f869273b7
Fix wrong init value for computing checksum
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Mon, 08 Aug 2011 17:26:05 +0800 |
parents | b9688a3badaa |
children | 650244dcdd82 |
line wrap: on
line diff
--- a/paraspace/dexfile.py Sun Aug 07 23:02:08 2011 +0800 +++ b/paraspace/dexfile.py Mon Aug 08 17:26:05 2011 +0800 @@ -1734,14 +1734,32 @@ children = map_items return children + ## \biref Make SHA1 signature for DEX. + # + # This method must be called before make_checksum(). + # + def make_signature(self): + from hashlib import sha1 + + raw = self.to_str() + sz = self.header.fileSize + nosum = _DEX_header.magic.sizeof(self.header.magic) + \ + _DEX_header.checksum.sizeof(self.header.checksum) + \ + _DEX_header.signature.sizeof(self.header.signature) + sha = sha1() + sha.update(raw[nosum:]) + signature = sha.digest() + self.header.signature.data = signature + pass + def make_checksum(self): - from paraspace.tools import adler32 + from paraspace.tools import adler32, adler32_init_value raw = self.to_str() sz = self.header.fileSize nosum = _DEX_header.magic.sizeof(self.header.magic) + \ _DEX_header.checksum.sizeof(self.header.checksum) - checksum = adler32(0, raw, nosum, sz - nosum) + checksum = adler32(adler32_init_value, raw, nosum, sz - nosum) self.header.checksum = checksum pass pass