#include "blowfish_internal.h"
#include "blowfish.h"
-/*
+/*
* SILC Crypto API for Blowfish
*/
/* Sets the key for the cipher. */
-SILC_CIPHER_API_SET_KEY(blowfish)
+SILC_CIPHER_API_SET_KEY(blowfish_cbc)
{
blowfish_set_key((BlowfishContext *)context, (unsigned char *)key, keylen);
return TRUE;
}
-/* Sets the string as a new key for the cipher. The string is first
- hashed and then used as a new key. */
+/* Sets IV for the cipher. */
-SILC_CIPHER_API_SET_KEY_WITH_STRING(blowfish)
+SILC_CIPHER_API_SET_IV(blowfish_cbc)
{
- return 1;
+
}
/* Returns the size of the cipher context. */
-SILC_CIPHER_API_CONTEXT_LEN(blowfish)
+SILC_CIPHER_API_CONTEXT_LEN(blowfish_cbc)
{
return sizeof(BlowfishContext);
}
/* Encrypts with the cipher in CBC mode. Source and destination buffers
maybe one and same. */
-SILC_CIPHER_API_ENCRYPT_CBC(blowfish)
+SILC_CIPHER_API_ENCRYPT(blowfish_cbc)
{
SilcUInt32 tiv[4];
int i;
/* Decrypts with the cipher in CBC mode. Source and destination buffers
maybe one and same. */
-SILC_CIPHER_API_DECRYPT_CBC(blowfish)
+SILC_CIPHER_API_DECRYPT(blowfish_cbc)
{
SilcUInt32 tmp[4], tmp2[4], tiv[4];
int i;
blowfish_decrypt((BlowfishContext *)context, tmp, tmp2, 16);
SILC_CBC_DEC_POST(tmp2, dst, src, tmp, tiv);
}
-
+
SILC_CBC_PUT_IV(tiv, iv);
-
+
return TRUE;
}
0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6,
};
-/*
+/*
* Round loop unrolling macros, S is a pointer to a S-Box array
* organized in 4 SilcUInt32s at a row.
*/
/*
* The blowfish encipher, processes 64-bit blocks.
- * NOTE: This function MUSTN'T respect endianess
+ * NOTE: This function MUSTN'T respect endianess
*/
int blowfish_encrypt(BlowfishContext *ctx,
for (i = 0; i < 16 + 2; i += 2)
{
blowfish_encrypt(ctx, data, data, 8);
-
+
P[i] = data[0];
P[i + 1] = data[1];
}