[Pymoul-svn] SF.net SVN: pymoul: [286] pymoul/trunk/src/moul/file
Status: Alpha
Brought to you by:
tiran
|
From: <ti...@us...> - 2007-04-19 00:33:30
|
Revision: 286
http://pymoul.svn.sourceforge.net/pymoul/?rev=286&view=rev
Author: tiran
Date: 2007-04-18 17:33:11 -0700 (Wed, 18 Apr 2007)
Log Message:
-----------
Fixes to SDL and Stream class
Modified Paths:
--------------
crypttea/trunk/src/crypttea/_common.py
pymoul/trunk/src/moul/crypt/stream.py
pymoul/trunk/src/moul/file/sdl.py
Modified: crypttea/trunk/src/crypttea/_common.py
===================================================================
--- crypttea/trunk/src/crypttea/_common.py 2007-04-18 23:46:47 UTC (rev 285)
+++ crypttea/trunk/src/crypttea/_common.py 2007-04-19 00:33:11 UTC (rev 286)
@@ -208,7 +208,7 @@
fmt = self._endian+"2L"
result = []
if l % bs != 0:
- raise ValueError
+ raise ValueError(l)
for i in range(l/bs):
v = unpack(fmt, block[i*bs:(i+1)*bs])
w = func(v, key, rounds)
Modified: pymoul/trunk/src/moul/crypt/stream.py
===================================================================
--- pymoul/trunk/src/moul/crypt/stream.py 2007-04-18 23:46:47 UTC (rev 285)
+++ pymoul/trunk/src/moul/crypt/stream.py 2007-04-19 00:33:11 UTC (rev 286)
@@ -32,11 +32,10 @@
"""Encrypted stream
"""
magic = 12 * '\x00'
- cipherClass = None
blockSize = 1024
- def __init__(self, fdname, key, **kwargs):
- if isinstane(fdname, basestring):
+ def __init__(self, fdname, cipher):
+ if isinstance(fdname, basestring):
fd = BinaryFile(fdname)
elif isinstance(fdname, BinaryFile):
fd = fdname
@@ -51,22 +50,23 @@
fd.seek(16)
if fsize-16 < self._size:
raise ValueError("Size mismatch %i/%i" % (fsize, self._size))
- self._cipher = self.cipherClass(key, **kwargs)
+ self._cipher = cipher
self._fd = fd
def read(self):
+ fd = self._fd
fd.seek(16)
remain = self._size
bs = self.blockSize
- fd = self._fd
decrypt = self._cipher.decrypt
buf = []
while True:
- if remain == 0:
+ if remain <= 0:
break
+ data = fd.read(bs)
+ data = decrypt(data)
if remain < bs:
- bs = remain
- data = fd.read(bs)
- buf.append(decrypt(data))
+ data = data[:remain]
+ buf.append(data)
+ remain -= bs
return ''.join(buf)
-
Modified: pymoul/trunk/src/moul/file/sdl.py
===================================================================
--- pymoul/trunk/src/moul/file/sdl.py 2007-04-18 23:46:47 UTC (rev 285)
+++ pymoul/trunk/src/moul/file/sdl.py 2007-04-19 00:33:11 UTC (rev 286)
@@ -25,30 +25,30 @@
import re
-class SDLReader(object):
- """Read Python pak
+class SDLParser(object):
+ """Read SDL Files
- >>> mo = SDLReader.comment.match('abc # def # efg')
+ >>> mo = SDLParser.comment.match('abc # def # efg')
>>> mo.group('content')
'abc '
- >>> mo = SDLReader.comment.match('abc')
+ >>> mo = SDLParser.comment.match('abc')
>>> mo.group('content')
'abc'
- >>> mo = SDLReader.comment.match('# abc')
+ >>> mo = SDLParser.comment.match('# abc')
>>> mo.group('content')
''
- >>> mo = SDLReader.statedesc.match('STATEDESC testage')
+ >>> mo = SDLParser.statedesc.match('STATEDESC testage')
>>> mo.group('name')
'testage'
- >>> mo = SDLReader.version.match(' VERSION 5')
+ >>> mo = SDLParser.version.match(' VERSION 5')
>>> mo.group('version')
'5'
- >>> mo = SDLReader.var.search('VAR BOOL testvar[1] DEFAULT=1')
+ >>> mo = SDLParser.var.search('VAR BOOL testvar[1] DEFAULT=1')
>>> mo.group('type')
'BOOL'
>>> mo.group('name')
@@ -60,9 +60,11 @@
statedesc = re.compile("^STATEDESC[ ]+(?P<name>\w+)")
version = re.compile("[ \t]*VERSION[ ]+(?P<version>\d+)")
var = re.compile("VAR[ ]+(?P<type>\w+)[ ]+(?P<name>[$\w]+)\[1\](?P<tail>.*)")
- def __init__(self, fname):
- self._fname = fname
- self._fd = open(fname, 'r')
+ def __init__(self, fdname):
+ if isinstance(fdname, basestring):
+ self._fd = open(fdname, 'r')
+ else:
+ self._fd = fdname
self.states = []
self._parseFile()
@@ -71,7 +73,7 @@
#line = self.comment.match(line).group('content')
mo = self.statedesc.match(line)
if mo:
- self.states.append(mo.group('name')
+ self.states.append(mo.group('name'))
class SDLStates(object):
"""SDL state object
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|