X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fcrypt.h;h=f3a885a1dcf6a0119705455b8218064be7dc6d67;hb=99014f491c3ebbe7ed5aef4772212e54e551125f;hp=300563e0aa5064f5ec91bacb9db07ddd58f5eb8e;hpb=699c9895b10329eeeb6054a24fbf20e3a07a8876;p=umurmur.git diff --git a/src/crypt.h b/src/crypt.h index 300563e..f3a885a 100644 --- a/src/crypt.h +++ b/src/crypt.h @@ -31,29 +31,51 @@ #ifndef CRYPTSTATE_H_34564356 #define CRYPTSTATE_H_34564356 -#ifdef NETBSD -#include -#if BYTE_ORDER == BIG_ENDIAN -#define CRYPT_BE -#endif -#endif - -#ifdef LINUX -#include -#if __BYTE_ORDER == __BIG_ENDIAN -#define CRYPT_BE -#endif -#endif - +#include "byteorder.h" #include "config.h" -#ifdef USE_POLARSSL +#if defined(USE_POLARSSL) + #include #include + +#define CRYPT_AES_KEY aes_context #define AES_BLOCK_SIZE 16 + +#define CRYPT_RANDOM_BYTES(dest, size) RAND_bytes((unsigned char *)(dest), (size)) +#define CRYPT_SET_ENC_KEY(dest, source, size) aes_setkey_enc((dest), (source), (size)); +#define CRYPT_SET_DEC_KEY(dest, source, size) aes_setkey_dec((dest), (source), (size)); + +#define CRYPT_AES_ENCRYPT(src, dst, cryptstate) aes_crypt_ecb(&(cryptstate)->encrypt_key, AES_ENCRYPT, (unsigned char *)(src), (unsigned char *)(dst)); +#define CRYPT_AES_DECRYPT(src, dst, cryptstate) aes_crypt_ecb(&(cryptstate)->decrypt_key, AES_DECRYPT, (unsigned char *)(src), (unsigned char *)(dst)); + +#elif defined(USE_GNUTLS) + +#include +#include +#include + +#define CRYPT_AES_KEY struct aes_ctx +#define CRYPT_RANDOM_BYTES(dest, size) gnutls_rnd(GNUTLS_RND_KEY, (dest), (size)) +#define CRYPT_SET_ENC_KEY(dest, source, size) aes_set_encrypt_key((dest), (size)/8, (source)); +#define CRYPT_SET_DEC_KEY(dest, source, size) aes_set_decrypt_key((dest), (size)/8, (source)); + +#define CRYPT_AES_ENCRYPT(src, dest, ctx) aes_encrypt(&(ctx)->encrypt_key, AES_BLOCK_SIZE, (uint8_t *)(dest), (uint8_t *)(src)) +#define CRYPT_AES_DECRYPT(src, dest, ctx) aes_decrypt(&(ctx)->decrypt_key, AES_BLOCK_SIZE, (uint8_t *)(dest), (uint8_t *)(src)) + #else + #include #include + +#define CRYPT_AES_KEY AES_KEY +#define CRYPT_RANDOM_BYTES(dest, size) RAND_bytes((unsigned char *)(dest), (size)) +#define CRYPT_SET_ENC_KEY(dest, source, size) AES_set_encrypt_key((source), (size), (dest)); +#define CRYPT_SET_DEC_KEY(dest, source, size) AES_set_decrypt_key((source), (size), (dest)); + +#define CRYPT_AES_ENCRYPT(src, dst, cryptstate) AES_encrypt((unsigned char *)(src), (unsigned char *)(dst), &(cryptstate)->encrypt_key); +#define CRYPT_AES_DECRYPT(src, dst, cryptstate) AES_decrypt((unsigned char *)(src), (unsigned char *)(dst), &(cryptstate)->decrypt_key); + #endif #include @@ -75,13 +97,10 @@ typedef struct CryptState { unsigned int uiRemoteLate; unsigned int uiRemoteLost; unsigned int uiRemoteResync; -#ifndef USE_POLARSSL - AES_KEY encrypt_key; - AES_KEY decrypt_key; -#else - aes_context aes_enc; - aes_context aes_dec; -#endif + + CRYPT_AES_KEY encrypt_key; + CRYPT_AES_KEY decrypt_key; + etimer_t tLastGood; etimer_t tLastRequest; bool_t bInit;