// for stupid OpenSSL versions in Mac OS X
#ifndef BN_is_negative
#define BN_is_negative(a) ((a)->neg != 0)
-#endif
-#ifndef BN_set_negative
-#define BN_set_negative(a,n) ((a)->neg = ((n) && !BN_is_zero(b)))
+#define BN_set_negative(a,n) ((a)->neg = ((n) && !BN_is_zero(a)))
#endif
struct d0_bignum_s
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)
+{
+ if(!r) r = d0_bignum_new(); if(!r) return NULL;
+ BN_mod_sub(&r->z, &a->z, &b->z, &m->z, ctx);
+ 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)
{
if(!r) r = d0_bignum_new(); if(!r) return NULL;