if (off) { if (off > 128) off=128; memset(str,' ',off); }
int RSA_print(BIO *bp, const RSA *x, int off)	{	char str[128];	const char *s;	unsigned char *m=NULL;	int ret=0;	size_t buf_len=0, i;	if (x->n)		buf_len = (size_t)BN_num_bytes(x->n);	if (x->e)		if (buf_len < (i = (size_t)BN_num_bytes(x->e)))			buf_len = i;	if (x->d)		if (buf_len < (i = (size_t)BN_num_bytes(x->d)))			buf_len = i;	if (x->p)		if (buf_len < (i = (size_t)BN_num_bytes(x->p)))			buf_len = i;	if (x->q)		if (buf_len < (i = (size_t)BN_num_bytes(x->q)))			buf_len = i;	if (x->dmp1)		if (buf_len < (i = (size_t)BN_num_bytes(x->dmp1)))			buf_len = i;	if (x->dmq1)		if (buf_len < (i = (size_t)BN_num_bytes(x->dmq1)))			buf_len = i;	if (x->iqmp)		if (buf_len < (i = (size_t)BN_num_bytes(x->iqmp)))			buf_len = i;	m=(unsigned char *)OPENSSL_malloc(buf_len+10);	if (m == NULL)		{		RSAerr(RSA_F_RSA_PRINT,ERR_R_MALLOC_FAILURE);		goto err;		}	if (off)		{		if (off > 128) off=128;		memset(str,' ',off);		}	if (x->d != NULL)		{		if (off && (BIO_write(bp,str,off) <= 0)) goto err;		if (BIO_printf(bp,"Private-Key: (%d bit)\n",BN_num_bits(x->n))			<= 0) goto err;		}	if (x->d == NULL)		sprintf(str,"Modulus (%d bit):",BN_num_bits(x->n));	else		strcpy(str,"modulus:");	if (!print(bp,str,x->n,m,off)) goto err;	s=(x->d == NULL)?"Exponent:":"publicExponent:";	if (!print(bp,s,x->e,m,off)) goto err;	if (!print(bp,"privateExponent:",x->d,m,off)) goto err;	if (!print(bp,"prime1:",x->p,m,off)) goto err;	if (!print(bp,"prime2:",x->q,m,off)) goto err;	if (!print(bp,"exponent1:",x->dmp1,m,off)) goto err;	if (!print(bp,"exponent2:",x->dmq1,m,off)) goto err;	if (!print(bp,"coefficient:",x->iqmp,m,off)) goto err;	ret=1;err:	if (m != NULL) OPENSSL_free(m);	return(ret);	}