]> de.git.xonotic.org Git - xonotic/d0_blind_id.git/blobdiff - d0_bignum-gmp.c
also support signing
[xonotic/d0_blind_id.git] / d0_bignum-gmp.c
index 4f6d244437871549340fb12edf65fc96dc4b0a29..3b36b7da9ce384b9ed9f0f3afcd5da38260823fc 100644 (file)
@@ -30,6 +30,7 @@
  * SUCH DAMAGE.
  *
  * $Format:commit %H$
+ * $Id$
  */
 
 /* NOTE: this file links against libgmp (http://gmplib.org), which is under the
@@ -61,10 +62,10 @@ static d0_bignum_t temp;
 #include <time.h>
 #include <stdio.h>
 
-WARN_UNUSED_RESULT BOOL d0_bignum_INITIALIZE(void)
+D0_WARN_UNUSED_RESULT D0_BOOL d0_bignum_INITIALIZE(void)
 {
        FILE *f;
-       BOOL ret = 1;
+       D0_BOOL ret = 1;
        unsigned char buf[256];
        d0_bignum_init(&temp);
        gmp_randinit_mt(RANDSTATE);
@@ -130,7 +131,7 @@ void d0_bignum_SHUTDOWN(void)
        gmp_randclear(RANDSTATE);
 }
 
-BOOL d0_iobuf_write_bignum(d0_iobuf_t *buf, const d0_bignum_t *bignum)
+D0_BOOL d0_iobuf_write_bignum(d0_iobuf_t *buf, const d0_bignum_t *bignum)
 {
        static unsigned char numbuf[65536];
        size_t count = 0;
@@ -362,6 +363,13 @@ d0_bignum_t *d0_bignum_mod_add(d0_bignum_t *r, const d0_bignum_t *a, const d0_bi
        return r;
 }
 
+d0_bignum_t *d0_bignum_mod_sub(d0_bignum_t *r, const d0_bignum_t *a, const d0_bignum_t *b, const d0_bignum_t *m)
+{
+       r = d0_bignum_sub(r, a, b);
+       mpz_fdiv_r(r->z, r->z, m->z);
+       return r;
+}
+
 d0_bignum_t *d0_bignum_mod_mul(d0_bignum_t *r, const d0_bignum_t *a, const d0_bignum_t *b, const d0_bignum_t *m)
 {
        r = d0_bignum_mul(r, a, b);
@@ -376,7 +384,7 @@ d0_bignum_t *d0_bignum_mod_pow(d0_bignum_t *r, const d0_bignum_t *a, const d0_bi
        return r;
 }
 
-BOOL d0_bignum_mod_inv(d0_bignum_t *r, const d0_bignum_t *a, const d0_bignum_t *m)
+D0_BOOL d0_bignum_mod_inv(d0_bignum_t *r, const d0_bignum_t *a, const d0_bignum_t *m)
 {
        // here, r MUST be set, as otherwise we cannot return error state!
        return mpz_invert(r->z, a->z, m->z);