Integer type name change.
[silc.git] / lib / silccrypt / silccipher.h
index f408b1ffa70ed115e2aa8dfcb921e740fa229524..205adb8340d5f9e2a5c035189ed513f898a5d1c6 100644 (file)
 
        Logical name of the cipher.
 
-   unsigned int block_len
+   SilcUInt32 block_len
 
        Block size of the cipher.
 
-   unsigned int key_len
+   SilcUInt32 key_len
 
        Length of the key of the cipher (in bits).
 
 */
 typedef struct {
   char *name;
-  unsigned int block_len;
-  unsigned key_len;
-
-  int (*set_key)(void *, const unsigned char *, unsigned int);
-  int (*set_key_with_string)(void *, const unsigned char *, unsigned int);
-  int (*encrypt)(void *, const unsigned char *, unsigned char *,
-                unsigned int, unsigned char *);
-  int (*decrypt)(void *, const unsigned char *, unsigned char *, 
-                unsigned int, unsigned char *);
-  unsigned int (*context_len)();
+  SilcUInt32 block_len;
+  SilcUInt32 key_len;
+
+  bool (*set_key)(void *, const unsigned char *, SilcUInt32);
+  bool (*set_key_with_string)(void *, const unsigned char *, SilcUInt32);
+  bool (*encrypt)(void *, const unsigned char *, unsigned char *,
+                 SilcUInt32, unsigned char *);
+  bool (*decrypt)(void *, const unsigned char *, unsigned char *, 
+                 SilcUInt32, unsigned char *);
+  SilcUInt32 (*context_len)();
 } SilcCipherObject;
 
 #define SILC_CIPHER_MAX_IV_SIZE 16
@@ -63,21 +63,22 @@ typedef struct SilcCipherStruct {
   SilcCipherObject *cipher;
   void *context;
   unsigned char iv[SILC_CIPHER_MAX_IV_SIZE];
-
   void (*set_iv)(struct SilcCipherStruct *, const unsigned char *);
   void (*get_iv)(struct SilcCipherStruct *, unsigned char *);
-  unsigned int (*get_key_len)(struct SilcCipherStruct *, 
-                             const unsigned char *);
-  unsigned int (*get_block_len)(struct SilcCipherStruct *);
+  SilcUInt32 (*get_key_len)(struct SilcCipherStruct *);
+  SilcUInt32 (*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 DLLAPI SilcCipherObject silc_default_ciphers[];
+
+/* Default cipher in the SILC protocol */
+#define SILC_DEFAULT_CIPHER "aes-256-cbc"
+
 /* Macros */
 
 /* Function names in SILC Crypto modules. The name of the cipher
@@ -93,39 +94,47 @@ 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,   \
-                           unsigned int keylen)
+bool silc_##cipher##_set_key(void *context,            \
+                            const unsigned char *key,  \
+                            SilcUInt32 keylen)
 #define SILC_CIPHER_API_SET_KEY_WITH_STRING(cipher)                    \
-int silc_##cipher##_set_key_with_string(void *context,                 \
-                                       const unsigned char *string,    \
-                                       unsigned int stringlen)
+bool silc_##cipher##_set_key_with_string(void *context,                        \
+                                        const unsigned char *string,   \
+                                        SilcUInt32 stringlen)
 #define SILC_CIPHER_API_ENCRYPT_CBC(cipher)                    \
-int silc_##cipher##_encrypt_cbc(void *context,                 \
-                               const unsigned char *src,       \
-                               unsigned char *dst,             \
-                               unsigned int len,               \
-                               unsigned char *iv)
+bool silc_##cipher##_encrypt_cbc(void *context,                        \
+                                const unsigned char *src,      \
+                                unsigned char *dst,            \
+                                SilcUInt32 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,             \
-                               unsigned int len,               \
-                               unsigned char *iv)
+bool silc_##cipher##_decrypt_cbc(void *context,                        \
+                                const unsigned char *src,      \
+                                unsigned char *dst,            \
+                                SilcUInt32 len,                \
+                                unsigned char *iv)
 #define SILC_CIPHER_API_CONTEXT_LEN(cipher)                    \
-unsigned int silc_##cipher##_context_len()
+SilcUInt32 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();
-void silc_cipher_set_iv(SilcCipher itself, const unsigned char *iv);
-void silc_cipher_get_iv(SilcCipher itself, unsigned char *iv);
-unsigned int silc_cipher_get_key_len(SilcCipher itself, 
-                                    const unsigned char *name);
-unsigned int silc_cipher_get_block_len(SilcCipher itself);
+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, SilcUInt32 len, 
+                        unsigned char *iv);
+bool silc_cipher_decrypt(SilcCipher cipher, const unsigned char *src,
+                        unsigned char *dst, SilcUInt32 len, 
+                        unsigned char *iv);
+bool silc_cipher_set_key(SilcCipher cipher, const unsigned char *key,
+                        SilcUInt32 keylen);
+void silc_cipher_set_iv(SilcCipher cipher, const unsigned char *iv);
+void silc_cipher_get_iv(SilcCipher cipher, unsigned char *iv);
+SilcUInt32 silc_cipher_get_key_len(SilcCipher cipher);
+SilcUInt32 silc_cipher_get_block_len(SilcCipher cipher);
 
 #endif