Put the first stage of my bignum debugging adventures into CVS. This code
[openssl.git] / crypto / bn / bn_blind.c
index a7b34f0bf07954062f462c076ca42a842fccd396..011d37f1ff9c95c5ef7929cc8e51dd6a95f91855 100644 (file)
 #include "cryptlib.h"
 #include "bn_lcl.h"
 
-BN_BLINDING *BN_BLINDING_new(A,Ai,mod)
-BIGNUM *A;
-BIGNUM *Ai;
-BIGNUM *mod;
+BN_BLINDING *BN_BLINDING_new(BIGNUM *A, BIGNUM *Ai, BIGNUM *mod)
        {
        BN_BLINDING *ret=NULL;
 
-       if ((ret=(BN_BLINDING *)Malloc(sizeof(BN_BLINDING))) == NULL)
+       bn_check_top(Ai);
+       bn_check_top(mod);
+
+       if ((ret=(BN_BLINDING *)OPENSSL_malloc(sizeof(BN_BLINDING))) == NULL)
+               {
                BNerr(BN_F_BN_BLINDING_NEW,ERR_R_MALLOC_FAILURE);
+               return(NULL);
+               }
        memset(ret,0,sizeof(BN_BLINDING));
        if ((ret->A=BN_new()) == NULL) goto err;
        if ((ret->Ai=BN_new()) == NULL) goto err;
@@ -78,26 +81,26 @@ BIGNUM *mod;
        return(ret);
 err:
        if (ret != NULL) BN_BLINDING_free(ret);
-       return(ret);
+       return(NULL);
        }
 
-void BN_BLINDING_free(r)
-BN_BLINDING *r;
+void BN_BLINDING_free(BN_BLINDING *r)
        {
+       if(r == NULL)
+           return;
+
        if (r->A  != NULL) BN_free(r->A );
        if (r->Ai != NULL) BN_free(r->Ai);
-       Free(r);
+       OPENSSL_free(r);
        }
 
-int BN_BLINDING_update(b,ctx)
-BN_BLINDING *b;
-BN_CTX *ctx;
+int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx)
        {
        int ret=0;
 
        if ((b->A == NULL) || (b->Ai == NULL))
                {
-               BNerr(BN_F_BN_BLINDING_UPDATE,BN_R_NOT_INITALISED);
+               BNerr(BN_F_BN_BLINDING_UPDATE,BN_R_NOT_INITIALIZED);
                goto err;
                }
                
@@ -109,28 +112,26 @@ err:
        return(ret);
        }
 
-int BN_BLINDING_convert(n,b,ctx)
-BIGNUM *n;
-BN_BLINDING *b;
-BN_CTX *ctx;
+int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx)
        {
+       bn_check_top(n);
+
        if ((b->A == NULL) || (b->Ai == NULL))
                {
-               BNerr(BN_F_BN_BLINDING_CONVERT,BN_R_NOT_INITALISED);
+               BNerr(BN_F_BN_BLINDING_CONVERT,BN_R_NOT_INITIALIZED);
                return(0);
                }
        return(BN_mod_mul(n,n,b->A,b->mod,ctx));
        }
 
-int BN_BLINDING_invert(n,b,ctx)
-BIGNUM *n;
-BN_BLINDING *b;
-BN_CTX *ctx;
+int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx)
        {
        int ret;
+
+       bn_check_top(n);
        if ((b->A == NULL) || (b->Ai == NULL))
                {
-               BNerr(BN_F_BN_BLINDING_INVERT,BN_R_NOT_INITALISED);
+               BNerr(BN_F_BN_BLINDING_INVERT,BN_R_NOT_INITIALIZED);
                return(0);
                }
        if ((ret=BN_mod_mul(n,n,b->Ai,b->mod,ctx)) >= 0)
@@ -138,6 +139,7 @@ BN_CTX *ctx;
                if (!BN_BLINDING_update(b,ctx))
                        return(0);
                }
+       bn_check_top(n);
        return(ret);
        }