summaryrefslogtreecommitdiff
path: root/arctwo.h
diff options
context:
space:
mode:
authorSimon Josefsson <simon@josefsson.org>2004-08-24 17:21:54 +0200
committerNiels Möller <nisse@lysator.liu.se>2004-08-24 17:21:54 +0200
commitcc17439cb145cc24bbbbb5339264abf221d8ff5b (patch)
treebb40f37ec1a0e52423465984d4c9d42007ed3c41 /arctwo.h
parentffcdc8c6d2ea0730de2291f352571418a537a155 (diff)
downloadnettle-cc17439cb145cc24bbbbb5339264abf221d8ff5b.tar.gz
New file.
Rev: src/nettle/arctwo-meta.c:1.1 Rev: src/nettle/arctwo.c:1.1 Rev: src/nettle/arctwo.h:1.1 Rev: src/nettle/testsuite/arctwo-test.c:1.1
Diffstat (limited to 'arctwo.h')
-rw-r--r--arctwo.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/arctwo.h b/arctwo.h
new file mode 100644
index 00000000..4f2a93f4
--- /dev/null
+++ b/arctwo.h
@@ -0,0 +1,76 @@
+/* arctwo.h
+ *
+ * The arctwo/rfc2268 block cipher.
+ */
+
+/* nettle, low-level cryptographics library
+ *
+ * Copyright (C) 2004 Simon Josefsson
+ * Copyright (C) 2002, 2004 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., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ */
+
+#ifndef NETTLE_ARCTWO_H_INCLUDED
+#define NETTLE_ARCTWO_H_INCLUDED
+
+#include "nettle-types.h"
+
+/* Name mangling */
+#define arctwo_set_key nettle_arctwo_set_key
+#define arctwo_set_key_ebk nettle_arctwo_set_key_ebk
+#define arctwo_encrypt nettle_arctwo_encrypt
+#define arctwo_decrypt nettle_arctwo_decrypt
+#define arctwo_set_key_gutmann nettle_arctwo_set_key_gutmann
+
+#define ARCTWO_BLOCK_SIZE 8
+
+/* Variable key size from 1 byte to 128 bytes. */
+#define ARCTWO_MIN_KEY_SIZE 1
+#define ARCTWO_MAX_KEY_SIZE 128
+
+#define ARCTWO_KEY_SIZE 8
+
+struct arctwo_ctx
+{
+ uint16_t S[64];
+};
+
+/* Key expansion function that takes the "effective key bits", 1-1024,
+ as an explicit argument. 0 means maximum key bits. */
+void
+arctwo_set_key_ebk (struct arctwo_ctx *ctx,
+ unsigned length, const uint8_t * key, unsigned ebk);
+
+/* Equvivalent to arctwo_set_key_ebk, with ebk = 8 * length */
+void
+arctwo_set_key (struct arctwo_ctx *ctx, unsigned length, const uint8_t *key);
+
+/* Equvivalent to arctwo_set_key_ebk, with ebk = 1024 */
+/* FIXME: Is this function really needed, and if so, what's the right
+ name for it? */
+void
+arctwo_set_key_gutmann (struct arctwo_ctx *ctx,
+ unsigned length, const uint8_t *key);
+
+void
+arctwo_encrypt (struct arctwo_ctx *ctx,
+ unsigned length, uint8_t *dst, const uint8_t *src);
+void
+arctwo_decrypt (struct arctwo_ctx *ctx,
+ unsigned length, uint8_t *dst, const uint8_t *src);
+
+#endif /* NETTLE_ARCTWO_H_INCLUDED */