#include "os.h"
#include <mp.h>
#include "dat.h"

mpint*
mprand(int bits, void (*gen)(uchar*, int), mpint *b)
{
	int n, m;
	mpdigit mask;
	uchar *p;

	n = DIGITS(bits);
	if(b == nil)
		b = mpnew(bits);
	else
		mpbits(b, bits);

	p = malloc(n*Dbytes);
	if(p == nil)
		return nil;
	(*gen)(p, n*Dbytes);
	betomp(p, n*Dbytes, b);
	free(p);

	/* make sure we don't give too many bits */
	m = bits%Dbits;
	n--;
	if(m > 0){
		mask = 1;
		mask <<= m;
		mask--;
		b->p[n] &= mask;
	}

	for(; n >= 0; n--)
		if(b->p[n] != 0)
			break;
	b->top = n+1;
	b->sign = 1;
	return b;
}
