Fixed a problem with byte switching
[umurmur.git] / src / crypt.h
index 0b35ac3b18d56c2f855e57b61eb54ed590d82bc0..300563e0aa5064f5ec91bacb9db07ddd58f5eb8e 100644 (file)
@@ -1,5 +1,5 @@
-/* Copyright (C) 2010, Martin Johansson <martin@fatbob.nu>
-   Copyright (C) 2005-2010, Thorvald Natvig <thorvald@natvig.com>
+/* Copyright (C) 2009-2014, Martin Johansson <martin@fatbob.nu>
+   Copyright (C) 2005-2014, Thorvald Natvig <thorvald@natvig.com>
 
    All rights reserved.
 
    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
-#ifndef _CRYPTSTATE_H
-#define _CRYPTSTATE_H
+#ifndef CRYPTSTATE_H_34564356
+#define CRYPTSTATE_H_34564356
 
+#ifdef NETBSD
+#include <machine/endian.h>
+#if BYTE_ORDER == BIG_ENDIAN
+#define CRYPT_BE
+#endif
+#endif
+
+#ifdef LINUX
+#include <endian.h>
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define CRYPT_BE
+#endif
+#endif
+
+#include "config.h"
+
+#ifdef USE_POLARSSL
+#include <polarssl/havege.h>
+#include <polarssl/aes.h>
+#define AES_BLOCK_SIZE 16
+#else
 #include <openssl/rand.h>
 #include <openssl/aes.h>
+#endif
+
 #include <stdint.h>
 #include "timer.h"
 #include "types.h"
@@ -42,22 +65,26 @@ typedef struct CryptState {
        uint8_t encrypt_iv[AES_BLOCK_SIZE];
        uint8_t decrypt_iv[AES_BLOCK_SIZE];
        uint8_t decrypt_history[0x100];
-       
+
        unsigned int uiGood;
        unsigned int uiLate;
        unsigned int uiLost;
        unsigned int uiResync;
-       
+
        unsigned int uiRemoteGood;
        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
        etimer_t tLastGood;
        etimer_t tLastRequest;
-       bool_t bInit;   
+       bool_t bInit;
 } cryptState_t;
 
 void CryptState_init(cryptState_t *cs);
@@ -68,4 +95,5 @@ void CryptState_setDecryptIV(cryptState_t *cs, const unsigned char *iv);
 
 bool_t CryptState_decrypt(cryptState_t *cs, const unsigned char *source, unsigned char *dst, unsigned int crypted_length);
 void CryptState_encrypt(cryptState_t *cs, const unsigned char *source, unsigned char *dst, unsigned int plain_length);
+
 #endif