char *elapsed_remaining (ELAPSED *e, unsigned long current, unsigned long maxval, const char *suffix) { double percent = (double)current * 100.0 / (double)maxval; double rem; char bb[64]; unsigned long dval; double dd; elapsed_stop (e); dval = current - e->prevVal; rem = diff_us (&e->EndPoint, &e->StartPoint); dd = diff_us (&e->EndPoint, &e->prevPoint); dd = (double)dval*1.0e6 / dd; rem = rem * (100.0 - percent) / percent; rem /= 1.0e6; remaining_out (e, percent, (unsigned long)rem); if (dd > 1000) sprintf (bb, " %s %s ", print_big_number((unsigned long)dd), suffix ? suffix : "op/s"); else sprintf (bb, " %.0f %s ", dd, suffix ? suffix : "op/s"); strcat (e->buf, bb); e->prevVal = current; memcpy (&e->prevPoint, &e->EndPoint, sizeof(struct timeval)); return e->buf; }
char *elapsed_remaining (ELAPSED *e, unsigned long current, unsigned long maxval, const char *suffix) { double percent = (double)current * 100.0 / (double)maxval; double rem; char bb[64]; unsigned long dval; double dd; elapsed_stop (e); dval = current - e->prevVal; if (e->TmrOK) { e->diff = e->Counter2.QuadPart - e->Counter1.QuadPart; dd = (double)(e->Counter2.QuadPart - e->prevCounter2.QuadPart); dd = 1.0e6*dd / (double) e->TmrFrequency.QuadPart; dd = (double)dval*1.0e6 / dd; rem = (double)e->diff; rem = 1.0e6*rem / (double) e->TmrFrequency.QuadPart; rem = rem * (100.0 - percent) / percent; rem /= 1.0e6; } else { rem = (double)(e->EndPoint - e->StartPoint); dd = (double)(e->EndPoint - e->prevPoint); dd = (double)dval*1.0e3 / dd; rem = rem * (100.0 - percent) / percent; e->PointDiff = (DWORD)rem; rem /= 1000.0; } remaining_out (e, percent, (unsigned long)rem); if (dd > 1000) sprintf (bb, " %s %s ", print_big_number((unsigned long)dd), suffix ? suffix : "op/s"); else sprintf (bb, " %.0f %s ", dd, suffix ? suffix : "op/s"); strcat (e->buf, bb); e->prevVal = current; e->prevPoint = e->EndPoint; e->prevCounter2.QuadPart = e->Counter2.QuadPart; return e->buf; }
int freq_display(void) { extern float freq; extern int trxmode; int x_position = 40; int y_position = 17; int location = 0; char fbuffer[8]; print_space(y_position, x_position); print_space(y_position + 1, x_position); print_space(y_position + 2, x_position); print_space(y_position + 3, x_position); print_space(y_position + 4, x_position); nicebox(16, 39, 5, 35, "TRX"); print_dot(y_position + 4, 28 + x_position + 1); sprintf(fbuffer, "%7.1f", freq); location = 32; if (fbuffer[0] != ' ') print_big_number(fbuffer[0] - 48, y_position, x_position, 4); if (fbuffer[1] != ' ') print_big_number(fbuffer[1] - 48, y_position, x_position, 9); if (fbuffer[2] != ' ') print_big_number(fbuffer[2] - 48, y_position, x_position, 14); if (fbuffer[3] != ' ') print_big_number(fbuffer[3] - 48, y_position, x_position, 19); if (fbuffer[4] != ' ') print_big_number(fbuffer[4] - 48, y_position, x_position, 24); if (fbuffer[6] != ' ') print_big_number(fbuffer[6] - 48, y_position, x_position, 31); attron(COLOR_PAIR(C_HEADER) | A_STANDOUT); if (trxmode == CWMODE) mvprintw(18, 41, "CW"); else if (trxmode == SSBMODE) mvprintw(19, 41, "SSB"); else mvprintw(19, 41, "DIG"); refreshp(); return (0); }
void xr_dsa::generate_params() { int counter; unsigned long long_ret; string256 random_string; xr_sprintf (random_string, "%I64d_%s", CPU::QPC(), rnd_seed); //sprintf_s (random_string, "%s", rnd_seed); unsigned char* rnd_seed = static_cast<unsigned char*>((void*)random_string); unsigned int rnd_ssize = xr_strlen(random_string); DSA* tmp_dsa_params = DSA_generate_parameters( key_bit_length, rnd_seed, rnd_ssize, &counter, &long_ret, dsa_genparams_cb, NULL ); DSA_generate_key (tmp_dsa_params); VERIFY (tmp_dsa_params->p->top * sizeof(u32) == public_key_length); VERIFY (tmp_dsa_params->q->top * sizeof(u32) == private_key_length); VERIFY (tmp_dsa_params->g->top * sizeof(u32) == public_key_length); VERIFY (tmp_dsa_params->pub_key->top * sizeof(u32) == public_key_length); VERIFY (tmp_dsa_params->priv_key->top * sizeof(u32)== private_key_length); Msg("// DSA params "); Msg("u8 const p_number[crypto::xr_dsa::public_key_length] = {"); print_big_number (tmp_dsa_params->p); Msg("};//p_number"); Msg("u8 const q_number[crypto::xr_dsa::private_key_length] = {"); print_big_number (tmp_dsa_params->q); Msg("};//q_number"); Msg("u8 const g_number[crypto::xr_dsa::public_key_length] = {"); print_big_number (tmp_dsa_params->g); Msg("};//g_number"); Msg("u8 const public_key[crypto::xr_dsa::public_key_length] = {"); print_big_number (tmp_dsa_params->pub_key); Msg("};//public_key"); u8 priv_bin[private_key_length]; BN_bn2bin (tmp_dsa_params->priv_key, priv_bin); Msg("// Private key:"); for (int i = 0; i < private_key_length; ++i) { Msg(" m_private_key.m_value[%d] = 0x%02x;", i, priv_bin[i]); } u8 debug_digest[] = "this is a test"; u8 debug_bad_digest[] = "this as a test"; u32 siglen = DSA_size(tmp_dsa_params); u8* sig = static_cast<u8*>(_alloca(siglen)); BIGNUM bn_sign; BN_init (&bn_sign); VERIFY (DSA_sign(0, debug_digest, sizeof(debug_digest), sig, &siglen, tmp_dsa_params) == 1); BN_bin2bn (sig, siglen, &bn_sign); shared_str sig_str = BN_bn2hex(&bn_sign); BIGNUM* bn_rsing = NULL; ZeroMemory (sig, siglen); BN_hex2bn (&bn_rsing, sig_str.c_str()); BN_bn2bin (bn_rsing, sig); BN_free (bn_rsing); VERIFY (DSA_verify(0, debug_digest, sizeof(debug_digest), sig, siglen, tmp_dsa_params) == 1); VERIFY (DSA_verify(0, debug_bad_digest, sizeof(debug_bad_digest), sig, siglen, tmp_dsa_params) == 0); DSA_free(tmp_dsa_params); }