Merge in latest beecrypt-3.0.0 changes.
authorjbj <devnull@localhost>
Mon, 5 May 2003 16:02:02 +0000 (16:02 +0000)
committerjbj <devnull@localhost>
Mon, 5 May 2003 16:02:02 +0000 (16:02 +0000)
CVS patchset: 6813
CVS date: 2003/05/05 16:02:02

beecrypt/beecrypt.c
beecrypt/beecrypt.h
beecrypt/blockpad.c
beecrypt/blockpad.h
beecrypt/mp.c
beecrypt/mp.h
beecrypt/rsa.c

index bc5a45b..fd3c3fb 100644 (file)
@@ -53,10 +53,6 @@ typedef struct
 
 #include "debug.h"
 
-/*!\addtogroup ES_m
- * \{
- */
-
 /*@observer@*/ /*@unchecked@*/
 static entropySource entropySourceList[] =
 {
@@ -90,12 +86,12 @@ int entropySourceCount()
        return ENTROPYSOURCES;
 }
 
-const entropySource* entropySourceGet(int index)
+const entropySource* entropySourceGet(int n)
 {
-       if ((index < 0) || (index >= ENTROPYSOURCES))
+       if ((n < 0) || (n >= ENTROPYSOURCES))
                return (const entropySource*) 0;
 
-       return entropySourceList+index;
+       return entropySourceList+n;
 }
 
 const entropySource* entropySourceFind(const char* name)
@@ -146,11 +142,6 @@ int entropyGatherNext(byte* data, size_t size)
        return -1;
 }
 
-/*!\}
- * \addtogroup PRNG_m
- * \{
- */
-
 /*@observer@*/ /*@unchecked@*/
 static const randomGenerator* randomGeneratorList[] =
 {
@@ -251,11 +242,6 @@ int randomGeneratorContextNext(randomGeneratorContext* ctxt, byte* data, size_t
        return ctxt->rng->next(ctxt->param, data, size);
 }
 
-/*!\}
- * \addtogroup HASH_m
- * \{
- */
-
 /*@observer@*/ /*@unchecked@*/
 static const hashFunction* hashFunctionList[] =
 {
@@ -502,11 +488,6 @@ int hashFunctionContextDigestMatch(hashFunctionContext* ctxt, const mpnumber* d)
        /*@=mustfree@*/
 }
 
-/*!\}
- * \addtogroup HMAC_m
- * \{
- */
-
 /*@observer@*/ /*@unchecked@*/
 static const keyedHashFunction* keyedHashFunctionList[] =
 {
@@ -770,11 +751,6 @@ int keyedHashFunctionContextDigestMatch(keyedHashFunctionContext* ctxt, const mp
        /*@=mustfree@*/
 }
 
-/*!\}
- * \addtogroup BC_m
- * \{
- */
-
 /*@observer@*/ /*@unchecked@*/
 static const blockCipher* blockCipherList[] =
 {
@@ -900,9 +876,7 @@ int blockCipherContextFree(blockCipherContext* ctxt)
        /*@=nullstate@*/
 }
 
-static /*@unused@*/
-int blockCipherContextECB(blockCipherContext* ctxt, void* dst, const void* src, int nblocks)
-       /*@modifies ctxt->param, dst @*/
+int blockCipherContextECB(blockCipherContext* ctxt, uint32_t* dst, const uint32_t* src, size_t nblocks)
 {
        switch (ctxt->op)
        {
@@ -923,9 +897,7 @@ int blockCipherContextECB(blockCipherContext* ctxt, void* dst, const void* src,
        return -1;
 }
 
-static /*@unused@*/
-int blockCipherContextCBC(blockCipherContext* ctxt, void* dst, const void* src, int nblocks)
-       /*@modifies ctxt->param, dst @*/
+int blockCipherContextCBC(blockCipherContext* ctxt, uint32_t* dst, const uint32_t* src, size_t nblocks)
 {
        switch (ctxt->op)
        {
@@ -946,9 +918,6 @@ int blockCipherContextCBC(blockCipherContext* ctxt, void* dst, const void* src,
        return -1;
 }
 
-/*!\}
- */
-
 #if WIN32
 __declspec(dllexport)
 BOOL WINAPI DllMain(HINSTANCE hInst, DWORD wDataSeg, LPVOID lpReserved)
index 28f8f33..92f0f52 100644 (file)
@@ -76,11 +76,11 @@ int entropySourceCount(void)
 
 /** \ingroup ES_m
  * Retrieve a entropy source by index.
- * @param index                entropy source index
+ * @param n            entropy source index
  * @return             entropy source pointer (or NULL)
  */
 BEECRYPTAPI /*@observer@*/ /*@null@*/ /*@unused@*/
-const entropySource* entropySourceGet(int index)
+const entropySource* entropySourceGet(int n)
        /*@*/;
 
 /** \ingroup ES_m
@@ -852,6 +852,18 @@ int blockCipherContextFree(/*@special@*/ blockCipherContext* ctxt)
        /*@releases ctxt->param @*/
        /*@modifies ctxt->algo, ctxt->param @*/;
 
+/** \ingroup BC_m
+ */
+BEECRYPTAPI /*@unused@*/
+int blockCipherContextECB(blockCipherContext* ctxt, uint32_t* dst, const uint32_t* src, size_t nblocks)
+       /*@modifies ctxt->param, dst @*/;
+
+/** \ingroup BC_m
+ */
+BEECRYPTAPI /*@unused@*/
+int blockCipherContextCBC(blockCipherContext* ctxt, uint32_t* dst, const uint32_t* src, size_t nblocks)
+       /*@modifies ctxt->param, dst @*/;
+
 #ifdef __cplusplus
 }
 #endif
index 2968682..429de13 100644 (file)
@@ -19,7 +19,7 @@
 
 /*!\file blockpad.c
  * \brief Blockcipher padding algorithms.
- * \author Bob Deblier <bob@virtualunlimited.com>
+ * \author Bob Deblier <bob.deblier@pandora.be>
  * \ingroup BC_m
  */
 
 #include "blockpad.h"
 #include "debug.h"
 
-/*!\addtogroup BC_m
- * \{
- */
-
 memchunk* pkcs5Pad(size_t blockbytes, memchunk* tmp)
 {
        if (tmp)
@@ -121,6 +117,3 @@ memchunk* pkcs5UnpadCopy(/*@unused@*/ size_t blockbytes, const memchunk* src)
 
        return tmp;
 }
-
-/*!\}
- */
index 9899b44..c705d9e 100644 (file)
@@ -18,8 +18,8 @@
  */
 
 /*!\file blockpad.h
- * \brief Blockcipher padding algorithms, headers.
- * \author Bob Deblier <bob@virtualunlimited.com>
+ * \brief Blockcipher padding algorithms.
+ * \author Bob Deblier <bob.deblier@pandora.be>
  * \ingroup BC_m
  */
 
index 944944b..d3cb268 100644 (file)
@@ -739,7 +739,7 @@ void mpmul(mpw* result, size_t xsize, const mpw* xdata, size_t ysize, const mpw*
 #endif
 
 #ifndef ASM_MPADDSQRTRC
-mpw mpaddsqrtrc(size_t size, mpw* result, const mpw* data)
+void mpaddsqrtrc(size_t size, mpw* result, const mpw* data)
 {
        #if HAVE_MPDW
        register mpdw temp;
@@ -797,7 +797,6 @@ mpw mpaddsqrtrc(size_t size, mpw* result, const mpw* data)
                carry += (load > rhi);
        }
        #endif
-       return carry;
 }
 #endif
 
index b2b6136..3136f23 100644 (file)
@@ -81,36 +81,60 @@ void mpmove(size_t size, /*@out@*/ mpw* dst, const mpw* src)
 #endif
 
 /**
+ * This function zeroes a multi-precision integer of a given size.
+ * @param size         The size of the multi-precision integer.
+ * @param data         The multi-precision integer data.
  */
 BEECRYPTAPI
 void mpzero(size_t size, /*@out@*/ mpw* data)
        /*@modifies data @*/;
 
 /**
+ * This function fills each word of a multi-precision integer with a
+ *  given value.
+ * @param size         The size of the multi-precision integer.
+ * @param data         The multi-precision integer data.
+ * @param fill         The value fill the data with.
  */
 BEECRYPTAPI /*@unused@*/
 void mpfill(size_t size, /*@out@*/ mpw* data, mpw fill)
        /*@modifies data @*/;
 
 /**
+ * This function tests if a multi-precision integer is odd.
+ * @param size         The size of the multi-precision integer.
+ * @param data         The multi-precision integer data.
+ * @return             1 if odd, 0 if even
  */
 BEECRYPTAPI
 int mpodd (size_t size, const mpw* data)
        /*@*/;
 
 /**
+ * This function tests if a multi-precision integer is even.
+ * @param size         The size of the multi-precision integer.
+ * @param data         The multi-precision integer data.
+ * @return             1 if even, 0 if odd
  */
 BEECRYPTAPI
 int mpeven(size_t size, const mpw* data)
        /*@*/;
 
 /**
+ * This function tests if a multi-precision integer is zero.
+ * @param size         The size of the multi-precision integer.
+ * @param data         The multi-precision integer data.
+ * @return             1 if zero, 0 if not zero
  */
 BEECRYPTAPI
 int mpz  (size_t size, const mpw* data)
        /*@*/;
 
 /**
+ * This function tests if a multi-precision integer is not zero.
+ * @param size         The size of the multi-precision integer.
+ * @param data         The multi-precision integer data.
+ * @return             1 if not zero, 0 if zero
  */
 /*@-exportlocal@*/
 BEECRYPTAPI
@@ -119,12 +143,24 @@ int mpnz (size_t size, const mpw* data)
 /*@=exportlocal@*/
 
 /**
+ * This function tests if two multi-precision integers of the same size
+ *  are equal.
+ * @param size         The size of the multi-precision integers.
+ * @param xdata                The first multi-precision integer.
+ * @param ydata                The second multi-precision integer.
+ * @return             1 if equal, 0 if not equal
  */
 BEECRYPTAPI
 int mpeq (size_t size, const mpw* xdata, const mpw* ydata)
        /*@*/;
 
 /**
+ * This function tests if two multi-precision integers of the same size
+ *  differ.
+ * @param size         The size of the multi-precision integers.
+ * @param xdata                The first multi-precision integer.
+ * @param ydata                The second multi-precision integer.
+ * @return 1           if not equal, 0 if equal
  */
 /*@-exportlocal@*/
 BEECRYPTAPI
@@ -133,6 +169,13 @@ int mpne (size_t size, const mpw* xdata, const mpw* ydata)
 /*@=exportlocal@*/
 
 /**
+ * This function tests if the first of two multi-precision integers
+ *  of the same size is greater than the second.
+ * @note The comparison treats the arguments as unsigned.
+ * @param size         The size of the multi-precision integers.
+ * @param xdata                The first multi-precision integer.
+ * @param ydata                The second multi-precision integer.
+ * @return             1 if greater, 0 if less or equal
  */
 /*@-exportlocal@*/
 BEECRYPTAPI
@@ -141,6 +184,13 @@ int mpgt (size_t size, const mpw* xdata, const mpw* ydata)
 /*@=exportlocal@*/
 
 /**
+ * This function tests if the first of two multi-precision integers
+ *  of the same size is less than the second.
+ * @note The comparison treats the arguments as unsigned.
+ * @param size         The size of the multi-precision integers.
+ * @param xdata                The first multi-precision integer.
+ * @param ydata                The second multi-precision integer.
+ * @return             1 if less, 0 if greater or equal
  */
 /*@-exportlocal@*/
 BEECRYPTAPI
@@ -149,108 +199,208 @@ int mplt (size_t size, const mpw* xdata, const mpw* ydata)
 /*@=exportlocal@*/
 
 /**
+ * This function tests if the first of two multi-precision integers
+ *  of the same size is greater than or equal to the second.
+ * @note The comparison treats the arguments as unsigned.
+ * @param size         The size of the multi-precision integers.
+ * @param xdata                The first multi-precision integer.
+ * @param ydata                The second multi-precision integer.
+ * @return             1 if greater or equal, 0 if less
  */
 BEECRYPTAPI
 int mpge (size_t size, const mpw* xdata, const mpw* ydata)
        /*@*/;
 
 /**
+ * This function tests if the first of two multi-precision integers
+ *  of the same size is less than or equal to the second.
+ * @note The comparison treats the arguments as unsigned.
+ * @param size         The size of the multi-precision integers.
+ * @param xdata                The first multi-precision integer.
+ * @param ydata                The second multi-precision integer.
+ * @return             1 if less or equal, 0 if greater
  */
 BEECRYPTAPI
 int mple (size_t size, const mpw* xdata, const mpw* ydata)
        /*@*/;
 
 /**
+ * This function tests if two multi-precision integers of different
+ *  size are equal.
+ * @param xsize                The size of the first multi-precision integer.
+ * @param xdata                The first multi-precision integer.
+ * @param ysize                The size of the first multi-precision integer.
+ * @param ydata                The second multi-precision integer.
+ * @return             1 if equal, 0 if not equal
  */
 BEECRYPTAPI
 int mpeqx(size_t xsize, const mpw* xdata, size_t ysize, const mpw* ydata)
        /*@*/;
 
 /**
+ * This function tests if two multi-precision integers of different
+ *  size differ.
+ * @param xsize                The size of the first multi-precision integer.
+ * @param xdata                The first multi-precision integer.
+ * @param ysize                The size of the first multi-precision integer.
+ * @param ydata                The second multi-precision integer.
+ * @return             1 if not equal, 0 if equal
  */
 BEECRYPTAPI /*@unused@*/
 int mpnex(size_t xsize, const mpw* xdata, size_t ysize, const mpw* ydata)
        /*@*/;
 
 /**
+ * This function tests if the first of two multi-precision integers
+ *  of different size is greater than the second.
+ * @note The comparison treats the arguments as unsigned.
+ * @param xsize                The size of the first multi-precision integer.
+ * @param xdata                The first multi-precision integer.
+ * @param ysize                The size of the second multi-precision integer.
+ * @param ydata                The second multi-precision integer.
+ * @return             1 if greater, 0 if less or equal
  */
 BEECRYPTAPI /*@unused@*/
 int mpgtx(size_t xsize, const mpw* xdata, size_t ysize, const mpw* ydata)
        /*@*/;
 
 /**
+ * This function tests if the first of two multi-precision integers
+ *  of different size is less than the second.
+ * @note The comparison treats the arguments as unsigned.
+ * @param xsize                The size of the first multi-precision integer.
+ * @param xdata                The first multi-precision integer.
+ * @param ysize                The size of the second multi-precision integer.
+ * @param ydata                The second multi-precision integer.
+ * @return             1 if less, 0 if greater or equal
  */
 BEECRYPTAPI /*@unused@*/
 int mpltx(size_t xsize, const mpw* xdata, size_t ysize, const mpw* ydata)
        /*@*/;
 
 /**
+ * This function tests if the first of two multi-precision integers
+ *  of different size is greater than or equal to the second.
+ * @note The comparison treats the arguments as unsigned.
+ * @param xsize                The size of the first multi-precision integer.
+ * @param xdata                The first multi-precision integer.
+ * @param ysize                The size of the second multi-precision integer.
+ * @param ydata                The second multi-precision integer.
+ * @return             1 if greater or equal, 0 if less
  */
 BEECRYPTAPI
 int mpgex(size_t xsize, const mpw* xdata, size_t ysize, const mpw* ydata)
        /*@*/;
 
 /**
+ * This function tests if the first of two multi-precision integers
+ *  of different size is less than or equal to the second.
+ * @note The comparison treats the arguments as unsigned.
+ * @param xsize                The size of the first multi-precision integer.
+ * @param xdata                The first multi-precision integer.
+ * @param ysize                The size of the second multi-precision integer.
+ * @param ydata                The second multi-precision integer.
+ * @return             1 if less or equal, 0 if greater
  */
 BEECRYPTAPI
 int mplex(size_t xsize, const mpw* xdata, size_t ysize, const mpw* ydata)
        /*@*/;
 
 /**
+ * This function tests if the value of a multi-precision integer is
+ *  equal to one.
+ * @param size         The size of the multi-precision integer.
+ * @param data         The multi-precision integer data.
+ * @return             1 if equal to one, 0 otherwise.
  */
 BEECRYPTAPI
 int mpisone(size_t size, const mpw* data)
        /*@*/;
 
 /**
+ * This function tests if the value of a multi-precision integer is
+ *  equal to two.
+ * @param size         The size of the multi-precision integer.
+ * @param data         The multi-precision integer data.
+ * @return             1 if equal to two, 0 otherwise.
  */
 BEECRYPTAPI
 int mpistwo(size_t size, const mpw* data)
        /*@*/;
 
 /**
+ * This function tests if the value of a multi-precision integer is
+ *  less than or equal to one.
+ * @param size         The size of the multi-precision integer.
+ * @param data         The multi-precision integer data.
+ * @return             1 if less than or equal to one, 0 otherwise.
  */
 BEECRYPTAPI
 int mpleone(size_t size, const mpw* data)
        /*@*/;
 
 /**
+ * This function tests if multi-precision integer x is equal to y minus one.
+ * @param size         The size of the multi-precision integers.
+ * @param xdata                The first multi-precision integer.
+ * @param ydata                The second multi-precision integer.
+ * @return             1 if less than or equal to (y-1), 0 otherwise.
  */
 BEECRYPTAPI /*@unused@*/
 int mpeqmone(size_t size, const mpw* xdata, const mpw* ydata)
        /*@*/;
 
 /**
+ * This function tests the most significant bit of a multi-precision integer.
+ * @param size         The size of the multi-precision integer.
+ * @param data         The multi-precision integer data.
+ * @return             1 if set, 0 if not set
  */
 BEECRYPTAPI
 int mpmsbset(size_t size, const mpw* data)
        /*@*/;
 
 /**
+ * This function tests the least significant bit of a multi-precision integer.
+ * @param size         The size of the multi-precision integer.
+ * @param data         The multi-precision integer data.
+ * @return             1 if set, 0 if not set
  */
 BEECRYPTAPI /*@unused@*/
 int mplsbset(size_t size, const mpw* data)
        /*@*/;
 
 /**
+ * This function sets the most significant bit of a multi-precision integer.
+ * @param size         The size of the multi-precision integer.
+ * @param data         The multi-precision integer data.
  */
 BEECRYPTAPI /*@unused@*/
 void mpsetmsb(size_t size, mpw* data)
        /*@modifies data @*/;
 
 /**
+ * This function sets the least significant bit of a multi-precision integer.
+ * @param size         The size of the multi-precision integer.
+ * @param data         The multi-precision integer data.
  */
 BEECRYPTAPI
 void mpsetlsb(size_t size, mpw* data)
        /*@modifies data @*/;
 
 /**
+ * This function clears the most significant bit of a multi-precision integer.
+ * @param size         The size of the multi-precision integer.
+ * @param data         The multi-precision integer data.
  */
 BEECRYPTAPI /*@unused@*/
 void mpclrmsb(size_t size, mpw* data)
        /*@modifies data @*/;
 
 /**
+ * This function clears the least significant bit of a multi-precision integer.
+ * @param size         The size of the multi-precision integer.
+ * @param data         The multi-precision integer data.
  */
 BEECRYPTAPI /*@unused@*/
 void mpclrlsb(size_t size, mpw* data)
@@ -275,6 +425,9 @@ void mpor(size_t size, mpw* xdata, const mpw* ydata)
        /*@modifies xdata @*/;
 
 /**
+ * This function flips all bits of a multi-precision integer.
+ * @param size         The size of the multi-precision integer.
+ * @param data         The multi-precision integer data.
  */
 /*@-exportlocal@*/
 BEECRYPTAPI
@@ -301,6 +454,12 @@ int mpaddw(size_t size, mpw* xdata, mpw y)
        /*@modifies xdata @*/;
 
 /**
+ * This function adds two multi-precision integers of equal size.
+ * The performed operation is in pseudocode: x += y
+ * @param size         The size of the multi-precision integers.
+ * @param xdata                The first multi-precision integer.
+ * @param ydata                The second multi-precision integer.
+ * @return             The carry-over value of the operation (either 0 or 1).
  */
 BEECRYPTAPI
 int mpadd (size_t size, mpw* xdata, const mpw* ydata)
@@ -411,32 +570,59 @@ void mpsdivtwo(size_t size, mpw* data)
        /*@modifies data @*/;
 
 /**
+ * This function performs a multi-precision multiply-setup.
+ *
+ * This function is used in the computation of a full multi-precision
+ * multiplication. By using it we can shave off a few cycles; otherwise we'd
+ * have to zero the least significant half of the result first and use
+ * another call to the slightly slower mpaddmul function.
+ *
+ * @param size         The size of multi-precision integer multiplier.
+ * @param result       The place where result will be accumulated.
+ * @param data         The multi-precision integer multiplier.
+ * @param y            The multiplicand.
+ * @return             The carry-over multi-precision word.
  */
 BEECRYPTAPI
 mpw mpsetmul   (size_t size, /*@out@*/ mpw* result, const mpw* data, mpw y)
        /*@modifies result @*/;
 
 /**
+ * This function performs a mult-precision multiply-accumulate.
+ *
+ * This function is used in the computation of a full multi-precision
+ * multiplication. It computes the product-by-one-word and accumulates it with
+ * the previous result.
+ *
+ * @param size         The size of multi-precision integer multiplier.
+ * @param result       The place where result will be accumulated.
+ * @param data         The multi-precision integer multiplier.
+ * @param y            The multiplicand.
+ * @return             The carry-over multi-precision word.
  */
 BEECRYPTAPI
 mpw mpaddmul   (size_t size, /*@out@*/ mpw* result, const mpw* data, mpw y)
        /*@modifies result @*/;
 
 /**
+ * This function is used in the calculation of a multi-precision
+ * squaring.
  */
 /*@-exportlocal@*/
 BEECRYPTAPI
-mpw mpaddsqrtrc(size_t size, /*@out@*/ mpw* result, const mpw* data)
+void mpaddsqrtrc(size_t size, /*@out@*/ mpw* result, const mpw* data)
        /*@modifies result @*/;
 /*@=exportlocal@*/
 
 /**
+ * This function computes a full multi-precision product.
  */
 BEECRYPTAPI
 void mpmul(/*@out@*/ mpw* result, size_t xsize, const mpw* xdata, size_t ysize, const mpw* ydata)
        /*@modifies result @*/;
 
 /**
+ * This function computes a full multi-precision square.
  */
 BEECRYPTAPI
 void mpsqr(/*@out@*/ mpw* result, size_t size, const mpw* data)
index 4a2bfc5..d1a6cf9 100644 (file)
 #include "mp.h"
 #include "debug.h"
 
-/*!\addtogroup IF_rsa_m
- * \{
- */
-
 int rsapub(const rsapk* pk, const mpnumber* m, mpnumber* c)
 {
        register size_t size = pk->n.size;
@@ -162,6 +158,3 @@ int rsavrfy(const rsapk* pk, const mpnumber* m, const mpnumber* c)
        }
        return 0;
 }
-
-/*!\}
- */