Esempio n. 1
0
void test_gcdext_simple(void){
	bigint_t a, b, c, d, e;

	uint8_t a_b[5] = {0x71, 0x07, 0x00, 0x09, 0x16};
	uint8_t b_b[5] = {0x72, 0x7D, 0x57, 0xAC, 0X6F};
	uint8_t c_b[6], d_b[6], e_b[6];
	a.wordv=a_b;
	a.length_B = 5;
	a.info=0x00;
	bigint_adjust(&a);
	b.wordv=b_b;
	b.length_B = 5;
	b.info=0x00;
	bigint_adjust(&b);
	c.wordv = c_b;
	d.wordv = d_b;
	e.wordv = e_b;
	bigint_gcdext(&c, &d, &e, &a, &b);
	cli_putstr_P(PSTR("\r\n test: gcd( "));
	bigint_print_hex(&a);
	cli_putstr_P(PSTR(", "));
	bigint_print_hex(&b);
	cli_putstr_P(PSTR(") => a =  "));
	bigint_print_hex(&d);
	cli_putstr_P(PSTR("; b =  "));
	bigint_print_hex(&e);
	cli_putstr_P(PSTR("; gcd =  "));
	bigint_print_hex(&c);
}
Esempio n. 2
0
void test_gcdext_bigint(void){
	bigint_t a, b, c, d, e;
	cli_putstr_P(PSTR("\r\ngcdext test\r\n"));
	for(;;){
		cli_putstr_P(PSTR("\r\nenter a:"));
		if(bigint_read_hex_echo(&a)){
			cli_putstr_P(PSTR("\r\n end gcdext test"));
			return;
		}
		cli_putstr_P(PSTR("\r\nenter b:"));
		if(bigint_read_hex_echo(&b)){
			free(a.wordv);
			cli_putstr_P(PSTR("\r\n end gcdext test"));
			return;
		}
		c.wordv = malloc((a.length_B<b.length_B)?a.length_B:b.length_B);
		d.wordv = malloc(1+(a.length_B>b.length_B)?a.length_B:b.length_B);
		e.wordv = malloc(1+(a.length_B>b.length_B)?a.length_B:b.length_B);

		cli_putstr_P(PSTR("\r\n gcdext( "));
		bigint_print_hex(&a);
		cli_putstr_P(PSTR(", "));
		bigint_print_hex(&b);
		cli_putstr_P(PSTR(") => "));
		bigint_gcdext(&c, &d, &e, &a, &b);
		cli_putstr_P(PSTR("a = "));
		bigint_print_hex(&d);
		cli_putstr_P(PSTR("; b = "));
		bigint_print_hex(&e);
		cli_putstr_P(PSTR("; gcd = "));
		bigint_print_hex(&c);

		cli_putstr_P(PSTR("\r\n"));
		free(a.wordv);
		free(b.wordv);
		free(c.wordv);
		free(d.wordv);
		free(e.wordv);
	}
}
Esempio n. 3
0
void test_gcdext_bigint(void){
	bigint_t a, b, c, d, e;
	cli_putstr_P(PSTR("\r\ngcdext test\r\n"));
	for (;;) {
		cli_putstr_P(PSTR("\r\nenter a:"));
		if (bigint_read_hex_echo(&a, 0)) {
			cli_putstr_P(PSTR("\r\n end gcdext test"));
			return;
		}
		cli_putstr_P(PSTR("\r\nenter b:"));
		if (bigint_read_hex_echo(&b, 0)) {
			bigint_free(&a);
			cli_putstr_P(PSTR("\r\n end gcdext test"));
			return;
		}

		memset(&c, 0, sizeof(c));
        memset(&d, 0, sizeof(d));
        memset(&e, 0, sizeof(e));
		cli_putstr_P(PSTR("\r\n gcdext( "));
		bigint_print_hex(&a);
		cli_putstr_P(PSTR(", "));
		bigint_print_hex(&b);
		cli_putstr_P(PSTR(") => "));
		bigint_gcdext(&c, &d, &e, &a, &b);
		cli_putstr_P(PSTR("a = "));
		bigint_print_hex(&d);
		cli_putstr_P(PSTR("; b = "));
		bigint_print_hex(&e);
		cli_putstr_P(PSTR("; gcd = "));
		bigint_print_hex(&c);

		cli_putstr_P(PSTR("\r\n"));
		bigint_free(&a);
        bigint_free(&b);
        bigint_free(&c);
        bigint_free(&d);
        bigint_free(&e);
	}
}