* #35924 (zrtp): switch to libzrtpcpp
diff --git a/jni/libzrtp/sources/cryptcommon/aescpp.h b/jni/libzrtp/sources/cryptcommon/aescpp.h
new file mode 100644
index 0000000..9e2e24c
--- /dev/null
+++ b/jni/libzrtp/sources/cryptcommon/aescpp.h
@@ -0,0 +1,141 @@
+/*
+---------------------------------------------------------------------------
+Copyright (c) 1998-2010, Brian Gladman, Worcester, UK. All rights reserved.
+
+The redistribution and use of this software (with or without changes)
+is allowed without the payment of fees or royalties provided that:
+
+ source code distributions include the above copyright notice, this
+ list of conditions and the following disclaimer;
+
+ binary distributions include the above copyright notice, this list
+ of conditions and the following disclaimer in their documentation.
+
+This software is provided 'as is' with no explicit or implied warranties
+in respect of its operation, including, but not limited to, correctness
+and fitness for purpose.
+---------------------------------------------------------------------------
+Issue Date: 20/12/2007
+
+ This file contains the definitions required to use AES (Rijndael) in C++.
+*/
+
+#ifndef _AESCPP_H
+#define _AESCPP_H
+
+#include "aes.h"
+
+#if defined( AES_ENCRYPT )
+
+class AESencrypt
+{
+public:
+ aes_encrypt_ctx cx[1];
+ AESencrypt(void) { aes_init(); };
+#if defined(AES_128)
+ AESencrypt(const unsigned char key[])
+ { aes_encrypt_key128(key, cx); }
+ AES_RETURN key128(const unsigned char key[])
+ { return aes_encrypt_key128(key, cx); }
+#endif
+#if defined(AES_192)
+ AES_RETURN key192(const unsigned char key[])
+ { return aes_encrypt_key192(key, cx); }
+#endif
+#if defined(AES_256)
+ AES_RETURN key256(const unsigned char key[])
+ { return aes_encrypt_key256(key, cx); }
+#endif
+#if defined(AES_VAR)
+ AES_RETURN key(const unsigned char key[], int key_len)
+ { return aes_encrypt_key(key, key_len, cx); }
+#endif
+ AES_RETURN encrypt(const unsigned char in[], unsigned char out[]) const
+ { return aes_encrypt(in, out, cx); }
+#ifndef AES_MODES
+ AES_RETURN ecb_encrypt(const unsigned char in[], unsigned char out[], int nb) const
+ { while(nb--)
+ { aes_encrypt(in, out, cx), in += AES_BLOCK_SIZE, out += AES_BLOCK_SIZE; }
+ }
+#endif
+#ifdef AES_MODES
+ AES_RETURN mode_reset(void) { return aes_mode_reset(cx); }
+
+ AES_RETURN ecb_encrypt(const unsigned char in[], unsigned char out[], int nb) const
+ { return aes_ecb_encrypt(in, out, nb, cx); }
+
+ AES_RETURN cbc_encrypt(const unsigned char in[], unsigned char out[], int nb,
+ unsigned char iv[]) const
+ { return aes_cbc_encrypt(in, out, nb, iv, cx); }
+
+ AES_RETURN cfb_encrypt(const unsigned char in[], unsigned char out[], int nb,
+ unsigned char iv[])
+ { return aes_cfb_encrypt(in, out, nb, iv, cx); }
+
+ AES_RETURN cfb_decrypt(const unsigned char in[], unsigned char out[], int nb,
+ unsigned char iv[])
+ { return aes_cfb_decrypt(in, out, nb, iv, cx); }
+
+ AES_RETURN ofb_crypt(const unsigned char in[], unsigned char out[], int nb,
+ unsigned char iv[])
+ { return aes_ofb_crypt(in, out, nb, iv, cx); }
+
+ typedef void ctr_fn(unsigned char ctr[]);
+
+ AES_RETURN ctr_crypt(const unsigned char in[], unsigned char out[], int nb,
+ unsigned char iv[], ctr_fn cf)
+ { return aes_ctr_crypt(in, out, nb, iv, cf, cx); }
+
+#endif
+
+};
+
+#endif
+
+#if defined( AES_DECRYPT )
+
+class AESdecrypt
+{
+public:
+ aes_decrypt_ctx cx[1];
+ AESdecrypt(void) { aes_init(); };
+#if defined(AES_128)
+ AESdecrypt(const unsigned char key[])
+ { aes_decrypt_key128(key, cx); }
+ AES_RETURN key128(const unsigned char key[])
+ { return aes_decrypt_key128(key, cx); }
+#endif
+#if defined(AES_192)
+ AES_RETURN key192(const unsigned char key[])
+ { return aes_decrypt_key192(key, cx); }
+#endif
+#if defined(AES_256)
+ AES_RETURN key256(const unsigned char key[])
+ { return aes_decrypt_key256(key, cx); }
+#endif
+#if defined(AES_VAR)
+ AES_RETURN key(const unsigned char key[], int key_len)
+ { return aes_decrypt_key(key, key_len, cx); }
+#endif
+ AES_RETURN decrypt(const unsigned char in[], unsigned char out[]) const
+ { return aes_decrypt(in, out, cx); }
+#ifndef AES_MODES
+ AES_RETURN ecb_decrypt(const unsigned char in[], unsigned char out[], int nb) const
+ { while(nb--)
+ { aes_decrypt(in, out, cx), in += AES_BLOCK_SIZE, out += AES_BLOCK_SIZE; }
+ }
+#endif
+#ifdef AES_MODES
+
+ AES_RETURN ecb_decrypt(const unsigned char in[], unsigned char out[], int nb) const
+ { return aes_ecb_decrypt(in, out, nb, cx); }
+
+ AES_RETURN cbc_decrypt(const unsigned char in[], unsigned char out[], int nb,
+ unsigned char iv[]) const
+ { return aes_cbc_decrypt(in, out, nb, iv, cx); }
+#endif
+};
+
+#endif
+
+#endif