Header documentation changes and other small fixes
[crypto.git] / lib / silcmath / silcmp.h
index aaff041274be97127ee878f6258d72e27daa54da..fe8939025ef07092f101063c0d687a56a4061514 100644 (file)
@@ -4,7 +4,7 @@
 
   Author: Pekka Riikonen <priikone@silcnet.org>
 
-  Copyright (C) 1997 - 2005 Pekka Riikonen
+  Copyright (C) 1997 - 2008 Pekka Riikonen
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -43,7 +43,7 @@
 #endif /* SILC_DIST_TFM */
 #endif
 
-/****d* silcmath/SilcMPAPI/SilcMPInt
+/****d* silcmath/SilcMPInt
  *
  * NAME
  *
@@ -60,7 +60,7 @@
 typedef SILC_MP_INT SilcMPInt;
 /***/
 
-/****f* silcmath/SilcMPAPI/silc_mp_init
+/****f* silcmath/silc_mp_init
  *
  * SYNOPSIS
  *
@@ -68,14 +68,14 @@ typedef SILC_MP_INT SilcMPInt;
  *
  * DESCRIPTION
  *
- *    Initializes the SilcMPInt *that is the actual MP Integer.
+ *    Initializes the SilcMPInt that is the actual MP Integer.
  *    This must be called before any of the silc_mp_ routines can be
  *    used. The integer is uninitialized with the silc_mp_uninit function.
  *
  ***/
 void silc_mp_init(SilcMPInt *mp);
 
-/****f* silcmath/SilcMPAPI/silc_mp_sinit
+/****f* silcmath/silc_mp_sinit
  *
  * SYNOPSIS
  *
@@ -83,23 +83,16 @@ void silc_mp_init(SilcMPInt *mp);
  *
  * DESCRIPTION
  *
- *    Initializes the SilcMPInt *that is the actual MP Integer.
+ *    Initializes the SilcMPInt that is the actual MP Integer.
  *    This must be called before any of the silc_mp_ routines can be
- *    used. The integer is uninitialized with the silc_mp_uninit function.
- *    This routine is equivalent to silc_mp_init but allocates the memory
- *    from `stack'.
- *
- * NOTES
- *
- *    The `stack' is saved into the `mp' for the duration of the existence
- *    of `mp'.  This means that `stack' must not become invalid while `mp'
- *    is used.  It also means that any routine that may need memory allocation
- *    to for example enlarge `mp' will allocate the memory from `stack'.
+ *    used. The integer is uninitialized with the silc_mp_suninit function.
+ *    If `stack' is non-NULL it will be used as the memory source.  If it
+ *    is NULL, this call is equivalent to silc_mp_init.
  *
  ***/
 SilcBool silc_mp_sinit(SilcStack stack, SilcMPInt *mp);
 
-/****f* silcmath/SilcMPAPI/silc_mp_uninit
+/****f* silcmath/silc_mp_uninit
  *
  * SYNOPSIS
  *
@@ -112,7 +105,20 @@ SilcBool silc_mp_sinit(SilcStack stack, SilcMPInt *mp);
  ***/
 void silc_mp_uninit(SilcMPInt *mp);
 
-/****f* silcmath/SilcMPAPI/silc_mp_size
+/****f* silcmath/silc_mp_suninit
+ *
+ * SYNOPSIS
+ *
+ *    void silc_mp_suninit(SilcStack stack, SilcMPInt *mp);
+ *
+ * DESCRIPTION
+ *
+ *    Uninitializes the MP Integer.
+ *
+ ***/
+void silc_mp_suninit(SilcStack stack, SilcMPInt *mp);
+
+/****f* silcmath/silc_mp_size
  *
  * SYNOPSIS
  *
@@ -125,7 +131,7 @@ void silc_mp_uninit(SilcMPInt *mp);
  ***/
 size_t silc_mp_size(SilcMPInt *mp);
 
-/****f* silcmath/SilcMPAPI/silc_mp_sizeinbase
+/****f* silcmath/silc_mp_sizeinbase
  *
  * SYNOPSIS
  *
@@ -147,7 +153,7 @@ size_t silc_mp_size(SilcMPInt *mp);
  ***/
 size_t silc_mp_sizeinbase(SilcMPInt *mp, int base);
 
-/****f* silcmath/SilcMPAPI/silc_mp_set
+/****f* silcmath/silc_mp_set
  *
  * SYNOPSIS
  *
@@ -161,7 +167,7 @@ size_t silc_mp_sizeinbase(SilcMPInt *mp, int base);
  ***/
 void silc_mp_set(SilcMPInt *dst, SilcMPInt *src);
 
-/****f* silcmath/SilcMPAPI/silc_mp_set_ui
+/****f* silcmath/silc_mp_set_ui
  *
  * SYNOPSIS
  *
@@ -175,7 +181,7 @@ void silc_mp_set(SilcMPInt *dst, SilcMPInt *src);
  ***/
 void silc_mp_set_ui(SilcMPInt *dst, SilcUInt32 ui);
 
-/****f* silcmath/SilcMPAPI/silc_mp_set_si
+/****f* silcmath/silc_mp_set_si
  *
  * SYNOPSIS
  *
@@ -189,7 +195,7 @@ void silc_mp_set_ui(SilcMPInt *dst, SilcUInt32 ui);
  ***/
 void silc_mp_set_si(SilcMPInt *dst, SilcInt32 si);
 
-/****f* silcmath/SilcMPAPI/silc_mp_set_str
+/****f* silcmath/silc_mp_set_str
  *
  * SYNOPSIS
  *
@@ -208,7 +214,7 @@ void silc_mp_set_si(SilcMPInt *dst, SilcInt32 si);
  ***/
 void silc_mp_set_str(SilcMPInt *dst, const char *str, int base);
 
-/****f* silcmath/SilcMPAPI/silc_mp_get_ui
+/****f* silcmath/silc_mp_get_ui
  *
  * SYNOPSIS
  *
@@ -221,7 +227,7 @@ void silc_mp_set_str(SilcMPInt *dst, const char *str, int base);
  ***/
 SilcUInt32 silc_mp_get_ui(SilcMPInt *mp);
 
-/****f* silcmath/SilcMPAPI/silc_mp_get_str
+/****f* silcmath/silc_mp_get_str
  *
  * SYNOPSIS
  *
@@ -241,7 +247,7 @@ SilcUInt32 silc_mp_get_ui(SilcMPInt *mp);
  ***/
 char *silc_mp_get_str(char *str, SilcMPInt *mp, int base);
 
-/****f* silcmath/SilcMPAPI/silc_mp_add
+/****f* silcmath/silc_mp_add
  *
  * SYNOPSIS
  *
@@ -254,7 +260,7 @@ char *silc_mp_get_str(char *str, SilcMPInt *mp, int base);
  ***/
 void silc_mp_add(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *mp2);
 
-/****f* silcmath/SilcMPAPI/silc_mp_add_ui
+/****f* silcmath/silc_mp_add_ui
  *
  * SYNOPSIS
  *
@@ -268,7 +274,7 @@ void silc_mp_add(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *mp2);
  ***/
 void silc_mp_add_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
 
-/****f* silcmath/SilcMPAPI/silc_mp_sub
+/****f* silcmath/silc_mp_sub
  *
  * SYNOPSIS
  *
@@ -281,7 +287,7 @@ void silc_mp_add_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
  ***/
 void silc_mp_sub(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *mp2);
 
-/****f* silcmath/SilcMPAPI/silc_mp_sub_ui
+/****f* silcmath/silc_mp_sub_ui
  *
  * SYNOPSIS
  *
@@ -295,7 +301,7 @@ void silc_mp_sub(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *mp2);
  ***/
 void silc_mp_sub_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
 
-/****f* silcmath/SilcMPAPI/silc_mp_mul
+/****f* silcmath/silc_mp_mul
  *
  * SYNOPSIS
  *
@@ -308,7 +314,7 @@ void silc_mp_sub_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
  ***/
 void silc_mp_mul(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *mp2);
 
-/****f* silcmath/SilcMPAPI/silc_mp_mul_ui
+/****f* silcmath/silc_mp_mul_ui
  *
  * SYNOPSIS
  *
@@ -322,7 +328,7 @@ void silc_mp_mul(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *mp2);
  ***/
 void silc_mp_mul_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
 
-/****f* silcmath/SilcMPAPI/silc_mp_mul_2exp
+/****f* silcmath/silc_mp_mul_2exp
  *
  * SYNOPSIS
  *
@@ -336,7 +342,7 @@ void silc_mp_mul_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
  ***/
 void silc_mp_mul_2exp(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 exp);
 
-/****f* silcmath/SilcMPAPI/silc_mp_sqrt
+/****f* silcmath/silc_mp_sqrt
  *
  * SYNOPSIS
  *
@@ -349,7 +355,7 @@ void silc_mp_mul_2exp(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 exp);
  ***/
 void silc_mp_sqrt(SilcMPInt *dst, SilcMPInt *src);
 
-/****f* silcmath/SilcMPAPI/silc_mp_div
+/****f* silcmath/silc_mp_div
  *
  * SYNOPSIS
  *
@@ -363,7 +369,7 @@ void silc_mp_sqrt(SilcMPInt *dst, SilcMPInt *src);
  ***/
 void silc_mp_div(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *mp2);
 
-/****f* silcmath/SilcMPAPI/silc_mp_div_ui
+/****f* silcmath/silc_mp_div_ui
  *
  * SYNOPSIS
  *
@@ -377,7 +383,7 @@ void silc_mp_div(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *mp2);
  ***/
 void silc_mp_div_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
 
-/****f* silcmath/SilcMPAPI/silc_mp_div_qr
+/****f* silcmath/silc_mp_div_qr
  *
  * SYNOPSIS
  *
@@ -395,7 +401,7 @@ void silc_mp_div_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
 void silc_mp_div_qr(SilcMPInt *q, SilcMPInt *r, SilcMPInt *mp1,
                    SilcMPInt *mp2);
 
-/****f* silcmath/SilcMPAPI/silc_mp_div_2exp
+/****f* silcmath/silc_mp_div_2exp
  *
  * SYNOPSIS
  *
@@ -409,7 +415,7 @@ void silc_mp_div_qr(SilcMPInt *q, SilcMPInt *r, SilcMPInt *mp1,
  ***/
 void silc_mp_div_2exp(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 exp);
 
-/****f* silcmath/SilcMPAPI/silc_mp_div_2exp_qr
+/****f* silcmath/silc_mp_div_2exp_qr
  *
  * SYNOPSIS
  *
@@ -427,7 +433,7 @@ void silc_mp_div_2exp(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 exp);
 void silc_mp_div_2exp_qr(SilcMPInt *q, SilcMPInt *r, SilcMPInt *mp1,
                         SilcUInt32 exp);
 
-/****f* silcmath/SilcMPAPI/silc_mp_mod
+/****f* silcmath/silc_mp_mod
  *
  * SYNOPSIS
  *
@@ -443,7 +449,7 @@ void silc_mp_div_2exp_qr(SilcMPInt *q, SilcMPInt *r, SilcMPInt *mp1,
  ***/
 void silc_mp_mod(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *mp2);
 
-/****f* silcmath/SilcMPAPI/silc_mp_mod_ui
+/****f* silcmath/silc_mp_mod_ui
  *
  * SYNOPSIS
  *
@@ -458,7 +464,7 @@ void silc_mp_mod(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *mp2);
  ***/
 void silc_mp_mod_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
 
-/****f* silcmath/SilcMPAPI/silc_mp_mod_2exp
+/****f* silcmath/silc_mp_mod_2exp
  *
  * SYNOPSIS
  *
@@ -474,7 +480,7 @@ void silc_mp_mod_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
  ***/
 void silc_mp_mod_2exp(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
 
-/****f* silcmath/SilcMPAPI/silc_mp_pow
+/****f* silcmath/silc_mp_pow
  *
  * SYNOPSIS
  *
@@ -488,7 +494,7 @@ void silc_mp_mod_2exp(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
  ***/
 void silc_mp_pow(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *exp);
 
-/****f* silcmath/SilcMPAPI/silc_mp_pow_ui
+/****f* silcmath/silc_mp_pow_ui
  *
  * SYNOPSIS
  *
@@ -502,7 +508,7 @@ void silc_mp_pow(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *exp);
  ***/
 void silc_mp_pow_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 exp);
 
-/****f* silcmath/SilcMPAPI/silc_mp_pow_mod
+/****f* silcmath/silc_mp_pow_mod
  *
  * SYNOPSIS
  *
@@ -518,7 +524,7 @@ void silc_mp_pow_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 exp);
 void silc_mp_pow_mod(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *exp,
                     SilcMPInt *mod);
 
-/****f* silcmath/SilcMPAPI/silc_mp_pow_mod_ui
+/****f* silcmath/silc_mp_pow_mod_ui
  *
  * SYNOPSIS
  *
@@ -534,7 +540,7 @@ void silc_mp_pow_mod(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *exp,
 void silc_mp_pow_mod_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 exp,
                        SilcMPInt *mod);
 
-/****f* silcmath/SilcMPAPI/silc_mp_modinv
+/****f* silcmath/silc_mp_modinv
  *
  * SYNOPSIS
  *
@@ -562,7 +568,7 @@ void silc_mp_pow_mod_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 exp,
  ***/
 void silc_mp_modinv(SilcMPInt *inv, SilcMPInt *a, SilcMPInt *n);
 
-/****f* silcmath/SilcMPAPI/silc_mp_gcd
+/****f* silcmath/silc_mp_gcd
  *
  * SYNOPSIS
  *
@@ -576,7 +582,7 @@ void silc_mp_modinv(SilcMPInt *inv, SilcMPInt *a, SilcMPInt *n);
  ***/
 void silc_mp_gcd(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *mp2);
 
-/****f* silcmath/SilcMPAPI/silc_mp_gcdext
+/****f* silcmath/silc_mp_gcdext
  *
  * SYNOPSIS
  *
@@ -592,7 +598,7 @@ void silc_mp_gcd(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *mp2);
 void silc_mp_gcdext(SilcMPInt *g, SilcMPInt *s, SilcMPInt *t, SilcMPInt *mp1,
                    SilcMPInt *mp2);
 
-/****f* silcmath/SilcMPAPI/silc_mp_cmp
+/****f* silcmath/silc_mp_cmp
  *
  * SYNOPSIS
  *
@@ -606,7 +612,7 @@ void silc_mp_gcdext(SilcMPInt *g, SilcMPInt *s, SilcMPInt *t, SilcMPInt *mp1,
  ***/
 int silc_mp_cmp(SilcMPInt *mp1, SilcMPInt *mp2);
 
-/****f* silcmath/SilcMPAPI/silc_mp_cmp_si
+/****f* silcmath/silc_mp_cmp_si
  *
  * SYNOPSIS
  *
@@ -620,7 +626,7 @@ int silc_mp_cmp(SilcMPInt *mp1, SilcMPInt *mp2);
  ***/
 int silc_mp_cmp_si(SilcMPInt *mp1, SilcInt32 si);
 
-/****f* silcmath/SilcMPAPI/silc_mp_cmp_ui
+/****f* silcmath/silc_mp_cmp_ui
  *
  * SYNOPSIS
  *
@@ -635,7 +641,7 @@ int silc_mp_cmp_si(SilcMPInt *mp1, SilcInt32 si);
  ***/
 int silc_mp_cmp_ui(SilcMPInt *mp1, SilcUInt32 ui);
 
-/****f* silcmath/SilcMPAPI/silc_mp_mp2bin
+/****f* silcmath/silc_mp_mp2bin
  *
  * SYNOPSIS
  *
@@ -652,7 +658,7 @@ int silc_mp_cmp_ui(SilcMPInt *mp1, SilcUInt32 ui);
 unsigned char *silc_mp_mp2bin(SilcMPInt *val, SilcUInt32 len,
                              SilcUInt32 *ret_len);
 
-/****f* silcmath/SilcMPAPI/silc_mp_mp2bin_noalloc
+/****f* silcmath/silc_mp_mp2bin_noalloc
  *
  * SYNOPSIS
  *
@@ -668,7 +674,7 @@ unsigned char *silc_mp_mp2bin(SilcMPInt *val, SilcUInt32 len,
 void silc_mp_mp2bin_noalloc(SilcMPInt *val, unsigned char *dst,
                            SilcUInt32 dst_len);
 
-/****f* silcmath/SilcMPAPI/silc_mp_bin2mp
+/****f* silcmath/silc_mp_bin2mp
  *
  * SYNOPSIS
  *
@@ -683,7 +689,7 @@ void silc_mp_mp2bin_noalloc(SilcMPInt *val, unsigned char *dst,
  ***/
 void silc_mp_bin2mp(unsigned char *data, SilcUInt32 len, SilcMPInt *ret);
 
-/****f* silcmath/SilcMPAPI/silc_mp_abs
+/****f* silcmath/silc_mp_abs
  *
  * SYNOPSIS
  *
@@ -696,7 +702,7 @@ void silc_mp_bin2mp(unsigned char *data, SilcUInt32 len, SilcMPInt *ret);
  ***/
 void silc_mp_abs(SilcMPInt *dst, SilcMPInt *src);
 
-/****f* silcmath/SilcMPAPI/silc_mp_neg
+/****f* silcmath/silc_mp_neg
  *
  * SYNOPSIS
  *
@@ -709,7 +715,7 @@ void silc_mp_abs(SilcMPInt *dst, SilcMPInt *src);
  ***/
 void silc_mp_neg(SilcMPInt *dst, SilcMPInt *src);
 
-/****f* silcmath/SilcMPAPI/silc_mp_and
+/****f* silcmath/silc_mp_and
  *
  * SYNOPSIS
  *
@@ -722,7 +728,7 @@ void silc_mp_neg(SilcMPInt *dst, SilcMPInt *src);
  ***/
 void silc_mp_and(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *mp2);
 
-/****f* silcmath/SilcMPAPI/silc_mp_or
+/****f* silcmath/silc_mp_or
  *
  * SYNOPSIS
  *
@@ -735,7 +741,7 @@ void silc_mp_and(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *mp2);
  ***/
 void silc_mp_or(SilcMPInt *dst, SilcMPInt *mp1, SilcMPInt *mp2);
 
-/****f* silcmath/SilcMPAPI/silc_mp_xor
+/****f* silcmath/silc_mp_xor
  *
  * SYNOPSIS
  *