Example #1
0
    def parse_from(self, buf, idx):
        self.version = struct.unpack_from(">L", buf, idx)[0]
        idx += 4
        idx, self.sender_pubkey = sshtype.parse_binary_from(buf, idx)
        idx, self.destination_addr = sshtype.parse_binary_from(buf, idx)
        idx, self.subject = sshtype.parse_string_from(buf, idx)
        idx, self.date = sshtype.parse_string_from(buf, idx)

        part_cnt = struct.unpack_from(">H", buf, idx)[0]
        idx += 2

        for i in range(part_cnt):
            part = DmailPart()
            idx = part.parse_from(buf, idx)
            self.parts.append(part)

        self.signature_offset = idx
        idx, self.signature = sshtype.parse_binary_from(buf, idx)

        return idx
Example #2
0
    def parse_from(self, buf, idx):
        self.version = struct.unpack_from(">L", buf, idx)[0]
        idx += 4
        idx, self.ssm = sshtype.parse_string_from(buf, idx)
        idx, self.sse = sshtype.parse_mpint_from(buf, idx)
        idx, self.ssf = sshtype.parse_mpint_from(buf, idx)

        idx, self.signature = sshtype.parse_binary_from(buf, idx)

        self.data_len = struct.unpack_from(">L", buf, idx)[0]
        idx += 4

        self.data_enc = buf[idx:]

        return idx
Example #3
0
    def parse_from(self, buf, idx):
        self.version = struct.unpack_from(">L", buf, idx)[0]
        idx += 4
        idx, self.ssm = sshtype.parse_string_from(buf, idx)
        idx, self.sse = sshtype.parse_mpint_from(buf, idx)
        idx, self.ssf = sshtype.parse_mpint_from(buf, idx)

        idx, self.signature = sshtype.parse_binary_from(buf, idx)

        self.data_len = struct.unpack_from(">L", buf, idx)[0]
        idx += 4

        self.data_enc = buf[idx:]

        return idx
Example #4
0
    def parse_from(self, buf, idx, length=None):
        if not length:
            length = len(buf)

        self.version = struct.unpack_from(">L", buf, idx)[0]
        idx += 4
        idx, self.sender_pubkey = sshtype.parse_binary_from(buf, idx)
        idx, self.subject = sshtype.parse_string_from(buf, idx)
        idx, self.date = sshtype.parse_string_from(buf, idx)

        while idx < length:
            part = DmailPart()
            idx = part.parse_from(buf, idx)
            self.parts.append(part)

        return idx
Example #5
0
    def parse_from(self, buf, idx, length=None):
        if not length:
            length = len(buf)

        self.version = struct.unpack_from(">L", buf, idx)[0]
        idx += 4
        idx, self.sender_pubkey = sshtype.parse_binary_from(buf, idx)
        idx, self.subject = sshtype.parse_string_from(buf, idx)
        idx, self.date = sshtype.parse_string_from(buf, idx)

        while idx < length:
            part = DmailPart()
            idx = part.parse_from(buf, idx)
            self.parts.append(part)

        return idx
Example #6
0
    def parse(self):
        super().parse()
        i = 1
        l, self.node_id = sshtype.parseBinary(self.buf[i:])
        i += l
        self.data_mode = DataMode(struct.unpack("B", self.buf[i:i + 1])[0])
        i += 1

        has_version = struct.unpack_from("?", self.buf, i)[0]
        i += 1
        if has_version:
            i, self.version = sshtype.parse_mpint_from(self.buf, i)

        if i == len(self.buf):
            return

        self.significant_bits = struct.unpack(">H", self.buf[i:i + 2])[0]
        i += 2

        if i == len(self.buf):
            return

        i, self.target_key = sshtype.parse_binary_from(self.buf, i)
Example #7
0
    def parse(self):
        super().parse()
        i = 1
        l, self.node_id = sshtype.parseBinary(self.buf[i:])
        i += l
        self.data_mode = DataMode(struct.unpack("B", self.buf[i : i + 1])[0])
        i += 1

        has_version = struct.unpack_from("?", self.buf, i)[0]
        i += 1
        if has_version:
            i, self.version = sshtype.parse_mpint_from(self.buf, i)

        if i == len(self.buf):
            return

        self.significant_bits = struct.unpack(">H", self.buf[i : i + 2])[0]
        i += 2

        if i == len(self.buf):
            return

        i, self.target_key = sshtype.parse_binary_from(self.buf, i)
Example #8
0
 def parse_from(self, buf, idx):
     idx, self.mime_type = sshtype.parse_string_from(buf, idx)
     idx, self.data = sshtype.parse_binary_from(buf, idx)
     return idx
Example #9
0
 def parse_from(self, buf, idx):
     idx, self.mime_type = sshtype.parse_string_from(buf, idx)
     idx, self.data = sshtype.parse_binary_from(buf, idx)
     return idx