Put the first stage of my bignum debugging adventures into CVS. This code
[openssl.git] / crypto / bn / bn_mod.c
index 5cf82480d7bafb8e61b52ef62f44118e1acf9d30..61b72550985487790368cd304a4928268d0c74d1 100644 (file)
@@ -192,6 +192,7 @@ int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
        else
                { if (!BN_mul(t,a,b,ctx)) goto err; }
        if (!BN_nnmod(r,t,m,ctx)) goto err;
+       bn_check_top(r);
        ret=1;
 err:
        BN_CTX_end(ctx);
@@ -210,6 +211,7 @@ int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx)
 int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx)
        {
        if (!BN_lshift1(r, a)) return 0;
+       bn_check_top(r);
        return BN_nnmod(r, r, m, ctx);
        }
 
@@ -219,6 +221,7 @@ int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx)
 int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m)
        {
        if (!BN_lshift1(r, a)) return 0;
+       bn_check_top(r);
        if (BN_cmp(r, m) >= 0)
                return BN_sub(r, r, m);
        return 1;
@@ -240,6 +243,7 @@ int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m, BN_CTX *ct
                }
        
        ret = BN_mod_lshift_quick(r, r, n, (abs_m ? abs_m : m));
+       bn_check_top(r);
 
        if (abs_m)
                BN_free(abs_m);
@@ -291,6 +295,7 @@ int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m)
                        if (!BN_sub(r, r, m)) return 0;
                        }
                }
+       bn_check_top(r);
        
        return 1;
        }