Copyright © 2001 - 2002 SILC Project SILC Project Website | SILC Toolkit Reference Manual

SILC Toolkit Reference Manual SILC Core Library SILC Authentication Interface SILC Channel Interface SILC Command Interface SILC ID Interface SILC ID Cache Interface SILC Modes SILC Notify Interface SILC Argument Interface SILC Private Message Interface Packet Protocol Interface SILC Math Library SILC MP Interface SILC Math Interface SILC SFTP Library SILC SFTP Interface SFTP Filesystems Interface SILC Utility Library SILC Buffer Interface SILC Buffer Format Interface SILC Hash Table Interface SILC Logging Interface SILC Memory Interface SILC Mutex Interface SILC Thread Interface SILC Network Interface SILC Schedule Interface SILC Socket Interface SILC Protocol Interface SILC Config Interface SILC File Util Interface SILC Util Interface SILC List Interface SILC Dynamic List Interface SILC Zip API SILC Key Exchange Library SILC SKE Interface SKE Status Types SKE Diffie Hellman Groups SKE Payloads SILC Client Library Using SILC Client Library Client Library Interface SILC Crypto Library Introduction to SILC RNG SILC RNG Interface SILC Cipher API SILC Hash API SILC HMAC API SILC PKCS API Resource Links SILC Project Website SILC Protocol Documentation SILC White Paper SILC FAQ
Function silc_packet_assemble SYNOPSIS
        void silc_packet_assemble(SilcPacketContext *ctx);
DESCRIPTION
        Assembles a new packet to be ready for send out. The buffer sent as
        argument must include the data to be sent and it must not be encrypted.
        The packet also must have enough free space so that the SILC header
        and padding maybe added to the packet. The packet is encrypted after
        this function has returned.

        The buffer sent as argument should be something like following:

        --------------------------------------------
        | head             | data           | tail |
        --------------------------------------------
        ^                  ^
        58 bytes           x bytes

        So that the SILC header and 1 - 16 bytes of padding can fit to
        the buffer. After assembly the buffer might look like this:

        --------------------------------------------
        | data                              |      |
        --------------------------------------------
        ^                                   ^
        Start of assembled packet

        Packet construct is as follows (* = won't be encrypted):

        n bytes       SILC Header
          2 bytes     Payload length  (*)
          1 byte      Flags
          1 byte      Packet type
          2 bytes     Source ID Length
          2 bytes     Destination ID Length
          1 byte      Source ID Type
          n bytes     Source ID
          1 byte      Destination ID Type
          n bytes     Destination ID

        1 - 16 bytes    Padding

        n bytes        Data payload

        All fields in the packet will be authenticated by MAC. The MAC is
        not computed here, it must be computed separately before encrypting
        the packet.
SilcPacketAPI SilcPacketType SilcPacketVersion SilcPacketFlags SilcPacketContext SilcPacketParserContext SilcPacketParserCallback SILC_PACKET_LENGTH SILC_PACKET_PADLEN SILC_PACKET_PADLEN_MAX silc_packet_send silc_packet_encrypt silc_packet_assemble silc_packet_send_prepare silc_packet_receive silc_packet_receive_process silc_packet_parse silc_packet_parse_special silc_packet_context_alloc silc_packet_context_dup silc_packet_context_free

Copyright © 2001 - 2002 SILC Project SILC Project Website | SILC Toolkit Reference Manual