X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=arcfour.h;h=d332d7f8ed1f384f6368b4bfe2f1ae6caded66ad;hb=ff9f1b74e757f2f67b11c51f65b12fffaa02e18d;hp=38ab40d0c26da1f8cebbff45812eea4045341adf;hpb=94cad47618f03baf3d750d75c20860c89ac91dbe;p=avr-crypto-lib.git
diff --git a/arcfour.h b/arcfour.h
index 38ab40d..d332d7f 100644
--- a/arcfour.h
+++ b/arcfour.h
@@ -1,6 +1,6 @@
/* arcfour.h */
/*
- This file is part of the Crypto-avr-lib/microcrypt-lib.
+ This file is part of the AVR-Crypto-Lib.
Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de)
This program is free software: you can redistribute it and/or modify
@@ -16,36 +16,76 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-/*
+/*
* File: arcfour.h
* Author: Daniel Otte
* Date: 2006-06-07
- * License: GPL
- * Description: Implementation of the ARCFOUR (RC4 compatible) stream cipher algorithm.
+ * License: GPLv3+
+ * Description: Implementation of the ARCFOUR (RC4 compatible) stream cipher algorithm.
*/
-/*
+
+/**
* \file arcfour.h
* \author Daniel Otte
* \date 2006-06-07
- * \par License
- * GPL
- * \brief Implementation of the ARCFOUR (RC4 compatible) stream cipher algorithm.
+ * \license GPLv3+
+ * \brief Implementation of the ARCFOUR (RC4 compatible) stream cipher algorithm.
+ *
+ * This header file defines the interface of the ARCFOUR cipher implementation.
+ *
+ * This implementation aims to be compatible with the ARCFOUR description
+ * available at
+ * http://www.mozilla.org/projects/security/pki/nss/draft-kaukonen-cipher-arcfour-03.txt
*/
-
-
+
+
#ifndef ARCFOUR_H_
#define ARCFOUR_H_
#include
-typedef struct {
+/** \typedef arcfour_ctx_t
+ * \brief type for arcfour context
+ *
+ * A variable of this type may contain a complete ARCFOUR context.
+ * The context is used to store the state of the cipher and gets
+ * created by the arcfour_init(arcfour_ctx_t *c, uint8_t *key, uint8_t length_B)
+ * function. The context is of the fixed size of 258 bytes
+ */
+
+/** \struct arcfour_ctx_st
+ * \brief base for ::arcfour_ctx_t
+ *
+ * The struct holds the two indices and the S-Box
+ */
+typedef struct arcfour_ctx_st {
uint8_t i,j;
uint8_t s[256];
} arcfour_ctx_t;
-
-void arcfour_init(arcfour_ctx_t *c, uint8_t *key, uint8_t length);
-uint8_t arcfour_gen(arcfour_ctx_t *c);
+/** \fn void arcfour_init(const void *key, uint8_t length_B, arcfour_ctx_t *ctx)
+ * \brief setup a context with a key
+ *
+ * This function sets up a ::arcfour_ctx_t context using
+ * the supplied key of the given length.
+ * \param ctx pointer to the context
+ * \param key pointer to the key
+ * \param length_B length of the key in bytes (between 1 and 255)
+ */
+
+void arcfour_init(const void *key, uint8_t length_B, arcfour_ctx_t *ctx);
+
+/** \fn uint8_t arcfour_gen(arcfour_ctx_t *ctx)
+ * \brief generates a byte of keystream
+ *
+ * This function generates the next byte of keystream
+ * from the supplied ::arcfour_ctx_t context which is updated accordingly
+ *
+ * \param ctx pointer to the context
+ * \return byte of keystream
+ */
+
+uint8_t arcfour_gen(arcfour_ctx_t *ctx);
#endif