*/
-/****h* silcmath/SilcMPAPI
+/****h* silcmath/SILC MP Interface
*
* DESCRIPTION
*
#ifndef SILCMP_H
#define SILCMP_H
-#ifdef SILC_MP_GMP
+#if defined(SILC_MP_GMP)
#include "mp_gmp.h" /* SILC_MP_GMP */
#else
#include "mp_mpi.h" /* SILC_MP_NSS_MPI */
*
* DESCRIPTION
*
- * Return the size of the integer in base `base'. Note that this size
- * is probably only an approximation. However, it is guaranteed that
- * the returned size is always at least the size of the integer, however,
- * it may be larger.
+ * Return the size of the integer in base `base'.
+ *
+ * NOTES
+ *
+ * For any other base but 2 this function usually returns only an
+ * approximated size in the base. It is however guaranteed that the
+ * the returned size is always at least the size of the integer or
+ * larger.
+ *
+ * For base 2 this returns the exact bit-size of the integer.
*
***/
size_t silc_mp_sizeinbase(SilcMPInt *mp, int base);
*
* SYNOPSIS
*
- * void silc_mp_set_ui(SilcMPInt *dst, uint32 ui);
+ * void silc_mp_set_ui(SilcMPInt *dst, SilcUInt32 ui);
*
* DESCRIPTION
*
* initialized.
*
***/
-void silc_mp_set_ui(SilcMPInt *dst, uint32 ui);
+void silc_mp_set_ui(SilcMPInt *dst, SilcUInt32 ui);
/****f* silcmath/SilcMPAPI/silc_mp_set_si
*
* SYNOPSIS
*
- * void silc_mp_set_si(SilcMPInt *dst, int32 si);
+ * void silc_mp_set_si(SilcMPInt *dst, SilcInt32 si);
*
* DESCRIPTION
*
* already be initialized.
*
***/
-void silc_mp_set_si(SilcMPInt *dst, int32 si);
+void silc_mp_set_si(SilcMPInt *dst, SilcInt32 si);
/****f* silcmath/SilcMPAPI/silc_mp_set_str
*
* Set `dst' integer from string `str' of base `base'. The `dst' must
* already be initialized.
*
+ * NOTES
+ *
+ * For base 2 the string must be in ASCII bit presentation, not in
+ * binary. Use the silc_mp_bin2mp to decode binary into integer.
+ *
***/
void silc_mp_set_str(SilcMPInt *dst, const char *str, int base);
*
* SYNOPSIS
*
- * uint32 silc_mp_get_ui(SilcMPInt *mp);
+ * SilcUInt32 silc_mp_get_ui(SilcMPInt *mp);
*
* DESCRIPTION
*
* Returns the least significant unsigned word from `mp'.
*
***/
-uint32 silc_mp_get_ui(SilcMPInt *mp);
+SilcUInt32 silc_mp_get_ui(SilcMPInt *mp);
/****f* silcmath/SilcMPAPI/silc_mp_get_str
*
* must already have space allocated. The function returns the same
* as `str' or NULL on error.
*
+ * NOTES
+ *
+ * For base 2 the returned string is in ASCII bit presentation, not
+ * in binary. Use the silc_mp_mp2bin to encode integer into binary.
+ *
***/
char *silc_mp_get_str(char *str, SilcMPInt *mp, int base);
*
* SYNOPSIS
*
- * void silc_mp_add_ui(SilcMPInt *dst, SilcMPInt *mp1, uint32 ui);
+ * void silc_mp_add_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
*
* DESCRIPTION
*
* to `dst'.
*
***/
-void silc_mp_add_ui(SilcMPInt *dst, SilcMPInt *mp1, uint32 ui);
+void silc_mp_add_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
/****f* silcmath/SilcMPAPI/silc_mp_sub
*
*
* SYNOPSIS
*
- * void silc_mp_sub_ui(SilcMPInt *dst, SilcMPInt *mp1, uint32 ui);
+ * void silc_mp_sub_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
*
* DESCRIPTION
*
* to `dst'.
*
***/
-void silc_mp_sub_ui(SilcMPInt *dst, SilcMPInt *mp1, uint32 ui);
+void silc_mp_sub_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
/****f* silcmath/SilcMPAPI/silc_mp_mul
*
*
* SYNOPSIS
*
- * void silc_mp_mul_ui(SilcMPInt *dst, SilcMPInt *mp1, uint32 ui);
+ * void silc_mp_mul_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
*
* DESCRIPTION
*
* to `dst'.
*
***/
-void silc_mp_mul_ui(SilcMPInt *dst, SilcMPInt *mp1, uint32 ui);
+void silc_mp_mul_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
/****f* silcmath/SilcMPAPI/silc_mp_mul_2exp
*
* SYNOPSIS
*
- * void silc_mp_mul_2exp(SilcMPInt *dst, SilcMPInt *mp1, uint32 exp);
+ * void silc_mp_mul_2exp(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 exp);
*
* DESCRIPTION
*
* `dst'. This is equivalent to dst = mp1 * (2 ^ exp).
*
***/
-void silc_mp_mul_2exp(SilcMPInt *dst, SilcMPInt *mp1, uint32 exp);
+void silc_mp_mul_2exp(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 exp);
/****f* silcmath/SilcMPAPI/silc_mp_sqrt
*
*
* SYNOPSIS
*
- * void silc_mp_div_ui(SilcMPInt *dst, SilcMPInt *mp1, uint32 ui);
+ * void silc_mp_div_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
*
* DESCRIPTION
*
* `dst'. This is equivalent to dst = mp1 / ui;
*
***/
-void silc_mp_div_ui(SilcMPInt *dst, SilcMPInt *mp1, uint32 ui);
+void silc_mp_div_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
/****f* silcmath/SilcMPAPI/silc_mp_div_qr
*
* This is equivalent to dst = mp1 / (2 ^ exp).
*
***/
-void silc_mp_div_2exp(SilcMPInt *dst, SilcMPInt *mp1, uint32 exp);
+void silc_mp_div_2exp(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 exp);
/****f* silcmath/SilcMPAPI/silc_mp_div_2exp_qr
*
* SYNOPSIS
*
* void silc_mp_div_2exp_qr(SilcMPInt *q, SilcMPInt *r, SilcMPInt *mp1,
- * uint32 exp);
+ * SilcUInt32 exp);
*
* DESCRIPTION
*
*
***/
void silc_mp_div_2exp_qr(SilcMPInt *q, SilcMPInt *r, SilcMPInt *mp1,
- uint32 exp);
+ SilcUInt32 exp);
/****f* silcmath/SilcMPAPI/silc_mp_mod
*
*
* SYNOPSIS
*
- * void silc_mp_mod_ui(SilcMPInt *dst, SilcMPInt *mp1, uint32 ui);
+ * void silc_mp_mod_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
*
* DESCRIPTION
*
* to dst = mp1 mod ui.
*
***/
-void silc_mp_mod_ui(SilcMPInt *dst, SilcMPInt *mp1, uint32 ui);
+void silc_mp_mod_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
/****f* silcmath/SilcMPAPI/silc_mp_mod_2exp
*
* function returns the remainder as well.
*
***/
-void silc_mp_mod_2exp(SilcMPInt *dst, SilcMPInt *mp1, uint32 ui);
+void silc_mp_mod_2exp(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 ui);
/****f* silcmath/SilcMPAPI/silc_mp_pow
*
*
* SYNOPSIS
*
- * void silc_mp_pow_ui(SilcMPInt *dst, SilcMPInt *mp1, uint32 exp);
+ * void silc_mp_pow_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 exp);
*
* DESCRIPTION
*
* equivalent to dst = mp1 ^ exp.
*
***/
-void silc_mp_pow_ui(SilcMPInt *dst, SilcMPInt *mp1, uint32 exp);
+void silc_mp_pow_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 exp);
/****f* silcmath/SilcMPAPI/silc_mp_pow_mod
*
*
* SYNOPSIS
*
- * void silc_mp_pow_mod_ui(SilcMPInt *dst, SilcMPInt *mp1, uint32 exp,
+ * void silc_mp_pow_mod_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 exp,
* SilcMPInt *mod);
*
* DESCRIPTION
* This is equivalent to dst = (mp1 ^ exp) mod mod.
*
***/
-void silc_mp_pow_mod_ui(SilcMPInt *dst, SilcMPInt *mp1, uint32 exp,
+void silc_mp_pow_mod_ui(SilcMPInt *dst, SilcMPInt *mp1, SilcUInt32 exp,
SilcMPInt *mod);
/****f* silcmath/SilcMPAPI/silc_mp_modinv
*
* SYNOPSIS
*
- * int silc_mp_cmp_si(SilcMPInt *mp1, int32 si);
+ * int silc_mp_cmp_si(SilcMPInt *mp1, SilcInt32 si);
*
* DESCRIPTION
*
* if `mp1' > `si', `mp1' == `si', or `mp1' < `si', respectively.
*
***/
-int silc_mp_cmp_si(SilcMPInt *mp1, int32 si);
+int silc_mp_cmp_si(SilcMPInt *mp1, SilcInt32 si);
/****f* silcmath/SilcMPAPI/silc_mp_cmp_ui
*
* SYNOPSIS
*
- * int silc_mp_cmp_ui(SilcMPInt *mp1, uint32 ui);
+ * int silc_mp_cmp_ui(SilcMPInt *mp1, SilcUInt32 ui);
*
* DESCRIPTION
*
* respectively.
*
***/
-int silc_mp_cmp_ui(SilcMPInt *mp1, uint32 ui);
+int silc_mp_cmp_ui(SilcMPInt *mp1, SilcUInt32 ui);
/****f* silcmath/SilcMPAPI/silc_mp_mp2bin
*
* SYNOPSIS
*
- * unsigned char *silc_mp_mp2bin(SilcMPInt *val, uint32 len,
- * uint32 *ret_len);
+ * unsigned char *silc_mp_mp2bin(SilcMPInt *val, SilcUInt32 len,
+ * SilcUInt32 *ret_len);
*
* DESCRIPTION
*
* buffer is allocated that large. If zero then the size is approximated.
*
***/
-unsigned char *silc_mp_mp2bin(SilcMPInt *val, uint32 len,
- uint32 *ret_len);
+unsigned char *silc_mp_mp2bin(SilcMPInt *val, SilcUInt32 len,
+ SilcUInt32 *ret_len);
/****f* silcmath/SilcMPAPI/silc_mp_mp2bin_noalloc
*
* SYNOPSIS
*
* void silc_mp_mp2bin_noalloc(SilcMPInt *val, unsigned char *dst,
- * uint32 dst_len);
+ * SilcUInt32 dst_len);
*
* DESCRIPTION
*
*
***/
void silc_mp_mp2bin_noalloc(SilcMPInt *val, unsigned char *dst,
- uint32 dst_len);
+ SilcUInt32 dst_len);
/****f* silcmath/SilcMPAPI/silc_mp_bin2mp
*
* SYNOPSIS
*
- * void silc_mp_bin2mp(unsigned char *data, uint32 len,
+ * void silc_mp_bin2mp(unsigned char *data, SilcUInt32 len,
* SilcMPInt *ret);
*
* DESCRIPTION
* must be initialized.
*
***/
-void silc_mp_bin2mp(unsigned char *data, uint32 len, SilcMPInt *ret);
+void silc_mp_bin2mp(unsigned char *data, SilcUInt32 len, SilcMPInt *ret);
/****f* silcmath/SilcMPAPI/silc_mp_abs
*