BNerr(BN_F_BN_GF2M_MOD_EXP,BN_R_INVALID_LENGTH);
BNerr(BN_F_BN_GF2M_MOD_SQRT,BN_R_INVALID_LENGTH);
int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)	{	int ret = 0;	const int max = BN_num_bits(p);	unsigned int *arr=NULL;	bn_check_top(a);	bn_check_top(p);	if ((arr = (unsigned int *)OPENSSL_malloc(sizeof(unsigned int) * max)) == NULL) goto err;	ret = BN_GF2m_poly2arr(p, arr, max);	if (!ret || ret > max)		{		BNerr(BN_F_BN_GF2M_MOD_EXP,BN_R_INVALID_LENGTH);		goto err;		}	ret = BN_GF2m_mod_sqrt_arr(r, a, arr, ctx);	bn_check_top(r);err:	if (arr) OPENSSL_free(arr);	return ret;	}