int32_t getLength(void){ uint32_t len=0; char lenstr[21]; char *len2; for(;;){ memset(lenstr, 0, 21); cli_getsn_cecho(lenstr, 20); len2 = strstrip(lenstr); if(!strncasecmp_P(len2, PSTR("LEN"), 3)){ while(*len2 && *len2!='=') len2++; if(*len2=='='){ do{ len2++; }while(*len2 && !isdigit((uint8_t)*len2)); len = my_strtoul(len2); //len=(uint32_t)strtoul(len2, NULL, 10); return len; } } else { if(!strncasecmp_P(len2, PSTR("EXIT"), 4)){ return -1; } } } return -1; }
void test_dump(void){ char lstr[16]; int len; cli_putstr_P(PSTR("\r\nenter dump length: ")); cli_getsn_cecho(lstr, 15); len = own_atou(lstr); cli_putstr_P(PSTR("\r\ndumping 0x")); cli_hexdump_rev(&len, 2); cli_putstr_P(PSTR(" byte:")); cli_hexdump_block(pub_key.modulus.wordv, len, 4, 8); }
void test_add_scale_bigint(void){ bigint_t a, b, c; uint16_t scale; cli_putstr_P(PSTR("\r\nadd-scale test\r\n")); for(;;){ cli_putstr_P(PSTR("\r\nenter a:")); if(bigint_read_hex_echo(&a)){ cli_putstr_P(PSTR("\r\n end add-scale test")); return; } cli_putstr_P(PSTR("\r\nenter b:")); if(bigint_read_hex_echo(&b)){ cli_putstr_P(PSTR("\r\n end add-scale test")); return; } cli_putstr_P(PSTR("\r\nenter scale:")); { char str[8]; cli_getsn_cecho(str, 7); scale = atoi(str); } /* if(bigint_read_hex_echo(&scale)){ free(scale.wordv); cli_putstr_P(PSTR("\r\n end add test")); return; } */ uint8_t *c_b; c_b = malloc(((a.length_B>(b.length_B+scale))?a.length_B:(b.length_B+scale))+2); if(c_b==NULL){ cli_putstr_P(PSTR("\n\rERROR: Out of memory!")); free(a.wordv); free(b.wordv); continue; } c.wordv = c_b; bigint_copy(&c, &a); bigint_add_scale_u(&c, &b, scale); cli_putstr_P(PSTR("\r\n ")); bigint_print_hex(&a); cli_putstr_P(PSTR(" + ")); bigint_print_hex(&b); cli_putstr_P(PSTR("<<8*")); cli_hexdump_rev(&scale, 2); cli_putstr_P(PSTR(" = ")); bigint_print_hex(&c); cli_putstr_P(PSTR("\r\n")); free(a.wordv); free(b.wordv); free(c_b); } }