Exemplo n.º 1
0
int test_tobin(testspec_t *t, FILE *ofp)
{
  mp_int in[1];
  int    test_len, out_len;
  mp_result res;

  if(!parse_int_values(t, in, NULL, NULL))
    return imath_errno = MP_BADARG, 0;

  trim_line(t->output[0]);
  if((out_len = parse_binary(t->output[0], g_bin1, sizeof(g_bin1))) < 0)
    return imath_errno = MP_BADARG, 0;
  
  if((test_len = mp_int_binary_len(in[0])) != out_len) {
    sprintf(g_output, "Output lengths do not match (want %d, got %d)",
	    test_len, out_len);
    return imath_errno = OTHER_ERROR, 0;
  }

  if((res = mp_int_to_binary(in[0], g_bin2, sizeof(g_bin2))) != MP_OK)
    return imath_errno = res, 0;

  if(memcmp(g_bin1, g_bin2, test_len) != 0) {
    int pos = 0, i;

    for(i = 0; i < test_len - 1; ++i)
      pos += sprintf(g_output + pos, "%d.", g_bin2[i]);

    sprintf(g_output + pos, "%d", g_bin2[i]);
    return imath_errno = OTHER_ERROR, 0;
  }

  return 1;
}
Exemplo n.º 2
0
/* Convert integer to octet string, per PKCS#1 v.2.1 */
mp_result rsa_i2osp(mp_int z, unsigned char *out, int len)
{
  int  excess_len = mp_int_binary_len(z);

  if(excess_len < len)
    return MP_RANGE;

  memset(out, 0, len);

  excess_len -= len;
  mp_int_to_binary(z, out + excess_len, len);

  return MP_OK;
}