1 """Classes for reading/writing binary data (such as TLS records)."""
6 def __init__(self, length=0):
7 #If length is zero, then this is just a "trial run" to determine length
9 self.bytes = createByteArrayZeros(length)
11 def add(self, x, length):
13 newIndex = self.index+length-1
14 while newIndex >= self.index:
15 self.bytes[newIndex] = x & 0xFF
20 def addFixSeq(self, seq, length):
25 self.index += len(seq)*length
27 def addVarSeq(self, seq, length, lengthLength):
29 self.add(len(seq)*length, lengthLength)
33 self.index += lengthLength + (len(seq)*length)
37 def __init__(self, bytes):
41 def get(self, length):
42 if self.index + length > len(self.bytes):
45 for count in range(length):
47 x |= self.bytes[self.index]
51 def getFixBytes(self, lengthBytes):
52 bytes = self.bytes[self.index : self.index+lengthBytes]
53 self.index += lengthBytes
56 def getVarBytes(self, lengthLength):
57 lengthBytes = self.get(lengthLength)
58 return self.getFixBytes(lengthBytes)
60 def getFixList(self, length, lengthList):
62 for x in range(lengthList):
63 l[x] = self.get(length)
66 def getVarList(self, length, lengthLength):
67 lengthList = self.get(lengthLength)
68 if lengthList % length != 0:
70 lengthList = int(lengthList/length)
72 for x in range(lengthList):
73 l[x] = self.get(length)
76 def startLengthCheck(self, lengthLength):
77 self.lengthCheck = self.get(lengthLength)
78 self.indexCheck = self.index
80 def setLengthCheck(self, length):
81 self.lengthCheck = length
82 self.indexCheck = self.index
84 def stopLengthCheck(self):
85 if (self.index - self.indexCheck) != self.lengthCheck:
88 def atLengthCheck(self):
89 if (self.index - self.indexCheck) < self.lengthCheck:
91 elif (self.index - self.indexCheck) == self.lengthCheck: