コード例 #1
0
ファイル: encrypt_key_test.c プロジェクト: k2b3d/authsrc
int generate_key(NUMBER p1, NUMBER p2, NUMBER_SET *g_public_key, NUMBER_SET *g_secret_key)
{
	NUMBER n,d,e,phi,*max_p;
	int len;
	
	if ( !a_cmp( &p1, &p2 ) ) {
		//fprintf(stderr,"the prime numbers must not be identical!\n");
		//exit(1);
		return -1 ;
	}
	
	if (a_cmp( &p1, &p2 ) > 0)
		max_p = &p1;
	else
		max_p = &p2;

	a_mult( &p1, &p2, &n );

	a_sub( &p1, &a_one, &phi );
	a_sub( &p2, &a_one, &e );
	a_mult( &phi, &e, &phi );
	
	len = n_bitlen( &phi );
	len = ( len + 3 ) / 4;
	
	a_assign( &p1, &phi );
	a_sub( &p1, &a_one, &p1 );
	init_rnd();
	do {
		do {
			gen_number( len, &d );
		} while (a_cmp( &d, max_p ) <= 0 || a_cmp( &d, &p1 ) >= 0);
				
		a_ggt( &d, &phi, &e );
	} while ( a_cmp( &e, &a_one ) );
	
	inv( &d, &phi, &e );
	
	// public key
	a_assign(&(g_public_key->n_key1), &n) ;
	a_assign(&(g_public_key->n_key2), &e) ;

	// secret key
	a_assign(&(g_secret_key->n_key1), &n) ;
	a_assign(&(g_secret_key->n_key2), &d) ;

	return 0 ;
}
コード例 #2
0
static void a_sub_test(void) {
	printsln((String)__func__);
	Array array, array2, sub;
	array = sa_of_string("1, 2, 3, 4");

	sub = a_sub(array, 0, a_length(array));
	sa_check_expect(array, sub);
	a_free(sub);

	sub = a_sub(array, -1, a_length(array) + 1);
	sa_check_expect(array, sub);
	a_free(sub);

	array2 = sa_of_string("2, 3, 4");
	// sa_println(array2);
	// printiln(a_length(array2));
	sub = a_sub(array, 1, a_length(array));
	sa_check_expect(array2, sub);
	sa_free(array2);
	a_free(sub);

	array2 = sa_of_string("2, 3");
	sub = a_sub(array, 1, a_length(array) - 1);
	sa_check_expect(array2, sub);
	sa_free(array2);
	a_free(sub);

	array2 = sa_create(0, "");
	sub = a_sub(array, 1, 1);
	sa_check_expect(array2, sub);
	a_free(sub);

	sub = a_sub(array, 2, 1);
	sa_check_expect(array2, sub);
	sa_free(array2);
	a_free(sub);

	sa_free(array);
}
コード例 #3
0
ファイル: array.c プロジェクト: qwertzuiop961/programmieren
static void a_sub_test(void) {
	printsln((String)__func__);
	Array a, ac, ex;
	IntPair ip;

	a = a_create(3, sizeof(IntPair));
	ip = make_int_pair(1, 10);
	a_set(a, 0, &ip);
	ip = make_int_pair(2, 20);
	a_set(a, 1, &ip);
	ip = make_int_pair(3, 30);
	a_set(a, 2, &ip);
	a_println(a, print_int_pair);

	ex = a_create(2, sizeof(IntPair));
	ip = make_int_pair(1, 10);
	a_set(ex, 0, &ip);
	ip = make_int_pair(2, 20);
	a_set(ex, 1, &ip);
	
	ac = a_sub(a, 0, 2);
	a_check_expect(ac, ex);
	
	ip = make_int_pair(2, 20);
	a_set(ex, 0, &ip);
	ip = make_int_pair(3, 30);
	a_set(ex, 1, &ip);
	
	a_free(ac);
	ac = a_sub(a, 1, 3);
	a_check_expect(ac, ex);
	
	a_free(a);
	a_free(ac);
	a_free(ex);

	Array array, array2, sub;
	array = ia_of_string("1 2 3 4");

	sub = a_sub(array, 0, a_length(array));
	ia_check_expect(array, sub);
	a_free(sub);

	sub = a_sub(array, -1, a_length(array) + 1);
	ia_check_expect(array, sub);
	a_free(sub);

	array2 = ia_of_string("2 3 4");
	sub = a_sub(array, 1, a_length(array));
	ia_check_expect(sub, array2);
	a_free(array2);
	a_free(sub);

	array2 = ia_of_string("2 3");
	sub = a_sub(array, 1, a_length(array) - 1);
	ia_check_expect(sub, array2);
	a_free(array2);
	a_free(sub);

	array2 = ia_of_string("");
	sub = a_sub(array, 1, 1);
	ia_check_expect(sub, array2);
	a_free(sub);

	sub = a_sub(array, 2, 1);
	ia_check_expect(sub, array2);
	a_free(array2);
	a_free(sub);
	a_free(array);
	
	array = da_range(1, 10, 1);
	
	sub = a_sub(array, 0, array->n);
	da_check_within(sub, array);
	a_free(sub);

	sub = a_sub(array, -10, array->n + 10);
	da_check_within(sub, array);
	a_free(sub);

	array2 = da_range(2, 10, 1);
	sub = a_sub(array, 1, array->n);
	da_check_within(sub, array2);
	a_free(array2);
	a_free(sub);

	array2 = da_range(2, 9, 1);
	sub = a_sub(array, 1, array->n - 1);
	da_check_within(sub, array2);
	a_free(array2);
	a_free(sub);

	array2 = da_range(0, 0, 1);
	sub = a_sub(array, 1, 1);
	da_check_within(sub, array2);
	a_free(sub);

	sub = a_sub(array, 2, 1);
	da_check_within(sub, array2);
	a_free(array2);
	a_free(sub);

	array2 = da_range(3, 6, 1);
	sub = a_sub(array, 2, 5);
	da_check_within(sub, array2);
	a_free(array2);
	a_free(sub);
	a_free(array);
}