/* nettle-internal.c
- *
- * Things that are used only by the testsuite and benchmark, and
- * subject to change.
- */
-
-/* nettle, low-level cryptographics library
- *
- * Copyright (C) 2002, 2014 Niels Möller
- *
- * The nettle library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or (at your
- * option) any later version.
- *
- * The nettle library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with the nettle library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02111-1301, USA.
- */
+
+ Things that are used only by the testsuite and benchmark, and
+ not included in the library.
+
+ Copyright (C) 2002, 2014 Niels Möller
+
+ This file is part of GNU Nettle.
+
+ GNU Nettle is free software: you can redistribute it and/or
+ modify it under the terms of either:
+
+ * the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 3 of the License, or (at your
+ option) any later version.
+
+ or
+
+ * the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your
+ option) any later version.
+
+ or both in parallel, as here.
+
+ GNU Nettle is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received copies of the GNU General Public License and
+ the GNU Lesser General Public License along with this program. If
+ not, see http://www.gnu.org/licenses/.
+*/
#if HAVE_CONFIG_H
# include "config.h"
#include <stdlib.h>
#include "nettle-internal.h"
+#include "arcfour.h"
#include "blowfish.h"
#include "des.h"
#include "chacha.h"
DES_BLOCK_SIZE, DES_KEY_SIZE,
(nettle_set_key_func *) des_set_key,
(nettle_set_key_func *) des_set_key,
- (nettle_crypt_func *) des_encrypt,
- (nettle_crypt_func *) des_decrypt
+ (nettle_cipher_func *) des_encrypt,
+ (nettle_cipher_func *) des_decrypt
};
const struct nettle_cipher
DES3_BLOCK_SIZE, DES3_KEY_SIZE,
(nettle_set_key_func *) des3_set_key,
(nettle_set_key_func *) des3_set_key,
- (nettle_crypt_func *) des3_encrypt,
- (nettle_crypt_func *) des3_decrypt
+ (nettle_cipher_func *) des3_encrypt,
+ (nettle_cipher_func *) des3_decrypt
};
/* NOTE: This is not as nice as one might think, as we pretend
BLOWFISH_BLOCK_SIZE, BLOWFISH128_KEY_SIZE,
(nettle_set_key_func *) blowfish128_set_key,
(nettle_set_key_func *) blowfish128_set_key,
- (nettle_crypt_func *) blowfish_encrypt,
- (nettle_crypt_func *) blowfish_decrypt
+ (nettle_cipher_func *) blowfish_encrypt,
+ (nettle_cipher_func *) blowfish_decrypt
};
-/* Sets a fix zero iv. For benchmarking only. */
-static void
-chacha_set_key_hack(void *ctx, const uint8_t *key)
-{
- static const uint8_t nonce[CHACHA_NONCE_SIZE];
- chacha256_set_key (ctx, key);
- chacha_set_nonce (ctx, nonce);
-}
+const struct nettle_aead
+nettle_arcfour128 = {
+ "arcfour128", sizeof(struct arcfour_ctx),
+ 1, ARCFOUR128_KEY_SIZE, 0, 0,
+ (nettle_set_key_func *) arcfour128_set_key,
+ (nettle_set_key_func *) arcfour128_set_key,
+ NULL, NULL,
+ (nettle_crypt_func *) arcfour_crypt,
+ (nettle_crypt_func *) arcfour_crypt,
+ NULL,
+};
-/* Claim zero block size, to classify as a stream cipher. */
-const struct nettle_cipher
+const struct nettle_aead
nettle_chacha = {
"chacha", sizeof(struct chacha_ctx),
- 0, CHACHA256_KEY_SIZE,
- chacha_set_key_hack, chacha_set_key_hack,
+ CHACHA_BLOCK_SIZE, CHACHA_KEY_SIZE,
+ CHACHA_NONCE_SIZE, 0,
+ (nettle_set_key_func *) chacha_set_key,
+ (nettle_set_key_func *) chacha_set_key,
+ (nettle_set_key_func *) chacha_set_nonce,
+ NULL,
+ (nettle_crypt_func *) chacha_crypt,
(nettle_crypt_func *) chacha_crypt,
- (nettle_crypt_func *) chacha_crypt
+ NULL,
};
-/* Sets a fix zero iv. For benchmarking only. */
-static void
-salsa20_set_key_hack(void *ctx, const uint8_t *key)
-{
- static const uint8_t iv[SALSA20_IV_SIZE];
- salsa20_256_set_key (ctx, key);
- salsa20_set_iv (ctx, iv);
-}
-
-/* Claim zero block size, to classify as a stream cipher. */
-const struct nettle_cipher
+const struct nettle_aead
nettle_salsa20 = {
"salsa20", sizeof(struct salsa20_ctx),
- 0, SALSA20_256_KEY_SIZE,
- salsa20_set_key_hack, salsa20_set_key_hack,
+ SALSA20_BLOCK_SIZE, SALSA20_256_KEY_SIZE,
+ SALSA20_NONCE_SIZE, 0,
+ (nettle_set_key_func *) salsa20_256_set_key,
+ (nettle_set_key_func *) salsa20_256_set_key,
+ (nettle_set_key_func *) salsa20_set_nonce,
+ NULL,
(nettle_crypt_func *) salsa20_crypt,
- (nettle_crypt_func *) salsa20_crypt
+ (nettle_crypt_func *) salsa20_crypt,
+ NULL,
};
-const struct nettle_cipher
+const struct nettle_aead
nettle_salsa20r12 = {
"salsa20r12", sizeof(struct salsa20_ctx),
- 0, SALSA20_256_KEY_SIZE,
- salsa20_set_key_hack, salsa20_set_key_hack,
+ SALSA20_BLOCK_SIZE, SALSA20_256_KEY_SIZE,
+ SALSA20_NONCE_SIZE, 0,
+ (nettle_set_key_func*) salsa20_256_set_key,
+ (nettle_set_key_func*) salsa20_256_set_key,
+ (nettle_set_key_func*) salsa20_set_nonce,
+ NULL,
(nettle_crypt_func *) salsa20r12_crypt,
- (nettle_crypt_func *) salsa20r12_crypt
+ (nettle_crypt_func *) salsa20r12_crypt,
+ NULL,
};
-