else { DSAerr(DSA_F_DSA_PRINT,DSA_R_MISSING_PARAMETERS); goto err; }
int DSA_print(BIO *bp, const DSA *x, int off)	{	unsigned char *m=NULL;	int ret=0;	size_t buf_len=0,i;	if (x->p)		buf_len = (size_t)BN_num_bytes(x->p);	if (x->q)		if (buf_len < (i = (size_t)BN_num_bytes(x->q)))			buf_len = i;	if (x->g)		if (buf_len < (i = (size_t)BN_num_bytes(x->g)))			buf_len = i;	if (x->priv_key)		if (buf_len < (i = (size_t)BN_num_bytes(x->priv_key)))			buf_len = i;	if (x->pub_key)		if (buf_len < (i = (size_t)BN_num_bytes(x->pub_key)))			buf_len = i;	m=(unsigned char *)OPENSSL_malloc(buf_len+10);	if (m == NULL)		{		DSAerr(DSA_F_DSA_PRINT,ERR_R_MALLOC_FAILURE);		goto err;		}	if (x->priv_key != NULL)		{		if(!BIO_indent(bp,off,128))		   goto err;		if (BIO_printf(bp,"Private-Key: (%d bit)\n",BN_num_bits(x->p))			<= 0) goto err;		}	if ((x->priv_key != NULL) && !print(bp,"priv:",x->priv_key,m,off))		goto err;	if ((x->pub_key  != NULL) && !print(bp,"pub: ",x->pub_key,m,off))		goto err;	if ((x->p != NULL) && !print(bp,"P:   ",x->p,m,off)) goto err;	if ((x->q != NULL) && !print(bp,"Q:   ",x->q,m,off)) goto err;	if ((x->g != NULL) && !print(bp,"G:   ",x->g,m,off)) goto err;	ret=1;err:	if (m != NULL) OPENSSL_free(m);	return(ret);	}