Remove dependency of dsa_sign.o and dsa_vrf.o: new functions FIPS_dsa_sig_new
and FIPS_dsa_sig_free, reimplment DSA_SIG_new and DSA_SIG_free from ASN1 library.
This commit is contained in:
parent
e47af46cd8
commit
e990b4f838
@ -308,8 +308,6 @@ FIPS_EX_OBJ= ../crypto/aes/aes_cfb.o \
|
|||||||
../crypto/dsa/dsa_gen.o \
|
../crypto/dsa/dsa_gen.o \
|
||||||
../crypto/dsa/dsa_key.o \
|
../crypto/dsa/dsa_key.o \
|
||||||
../crypto/dsa/dsa_ossl.o \
|
../crypto/dsa/dsa_ossl.o \
|
||||||
../crypto/dsa/dsa_sign.o \
|
|
||||||
../crypto/dsa/dsa_vrf.o \
|
|
||||||
../crypto/evp/e_aes.o \
|
../crypto/evp/e_aes.o \
|
||||||
../crypto/evp/e_des3.o \
|
../crypto/evp/e_des3.o \
|
||||||
../crypto/evp/m_sha1.o \
|
../crypto/evp/m_sha1.o \
|
||||||
|
@ -307,8 +307,6 @@ FIPS_EX_OBJ= ../crypto/aes/aes_cfb.o \
|
|||||||
../crypto/dsa/dsa_gen.o \
|
../crypto/dsa/dsa_gen.o \
|
||||||
../crypto/dsa/dsa_key.o \
|
../crypto/dsa/dsa_key.o \
|
||||||
../crypto/dsa/dsa_ossl.o \
|
../crypto/dsa/dsa_ossl.o \
|
||||||
../crypto/dsa/dsa_sign.o \
|
|
||||||
../crypto/dsa/dsa_vrf.o \
|
|
||||||
../crypto/evp/e_aes.o \
|
../crypto/evp/e_aes.o \
|
||||||
../crypto/evp/e_des3.o \
|
../crypto/evp/e_des3.o \
|
||||||
../crypto/evp/m_sha1.o \
|
../crypto/evp/m_sha1.o \
|
||||||
|
@ -88,7 +88,7 @@ ASN1_SEQUENCE_cb(DSA_SIG, sig_cb) = {
|
|||||||
ASN1_SIMPLE(DSA_SIG, s, CBIGNUM)
|
ASN1_SIMPLE(DSA_SIG, s, CBIGNUM)
|
||||||
} ASN1_SEQUENCE_END_cb(DSA_SIG, DSA_SIG)
|
} ASN1_SEQUENCE_END_cb(DSA_SIG, DSA_SIG)
|
||||||
|
|
||||||
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(DSA_SIG, DSA_SIG, DSA_SIG)
|
IMPLEMENT_ASN1_FUNCTIONS_const(DSA_SIG)
|
||||||
|
|
||||||
/* Override the default free and new methods */
|
/* Override the default free and new methods */
|
||||||
static int dsa_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
|
static int dsa_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
|
||||||
|
@ -173,7 +173,7 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
|
|||||||
redo:
|
redo:
|
||||||
if ((dsa->kinv == NULL) || (dsa->r == NULL))
|
if ((dsa->kinv == NULL) || (dsa->r == NULL))
|
||||||
{
|
{
|
||||||
if (!DSA_sign_setup(dsa,ctx,&kinv,&r)) goto err;
|
if (!dsa->meth->dsa_sign_setup(dsa,ctx,&kinv,&r)) goto err;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -199,7 +199,6 @@ redo:
|
|||||||
if (BN_cmp(s,dsa->q) > 0)
|
if (BN_cmp(s,dsa->q) > 0)
|
||||||
if (!BN_sub(s,s,dsa->q)) goto err;
|
if (!BN_sub(s,s,dsa->q)) goto err;
|
||||||
if (!BN_mod_mul(s,s,kinv,dsa->q,ctx)) goto err;
|
if (!BN_mod_mul(s,s,kinv,dsa->q,ctx)) goto err;
|
||||||
|
|
||||||
ret=DSA_SIG_new();
|
ret=DSA_SIG_new();
|
||||||
if (ret == NULL) goto err;
|
if (ret == NULL) goto err;
|
||||||
/* Redo if r or s is zero as required by FIPS 186-3: this is
|
/* Redo if r or s is zero as required by FIPS 186-3: this is
|
||||||
|
@ -74,27 +74,3 @@ int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)
|
|||||||
{
|
{
|
||||||
return dsa->meth->dsa_sign_setup(dsa, ctx_in, kinvp, rp);
|
return dsa->meth->dsa_sign_setup(dsa, ctx_in, kinvp, rp);
|
||||||
}
|
}
|
||||||
|
|
||||||
DSA_SIG *DSA_SIG_new(void)
|
|
||||||
{
|
|
||||||
DSA_SIG *sig;
|
|
||||||
sig = OPENSSL_malloc(sizeof(DSA_SIG));
|
|
||||||
if (!sig)
|
|
||||||
return NULL;
|
|
||||||
sig->r = NULL;
|
|
||||||
sig->s = NULL;
|
|
||||||
return sig;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DSA_SIG_free(DSA_SIG *sig)
|
|
||||||
{
|
|
||||||
if (sig)
|
|
||||||
{
|
|
||||||
if (sig->r)
|
|
||||||
BN_free(sig->r);
|
|
||||||
if (sig->s)
|
|
||||||
BN_free(sig->s);
|
|
||||||
OPENSSL_free(sig);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -96,3 +96,26 @@ void FIPS_dsa_free(DSA *r)
|
|||||||
OPENSSL_free(r);
|
OPENSSL_free(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DSA_SIG *FIPS_dsa_sig_new(void)
|
||||||
|
{
|
||||||
|
DSA_SIG *sig;
|
||||||
|
sig = OPENSSL_malloc(sizeof(DSA_SIG));
|
||||||
|
if (!sig)
|
||||||
|
return NULL;
|
||||||
|
sig->r = NULL;
|
||||||
|
sig->s = NULL;
|
||||||
|
return sig;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FIPS_dsa_sig_free(DSA_SIG *sig)
|
||||||
|
{
|
||||||
|
if (sig)
|
||||||
|
{
|
||||||
|
if (sig->r)
|
||||||
|
BN_free(sig->r);
|
||||||
|
if (sig->s)
|
||||||
|
BN_free(sig->s);
|
||||||
|
OPENSSL_free(sig);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ int FIPS_selftest_dsa()
|
|||||||
if (dsa)
|
if (dsa)
|
||||||
FIPS_dsa_free(dsa);
|
FIPS_dsa_free(dsa);
|
||||||
if (dsig)
|
if (dsig)
|
||||||
DSA_SIG_free(dsig);
|
FIPS_dsa_sig_free(dsig);
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
FIPSerr(FIPS_F_FIPS_SELFTEST_DSA,FIPS_R_SELFTEST_FAILED);
|
FIPSerr(FIPS_F_FIPS_SELFTEST_DSA,FIPS_R_SELFTEST_FAILED);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -231,7 +231,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
end:
|
end:
|
||||||
if (sig)
|
if (sig)
|
||||||
DSA_SIG_free(sig);
|
FIPS_dsa_sig_free(sig);
|
||||||
if (dsa != NULL) FIPS_dsa_free(dsa);
|
if (dsa != NULL) FIPS_dsa_free(dsa);
|
||||||
FIPS_md_ctx_cleanup(&mctx);
|
FIPS_md_ctx_cleanup(&mctx);
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -548,7 +548,7 @@ static void siggen()
|
|||||||
pbn("R",sig->r);
|
pbn("R",sig->r);
|
||||||
pbn("S",sig->s);
|
pbn("S",sig->s);
|
||||||
putc('\n',stdout);
|
putc('\n',stdout);
|
||||||
DSA_SIG_free(sig);
|
FIPS_dsa_sig_free(sig);
|
||||||
FIPS_md_ctx_cleanup(&mctx);
|
FIPS_md_ctx_cleanup(&mctx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -498,7 +498,7 @@ int fips_pkey_signature_test(EVP_PKEY *pkey,
|
|||||||
|
|
||||||
error:
|
error:
|
||||||
if (dsig != NULL)
|
if (dsig != NULL)
|
||||||
DSA_SIG_free(dsig);
|
FIPS_dsa_sig_free(dsig);
|
||||||
if (sig != sigtmp)
|
if (sig != sigtmp)
|
||||||
OPENSSL_free(sig);
|
OPENSSL_free(sig);
|
||||||
FIPS_md_ctx_cleanup(&mctx);
|
FIPS_md_ctx_cleanup(&mctx);
|
||||||
|
@ -147,6 +147,9 @@ void FIPS_set_locking_callback(void (*func)(int mode, int type,
|
|||||||
#define EVP_CIPHER_CTX_new FIPS_cipher_ctx_new
|
#define EVP_CIPHER_CTX_new FIPS_cipher_ctx_new
|
||||||
#define EVP_CIPHER_CTX_free FIPS_cipher_ctx_free
|
#define EVP_CIPHER_CTX_free FIPS_cipher_ctx_free
|
||||||
|
|
||||||
|
#define DSA_SIG_new FIPS_dsa_sig_new
|
||||||
|
#define DSA_SIG_free FIPS_dsa_sig_free
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* BEGIN ERROR CODES */
|
/* BEGIN ERROR CODES */
|
||||||
|
@ -131,7 +131,7 @@ static int FIPS_dsa_test(int bad)
|
|||||||
r = FIPS_dsa_verify_ctx(dsa, &mctx, sig);
|
r = FIPS_dsa_verify_ctx(dsa, &mctx, sig);
|
||||||
end:
|
end:
|
||||||
if (sig)
|
if (sig)
|
||||||
DSA_SIG_free(sig);
|
FIPS_dsa_sig_free(sig);
|
||||||
FIPS_md_ctx_cleanup(&mctx);
|
FIPS_md_ctx_cleanup(&mctx);
|
||||||
if (dsa)
|
if (dsa)
|
||||||
FIPS_dsa_free(dsa);
|
FIPS_dsa_free(dsa);
|
||||||
|
Loading…
Reference in New Issue
Block a user