updates.
[silc.git] / lib / silccrypt / silccipher.h
index 14fcbc9cb4065364af2c5d6d218ae27d3749fd61..b6134eccfcc013ec582af3398bafbec81b1383af 100644 (file)
@@ -46,12 +46,12 @@ typedef struct {
   uint32 block_len;
   uint32 key_len;
 
-  int (*set_key)(void *, const unsigned char *, uint32);
-  int (*set_key_with_string)(void *, const unsigned char *, uint32);
-  int (*encrypt)(void *, const unsigned char *, unsigned char *,
-                uint32, unsigned char *);
-  int (*decrypt)(void *, const unsigned char *, unsigned char *, 
-                uint32, unsigned char *);
+  bool (*set_key)(void *, const unsigned char *, uint32);
+  bool (*set_key_with_string)(void *, const unsigned char *, uint32);
+  bool (*encrypt)(void *, const unsigned char *, unsigned char *,
+                 uint32, unsigned char *);
+  bool (*decrypt)(void *, const unsigned char *, unsigned char *, 
+                 uint32, unsigned char *);
   uint32 (*context_len)();
 } SilcCipherObject;
 
@@ -70,13 +70,13 @@ typedef struct SilcCipherStruct {
   uint32 (*get_block_len)(struct SilcCipherStruct *);
 } *SilcCipher;
 
-/* List of all registered ciphers. */
-extern struct SilcCipherListStruct *silc_cipher_list;
-
 /* Marks for all ciphers in silc. This can be used in silc_cipher_unregister
    to unregister all ciphers at once. */
 #define SILC_ALL_CIPHERS ((SilcCipherObject *)1)
 
+/* Static list of ciphers for silc_cipher_register_default(). */
+extern SilcCipherObject silc_default_ciphers[];
+
 /* Macros */
 
 /* Function names in SILC Crypto modules. The name of the cipher
@@ -92,43 +92,44 @@ extern struct SilcCipherListStruct *silc_cipher_list;
 /* These macros can be used to implement the SILC Crypto API and to avoid
    errors in the API these macros should be used always. */
 #define SILC_CIPHER_API_SET_KEY(cipher)                        \
-int silc_##cipher##_set_key(void *context,             \
-                           const unsigned char *key,   \
-                           uint32 keylen)
+bool silc_##cipher##_set_key(void *context,            \
+                            const unsigned char *key,  \
+                            uint32 keylen)
 #define SILC_CIPHER_API_SET_KEY_WITH_STRING(cipher)                    \
-int silc_##cipher##_set_key_with_string(void *context,                 \
-                                       const unsigned char *string,    \
-                                       uint32 stringlen)
+bool silc_##cipher##_set_key_with_string(void *context,                        \
+                                        const unsigned char *string,   \
+                                        uint32 stringlen)
 #define SILC_CIPHER_API_ENCRYPT_CBC(cipher)                    \
-int silc_##cipher##_encrypt_cbc(void *context,                 \
-                               const unsigned char *src,       \
-                               unsigned char *dst,             \
-                               uint32 len,             \
-                               unsigned char *iv)
+bool silc_##cipher##_encrypt_cbc(void *context,                        \
+                                const unsigned char *src,      \
+                                unsigned char *dst,            \
+                                uint32 len,            \
+                                unsigned char *iv)
 #define SILC_CIPHER_API_DECRYPT_CBC(cipher)                    \
-int silc_##cipher##_decrypt_cbc(void *context,                 \
-                               const unsigned char *src,       \
-                               unsigned char *dst,             \
-                               uint32 len,             \
-                               unsigned char *iv)
+bool silc_##cipher##_decrypt_cbc(void *context,                        \
+                                const unsigned char *src,      \
+                                unsigned char *dst,            \
+                                uint32 len,            \
+                                unsigned char *iv)
 #define SILC_CIPHER_API_CONTEXT_LEN(cipher)                    \
 uint32 silc_##cipher##_context_len()
 
 /* Prototypes */
-int silc_cipher_register(SilcCipherObject *cipher);
-int silc_cipher_unregister(SilcCipherObject *cipher);
-int silc_cipher_alloc(const unsigned char *name, SilcCipher *new_cipher);
+bool silc_cipher_register(SilcCipherObject *cipher);
+bool silc_cipher_unregister(SilcCipherObject *cipher);
+bool silc_cipher_register_default(void);
+bool silc_cipher_alloc(const unsigned char *name, SilcCipher *new_cipher);
 void silc_cipher_free(SilcCipher cipher);
-int silc_cipher_is_supported(const unsigned char *name);
-char *silc_cipher_get_supported();
-int silc_cipher_encrypt(SilcCipher cipher, const unsigned char *src,
-                       unsigned char *dst, uint32 len, 
-                       unsigned char *iv);
-int silc_cipher_decrypt(SilcCipher cipher, const unsigned char *src,
-                       unsigned char *dst, uint32 len, 
-                       unsigned char *iv);
-int silc_cipher_set_key(SilcCipher cipher, const unsigned char *key,
-                       uint32 keylen);
+bool silc_cipher_is_supported(const unsigned char *name);
+char *silc_cipher_get_supported(void);
+bool silc_cipher_encrypt(SilcCipher cipher, const unsigned char *src,
+                        unsigned char *dst, uint32 len, 
+                        unsigned char *iv);
+bool silc_cipher_decrypt(SilcCipher cipher, const unsigned char *src,
+                        unsigned char *dst, uint32 len, 
+                        unsigned char *iv);
+bool silc_cipher_set_key(SilcCipher cipher, const unsigned char *key,
+                        uint32 keylen);
 void silc_cipher_set_iv(SilcCipher cipher, const unsigned char *iv);
 void silc_cipher_get_iv(SilcCipher cipher, unsigned char *iv);
 uint32 silc_cipher_get_key_len(SilcCipher cipher);