]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - cast5.h
forgotten files
[avr-crypto-lib.git] / cast5.h
diff --git a/cast5.h b/cast5.h
index 717c5d7b7a9e1ac7059e115d1b8016581f7bbff0..b014f7c9e8d3174c3c7b9b7cac076b6e6960c7ee 100644 (file)
--- a/cast5.h
+++ b/cast5.h
@@ -1,6 +1,6 @@
 /* cast5.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
     You should have received a copy of the GNU General Public License
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
-/* 
- * File:       cast5.h
- * Author:     Daniel Otte
- * Date:       2006-07-26
- * License: GPL
- * Description: Implementation of the CAST5 (aka CAST-128) cipher algorithm as described in RFC 2144
+/** 
+ * \file       cast5.h
+ * \author     Daniel Otte
+ * \date       2006-07-26
+ * \license GPLv3 or later
+ * \brief Implementation of the CAST5 (aka CAST-128) cipher algorithm as described in RFC 2144
  * 
  */
+
 #ifndef CAST5_H_
 #define CAST5_H_ 
 
  #endif
 #endif
 
-
+/** \typedef cast5_ctx_t
+ * \brief CAST-5 context
+ * 
+ * A variable of this type may hold a keyschedule for the CAST-5 cipher. 
+ * This context is regulary generated by the 
+ * cast5_init(uint8_t* key, uint8_t keylength_b, cast5_ctx_t* s) function.
+ */
 typedef struct cast5_ctx_st{
        uint32_t        mask[16];
        uint8_t         rotl[8];        /* 4 bit from every rotation key is stored here */
@@ -48,9 +55,39 @@ typedef struct cast5_ctx_st{
        bool            shortkey;
 } cast5_ctx_t;
 
-void cast5_init(uint8_t* key, uint8_t keylength_b, cast5_ctx_t* s);
-void cast5_enc(void* block, cast5_ctx_t *s);
-void cast5_dec(void* block, cast5_ctx_t *s);
+
+/** \fn void cast5_init(const void* key, uint16_t keylength_b, cast5_ctx_t* s);
+ * \brief generate keyschedule/contex for CAST-5
+ * 
+ * This function generates the keyschedule from the supplied key for the 
+ * CAST-5 cipher and stores it in a supplied ::cast5_ctx_t context.
+ * \param key pointer to the key
+ * \param keylength_b length of the key in bits (maximum 128 bits)
+ * \param s pointer to the context
+ */
+void cast5_init(const void* key, uint16_t keylength_b, cast5_ctx_t* s);
+
+/** \fn void cast5_enc(void* block, const cast5_ctx_t* s);
+ * \brief encrypt a block with the CAST-5 algorithm
+ * 
+ * This function encrypts a block of 64 bits (8 bytes) with the CAST-5 algorithm.
+ * It uses a keyschedule as generated by the 
+ * cast5_init(void* key, uint8_t keylength_b, cast5_ctx_t* s) function.
+ * \param block pointer to the block which gets encrypted
+ * \param s pointer to the keyschedule/context
+ */
+void cast5_enc(void* block, const cast5_ctx_t* s);
+
+/** \fn void cast5_dec(void* block, const cast5_ctx_t* s);
+ * \brief decrypt a block with the CAST-5 algorithm
+ * 
+ * This function decrypts a block of 64 bits (8 bytes) with the CAST-5 algorithm.
+ * It uses a keyschedule as generated by the 
+ * cast5_init(void* key, uint8_t keylength_b, cast5_ctx_t* s) function.
+ * \param block pointer to the block which gets decrypted
+ * \param s pointer to the keyschedule/context
+ */
+void cast5_dec(void* block, const cast5_ctx_t* s);