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