SilcCipherMode
NAME
typedef enum { ... } SilcCipherMode;
DESCRIPTION
Cipher modes. Notes about cipher modes and implementation:
SILC_CIPHER_MODE_CBC
The Cipher-block Chaining mode. The plaintext length must be multiple by the cipher block size. If it isn't the plaintext must be padded.
SILC_CIPHER_MODE_CTR
The Counter mode. The CTR mode does not require the plaintext length to be multiple by the cipher block size. If the last plaintext block is shorter the remaining bits of the key stream are used next time silc_cipher_encrypt is called. If silc_cipher_set_iv is called it will reset the counter for a new block (discarding any remaining bits from previous key stream). The CTR mode expects MSB first ordered counter. Note also, the counter is incremented when silc_cipher_encrypt is called for the first time, before encrypting.
SILC_CIPHER_MODE_CFB
The Cipher Feedback mode. The CFB mode does not require the plaintext length to be multiple by the cipher block size. If the last plaintext block is shorter the remaining bits of the stream are used next time silc_cipher_encrypt is called. If silc_cipher_set_iv is called it will reset the feedback for a new block (discarding any remaining bits from previous stream).
SILC_CIPHER_MODE_OFB
The Output Feedback mode.
SILC_CIPHER_MODE_ECB
The Electronic Codebook mode. This mode does not provide sufficient security and should not be used alone.
Each mode using and IV (initialization vector) modifies the IV of the cipher when silc_cipher_encrypt or silc_cipher_decrypt is called. The IV may be set/reset by calling silc_cipher_set_iv and the current IV can be retrieved by calling silc_cipher_get_iv.
SOURCE
typedef enum { SILC_CIPHER_MODE_ECB = 1, /* ECB mode */ SILC_CIPHER_MODE_CBC = 2, /* CBC mode */ SILC_CIPHER_MODE_CTR = 3, /* CTR mode */ SILC_CIPHER_MODE_CFB = 4, /* CFB mode */ SILC_CIPHER_MODE_OFB = 5, /* OFB mode */ } SilcCipherMode;