X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilccrypt%2Fsilccipher.h;h=47cfd3e03f12375b3bb379c5845f5465d59258a5;hb=8ceff2f9e9d065106b1e0490b2a82d76394647c7;hp=d998d020b475dbd7eced515b8457a5f2abbf349e;hpb=72cfa31520ebc0058763a30e21c13f6e9a964aa0;p=silc.git diff --git a/lib/silccrypt/silccipher.h b/lib/silccrypt/silccipher.h index d998d020..47cfd3e0 100644 --- a/lib/silccrypt/silccipher.h +++ b/lib/silccrypt/silccipher.h @@ -44,14 +44,14 @@ typedef struct { char *name; uint32 block_len; - unsigned 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 *); + uint32 key_len; + + 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; @@ -63,20 +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 *); uint32 (*get_key_len)(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 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 @@ -92,43 +94,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);