Esempio n. 1
0
def packet_content_to_packet_bytes(version, type_, data):
    data_length = len(data)
    packet_type = type_
    tag = 0x80
    result = bytearray()
    if version >= 4:
        # "An implementation MAY use Partial Body Lengths for data packets, be
        #  they literal, compressed, or encrypted."
        remaining = data_length
        offset = 0
        while remaining:
            allow_partial = type_ in (8, 9, 11, 18)
            tag += 0x40 + packet_type
            result = bytearray([tag])
            packet_length_bytes, remaining = utils.new_packet_length_to_bytes(
                data_length, allow_partial)
            result.extend(packet_length_bytes)
            result.extend(data[offset:-remaining])
            offset = data_length - remaining

    else:
        tag += (packet_type << 2)
        result = bytearray([tag])
        result.extend(utils.old_packet_length_to_bytes(data_length))
        result.extend(data)

    return result
Esempio n. 2
0
def packet_content_to_packet_bytes(version, type_, data):
    data_length = len(data)
    packet_type = type_
    tag = 0x80
    result = bytearray()
    if version >= 4:
        # "An implementation MAY use Partial Body Lengths for data packets, be
        #  they literal, compressed, or encrypted."
        remaining = data_length
        offset = 0
        while remaining:
            allow_partial = type_ in (8, 9, 11, 18)
            tag += 0x40 + packet_type
            result = bytearray([tag])
            packet_length_bytes, remaining = utils.new_packet_length_to_bytes(
                                            data_length,
                                            allow_partial)
            result.extend(packet_length_bytes)
            result.extend(data[offset:-remaining])
            offset = data_length - remaining

    else:
        tag += (packet_type << 2)
        result = bytearray([tag])
        result.extend(utils.old_packet_length_to_bytes(data_length))
        result.extend(data)

    return result
 def __bytes__(self):
     data = self.content
     result = bytearray()
     # +1 for sub type
     result.extend(utils.new_packet_length_to_bytes(
         len(data) + 1, False)[0])
     result.append(self.sub_type)
     result.extend(data)
     return bytes(result)
Esempio n. 4
0
def subpacket_to_bytes(subpacket):
    data_len = len(subpacket['data']) + 1  # For the type
    result = bytearray()
    packet_length_bytes, _ = utils.new_packet_length_to_bytes(data_len, False)
    result.extend(packet_length_bytes)
    raw = subpacket['type'] + (0x80 if subpacket['critical'] else 0x00)
    result.append(raw)
    result.extend(subpacket['data'])
    return result
Esempio n. 5
0
def subpacket_to_bytes(subpacket):
    data_len = len(subpacket['data']) + 1  # For the type
    result = bytearray()
    packet_length_bytes, _ = utils.new_packet_length_to_bytes(data_len, False)
    result.extend(packet_length_bytes)
    raw = subpacket['type'] + (0x80 if subpacket['critical'] else 0x00)
    result.append(raw)
    result.extend(subpacket['data'])
    return result
 def __bytes__(self):
     data = self.content
     result = bytearray()
     # +1 for sub type
     result.extend(
         utils.new_packet_length_to_bytes(len(data) + 1, False)[0])
     result.append(self.sub_type)
     result.extend(data)
     return bytes(result)
Esempio n. 7
0
 def __bytes__(self):
     data = self.content
     data_len = len(data) + 1  # For the type
     result = bytearray()
     packet_length_bytes, _ = utils.new_packet_length_to_bytes(data_len, False)
     result.extend(packet_length_bytes)
     raw = self.type + (0x80 if self.critical else 0x00)
     result.append(raw)
     result.extend(data)
     return bytes(result)
Esempio n. 8
0
def user_attribute_to_bytes(packet):
    result = bytearray()
    for subpacket in packet['subpackets']:
        sub_data = user_attribute_subpacket_to_bytes(subpacket)
        packet_length_bytes, _ = utils.new_packet_length_to_bytes(
            len(sub_data), allow_partial=False)
        result.extend(packet_length_bytes)
        result.append(subpacket['subtype'])
        result.extend(sub_data)

    return result
 def __bytes__(self):
     data = self.content
     data_len = len(data) + 1  # For the type
     result = bytearray()
     packet_length_bytes, _ = \
             utils.new_packet_length_to_bytes(data_len, False)
     result.extend(packet_length_bytes)
     raw = self.type + (0x80 if self.critical else 0x00)
     result.append(raw)
     result.extend(data)
     return bytes(result)
Esempio n. 10
0
def user_attribute_to_bytes(packet):
    result = bytearray()
    for subpacket in packet['subpackets']:
        sub_data = user_attribute_subpacket_to_bytes(subpacket)
        packet_length_bytes, _ = utils.new_packet_length_to_bytes(
                                    len(sub_data),
                                    allow_partial=False)
        result.extend(packet_length_bytes)
        result.append(subpacket['subtype'])
        result.extend(sub_data)

    return result