Example #1
0
static int
testdiv(void)
{
	short ro;
	MINT *t2;

	mp_mdiv(c42, c5, t0, t1);
	testmcmp(t0, c8, "mdiv0");
	testmcmp(t1, c2, "mdiv1");

	mp_mdiv(c10, c8, t0, t1);
	testmcmp(t0, c1, "mdiv2");
	testmcmp(t1, c2, "mdiv3");

	mp_sdiv(c42, 5, t0, &ro);
	testmcmp(t0, c8, "sdiv0");
	t2 = mp_itom(ro); // Simpler to use common testmcmp()
	testmcmp(t2, c2, "sdiv1");
	mp_mfree(t2);

	mp_sdiv(c10, 8, t0, &ro);
	testmcmp(t0, c1, "sdiv2");
	t2 = mp_itom(ro); // Simpler to use common testmcmp()
	testmcmp(t2, c2, "sdiv3");
	mp_mfree(t2);
}
Example #2
0
/*
 * Choose middle 64 bits of the common key to use as our des key, possibly
 * overwriting the lower order bits by setting parity. 
 */
static void
extractdeskey(MINT *ck, DesData *deskey)
{
        MINT *a;
        MINT *z;
        short r;
        int i;
        short base = (1 << 8);
        char *k;

        z = mp_itom(0);
        a = mp_itom(0);
        mp_madd(ck, z, a);
        for (i = 0; i < ((KEYSIZE - 64) / 2) / 8; i++) {
                mp_sdiv(a, base, a, &r);
        }
        k = (char *)deskey;
        for (i = 0; i < 8; i++) {
                mp_sdiv(a, base, a, &r);
                *k++ = r;
        }
	mp_mfree(z);
        mp_mfree(a);
}
Example #3
0
/*
 * Choose top 128 bits of the common key to use as our idea key.
 */
static void
extractideakey(MINT *ck, IdeaData *ideakey)
{
        MINT *a;
        MINT *z;
        short r;
        int i;
        short base = (1 << 8);
        char *k;

        z = mp_itom(0);
        a = mp_itom(0);
        mp_madd(ck, z, a);
        for (i = 0; i < ((KEYSIZE - 128) / 8); i++) {
                mp_sdiv(a, base, a, &r);
        }
        k = (char *)ideakey;
        for (i = 0; i < 16; i++) {
                mp_sdiv(a, base, a, &r);
                *k++ = r;
        }
	mp_mfree(z);
        mp_mfree(a);
}
Example #4
0
static void
m_out(MINT *a, short b, FILE *f)
{
	int sign, xlen, i;
	short r;
	MINT x;

	char *obuf;
	char *bp;

	if (a == NULL)
		return;
	sign = 1;
	xlen = a->len;
	if (xlen < 0) {
		xlen = -xlen;
		sign = -1;
	}
	if (xlen == 0) {
		(void) fprintf(f, "0\n");
		return;
	}
	x.len = xlen;
	x.val = _mp_xalloc(xlen, "m_out");
	for (i = 0; i < xlen; i++)
		x.val[i] = a->val[i];
	obuf = malloc(7 * (size_t)xlen);
	bp = obuf + 7 * xlen - 1;
	*bp-- = 0;
	while (x.len > 0) {
		for (i = 0; i < 10 && x.len > 0; i++) {
			mp_sdiv(&x, b, &x, &r);
			*bp-- = (char)(r + '0');
		}
		if (x.len > 0)
			*bp-- = ' ';
	}
	if (sign == -1)
		*bp-- = '-';
	(void) fprintf(f, "%s\n", bp + 1);
	free(obuf);
	_mp_xfree(&x);
}
Example #5
0
void sdiv(MINT *a, short n, MINT *q, short *r) { mp_sdiv(a, n, q, r); }