/* salsa20.h
-
- The Salsa20 stream cipher.
-
- Copyright (C) 2012 Simon Josefsson
- Copyright (C) 2001 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/.
-*/
+ *
+ * The Salsa20 stream cipher.
+ */
+
+/* nettle, low-level cryptographics library
+ *
+ * Copyright (C) 2012 Simon Josefsson
+ * Copyright (C) 2001 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.
+ */
#ifndef NETTLE_SALSA20_H_INCLUDED
#define NETTLE_SALSA20_H_INCLUDED
/* Name mangling */
#define salsa20_set_key nettle_salsa20_set_key
-#define salsa20_128_set_key nettle_salsa20_128_set_key
-#define salsa20_256_set_key nettle_salsa20_256_set_key
-#define salsa20_set_nonce nettle_salsa20_set_nonce
+#define salsa20_set_iv nettle_salsa20_set_iv
#define salsa20_crypt nettle_salsa20_crypt
#define _salsa20_core _nettle_salsa20_core
#define salsa20r12_crypt nettle_salsa20r12_crypt
-/* Alias for backwards compatibility */
-#define salsa20_set_iv nettle_salsa20_set_nonce
-
-/* In octets.*/
-#define SALSA20_128_KEY_SIZE 16
-#define SALSA20_256_KEY_SIZE 32
-#define SALSA20_BLOCK_SIZE 64
-#define SALSA20_NONCE_SIZE 8
-#define SALSA20_IV_SIZE SALSA20_NONCE_SIZE
-
-/* Aliases */
+/* Minimum and maximum keysizes, and a reasonable default. In
+ * octets.*/
#define SALSA20_MIN_KEY_SIZE 16
#define SALSA20_MAX_KEY_SIZE 32
#define SALSA20_KEY_SIZE 32
+#define SALSA20_BLOCK_SIZE 64
+
+#define SALSA20_IV_SIZE 8
#define _SALSA20_INPUT_LENGTH 16
};
void
-salsa20_128_set_key(struct salsa20_ctx *ctx, const uint8_t *key);
-void
-salsa20_256_set_key(struct salsa20_ctx *ctx, const uint8_t *key);
-
-void
salsa20_set_key(struct salsa20_ctx *ctx,
- size_t length, const uint8_t *key);
+ unsigned length, const uint8_t *key);
void
-salsa20_set_nonce(struct salsa20_ctx *ctx, const uint8_t *nonce);
-
+salsa20_set_iv(struct salsa20_ctx *ctx, const uint8_t *iv);
+
void
salsa20_crypt(struct salsa20_ctx *ctx,
- size_t length, uint8_t *dst,
+ unsigned length, uint8_t *dst,
const uint8_t *src);
void
salsa20r12_crypt(struct salsa20_ctx *ctx,
- size_t length, uint8_t *dst,
+ unsigned length, uint8_t *dst,
const uint8_t *src);
void