Copyright © 2001 - 2007 SILC Project SILC Project Website | SILC Toolkit Reference Manual Index

SILC Toolkit Reference Manual SILC Crypto Library Introduction to SILC RNG SILC RNG Interface SILC Cipher API SILC PKCS API SILC Public Key API SILC PKCS #1 API SILC Hash Interface SILC HMAC Interface SILC Core Library SILC Authentication Interface SILC Message Interface SILC Channel Interface SILC Command Interface SILC Notify Interface SILC Status Types SILC Modes SILC ID Interface SILC Argument Interface SILC Attributes Interface Packet Engine Interface SILC Public Key Payload Interface SILC Key Exchange Library SILC SKE Interface SILC Connection Authentication Interface SILC VCard Library SILC VCard Interface SILC Math Library SILC MP Interface SILC Math Interface SILC Client Library Using SILC Client Library Tutorial Arguments for command_reply Client Operation SilcStatus Error Arguments in command_reply Client Operation Arguments for notify Client Operation Unicode and UTF-8 Strings in Client Library Client Library Interface Reference Client Entry Interface Reference SILC ASN.1 Library SILC ASN.1 Interface SILC BER interface SILC HTTP Library SILC HTTP Server Interface SILC HTTP PHP Translator SILC Utility Library Basic Types and Definitions Data Buffer Interface Data Buffer Format Interface Hash Table Interface Memory Allocation Interface Data Stack (memory pool) Interface Finite State Machine Interface Thread Interface Mutual Exclusion Lock Interface Condition Variable Interface Atomic Operations Interface Network (TCP and UDP) Interface Scheduler Interface Asynchronous Operation Interface Abstract Stream Interface Socket Stream Interface File Descriptor Stream Interface File Utility Functions String Utility Interface Snprintf Interface UTF-8 String Interface Stringprep Interface Utility Functions List Interface Dynamic List Interface MIME Interface Time Utility Functions Logging Interface Config File Interface SILC Key Repository Library SILC SKR Interface SILC Application Utility Library SILC Application Utilities SILC ID Cache Interface SILC SFTP Library SILC SFTP Interface SFTP Filesystems Interface Resource Links SILC Project Website SILC Protocol Documentation SILC White Paper SILC FAQs
Function silc_message_payload_encode SYNOPSIS
        SilcBuffer silc_message_payload_encode(SilcMessageFlags flags,
                                               const unsigned char *data,
                                               SilcUInt32 data_len,
                                               SilcBool generate_iv,
                                               SilcBool private_message,
                                               SilcCipher cipher,
                                               SilcHmac hmac,
                                               SilcRng rng,
                                               SilcPublicKey public_key,
                                               SilcPrivateKey private_key,
                                               SilcHash hash,
                                               SilcID *sender_id,
                                               SilcID *receiver_id,
                                               SilcBuffer buffer);
DESCRIPTION
        Encodes a Message Payload into a buffer and returns it.  This is
        used to encode channel messages and private messages into a packet.
        If `private_message' is FALSE then this encodes channel message, if
        it is TRUE this encodes private message.  If `private_message' is
        TRUE then `generate_iv' MUST be FALSE if the private message key
        `cipher' is not static key (pre-shared key).  If it is static key
        then protocol dictates that IV must be present in the Message Payload
        and `generate_iv' must be TRUE.  The caller must know whether the key
        is static or not for private messages.  If the key was generated with
        Key Agreement protocol then `generate_iv' is always FALSE.  For
        channel messages `generate_iv' is always set to TRUE value.

        The `cipher' is the cipher used to encrypt the message and `hmac'
        is used to compute the MAC for the payload.  If encoding private
        message that will be encrypted with session keys (no private message
        key) then `cipher' and `hmac' is NULL and this merely encodes the
        payload buffer, and the caller must encrypt the packet later.
        If `rng' is NULL then global RNG is used, if non-NULL then the
        `rng' is used (for IV and padding generation).

        The `public_key', `private_key' and `hash' are provided only if the
        flags includes SILC_MESSAGE_FLAG_SIGNED, in which case the message
        will be digitally signed.  If `public_key' is non-NULL then it will
        be included in the message.  The `private_message' and `hash' MUST
        be provided.  The `hash' SHOULD be SHA1.

        The `sender_id' is the ID message sender and `receiver_id' is ID of
        message receiver.

        If the `buffer' is non-NULL then the payload will be encoded into
        that buffer.  The same buffer is returned.  Otherwise new buffer is
        allocated and returned.  The `buffer' will be automatically enlarged
        if the payload does not fit to it.
SILC Message Interface SilcMessagePayload SilcMessageFlags silc_message_payload_decrypt silc_message_payload_parse silc_message_payload_encrypt silc_message_payload_encode silc_message_payload_free silc_message_get_flags silc_message_get_data silc_message_get_mac silc_message_signed_verify silc_message_signed_get_public_key

Copyright © 2001 - 2007 SILC Project SILC Project Website | SILC Toolkit Reference Manual Index