void test_ecdsa_openssl(void) { secp256k1_scalar_t key, msg; unsigned char message[32]; secp256k1_rand256_test(message); secp256k1_scalar_set_b32(&msg, message, NULL); random_scalar_order_test(&key); secp256k1_gej_t qj; secp256k1_ecmult_gen(&qj, &key); secp256k1_ge_t q; secp256k1_ge_set_gej(&q, &qj); EC_KEY *ec_key = get_openssl_key(&key); CHECK(ec_key); unsigned char signature[80]; unsigned int sigsize = 80; CHECK(ECDSA_sign(0, message, sizeof(message), signature, &sigsize, ec_key)); secp256k1_ecdsa_sig_t sig; CHECK(secp256k1_ecdsa_sig_parse(&sig, signature, sigsize)); CHECK(secp256k1_ecdsa_sig_verify(&sig, &q, &msg)); secp256k1_scalar_t one; secp256k1_scalar_set_int(&one, 1); secp256k1_scalar_t msg2; secp256k1_scalar_add(&msg2, &msg, &one); CHECK(!secp256k1_ecdsa_sig_verify(&sig, &q, &msg2)); random_sign(&sig, &key, &msg, NULL); int secp_sigsize = 80; CHECK(secp256k1_ecdsa_sig_serialize(signature, &secp_sigsize, &sig)); CHECK(ECDSA_verify(0, message, sizeof(message), signature, secp_sigsize, ec_key) == 1); EC_KEY_free(ec_key); }
void test_ecdsa_openssl() { const secp256k1_ge_consts_t *c = secp256k1_ge_consts; secp256k1_num_t key, msg; secp256k1_num_init(&msg); unsigned char message[32]; secp256k1_rand256_test(message); secp256k1_num_set_bin(&msg, message, 32); secp256k1_num_init(&key); random_num_order_test(&key); secp256k1_gej_t qj; secp256k1_ecmult_gen(&qj, &key); secp256k1_ge_t q; secp256k1_ge_set_gej(&q, &qj); EC_KEY *ec_key = get_openssl_key(&key); assert(ec_key); unsigned char signature[80]; int sigsize = 80; assert(ECDSA_sign(0, message, sizeof(message), signature, &sigsize, ec_key)); secp256k1_ecdsa_sig_t sig; secp256k1_ecdsa_sig_init(&sig); assert(secp256k1_ecdsa_sig_parse(&sig, signature, sigsize)); assert(secp256k1_ecdsa_sig_verify(&sig, &q, &msg)); secp256k1_num_inc(&sig.r); assert(!secp256k1_ecdsa_sig_verify(&sig, &q, &msg)); random_sign(&sig, &key, &msg, NULL); sigsize = 80; assert(secp256k1_ecdsa_sig_serialize(signature, &sigsize, &sig)); assert(ECDSA_verify(0, message, sizeof(message), signature, sigsize, ec_key) == 1); secp256k1_ecdsa_sig_free(&sig); EC_KEY_free(ec_key); secp256k1_num_free(&key); secp256k1_num_free(&msg); }
void test_ecdsa_sign_verify(void) { secp256k1_scalar_t msg, key; random_scalar_order_test(&msg); random_scalar_order_test(&key); secp256k1_gej_t pubj; secp256k1_ecmult_gen(&pubj, &key); secp256k1_ge_t pub; secp256k1_ge_set_gej(&pub, &pubj); secp256k1_ecdsa_sig_t sig; random_sign(&sig, &key, &msg, NULL); secp256k1_num_t msg_num; secp256k1_scalar_get_num(&msg_num, &msg); CHECK(secp256k1_ecdsa_sig_verify(&sig, &pub, &msg_num)); secp256k1_num_inc(&msg_num); CHECK(!secp256k1_ecdsa_sig_verify(&sig, &pub, &msg_num)); }
void test_ecdsa_sign_verify(void) { int recid; int getrec; secp256k1_scalar_t msg, key; random_scalar_order_test(&msg); random_scalar_order_test(&key); secp256k1_gej_t pubj; secp256k1_ecmult_gen(&pubj, &key); secp256k1_ge_t pub; secp256k1_ge_set_gej(&pub, &pubj); secp256k1_ecdsa_sig_t sig; getrec = secp256k1_rand32()&1; random_sign(&sig, &key, &msg, getrec?&recid:NULL); if (getrec) CHECK(recid >= 0 && recid < 4); CHECK(secp256k1_ecdsa_sig_verify(&sig, &pub, &msg)); secp256k1_scalar_t one; secp256k1_scalar_set_int(&one, 1); secp256k1_scalar_add(&msg, &msg, &one); CHECK(!secp256k1_ecdsa_sig_verify(&sig, &pub, &msg)); }
void test_ecdsa_sign_verify() { const secp256k1_ge_consts_t *c = secp256k1_ge_consts; secp256k1_num_t msg, key; secp256k1_num_init(&msg); random_num_order_test(&msg); secp256k1_num_init(&key); random_num_order_test(&key); secp256k1_gej_t pubj; secp256k1_ecmult_gen(&pubj, &key); secp256k1_ge_t pub; secp256k1_ge_set_gej(&pub, &pubj); secp256k1_ecdsa_sig_t sig; secp256k1_ecdsa_sig_init(&sig); random_sign(&sig, &key, &msg, NULL); assert(secp256k1_ecdsa_sig_verify(&sig, &pub, &msg)); secp256k1_num_inc(&msg); assert(!secp256k1_ecdsa_sig_verify(&sig, &pub, &msg)); secp256k1_ecdsa_sig_free(&sig); secp256k1_num_free(&msg); secp256k1_num_free(&key); }
Cell_contents_t generate(Table_cell_type table_cell_type) { switch(table_cell_type) { case CELL_TYPE_INT8: { boost::int64_t temp(int_generator_()); return Cell_contents_t(boost::int8_t(random_sign()? -temp % std::numeric_limits< boost::int8_t >::max(): temp % std::numeric_limits< boost::int8_t >::max())); break; } case CELL_TYPE_INT32: { boost::int64_t temp(int_generator_()); return Cell_contents_t(boost::int32_t(random_sign()? -temp % std::numeric_limits< boost::int32_t >::max() : temp % std::numeric_limits< boost::int32_t >::max())); break; } case CELL_TYPE_INT64: { boost::int64_t temp(int_generator_()); return Cell_contents_t(boost::int64_t(random_sign()? -temp % std::numeric_limits< boost::int64_t >::max(): temp % std::numeric_limits< boost::int64_t >::max())); break; } case CELL_TYPE_UINT8: { boost::int64_t temp(int_generator_()); return Cell_contents_t(boost::uint8_t(temp % std::numeric_limits< boost::int8_t >::max())); break; } case CELL_TYPE_UINT32: { boost::int64_t temp(int_generator_()); return Cell_contents_t(boost::uint32_t(temp % std::numeric_limits< boost::int32_t >::max())); break; } case CELL_TYPE_UINT64: { boost::int64_t temp(int_generator_()); return Cell_contents_t(boost::uint64_t(temp % std::numeric_limits< boost::int64_t >::max())); break; } case CELL_TYPE_FLOAT: { return Cell_contents_t( static_cast< float >(random_sign()? -log(fmod(rand(), std::numeric_limits< float >::max())) : log(fmod(rand(), std::numeric_limits< float >::max())))); break; } case CELL_TYPE_DOUBLE: { return Cell_contents_t (static_cast<double> ((random_sign()? -rand() : rand()) + (static_cast<double>(rand())/RAND_MAX))); break; } case CELL_TYPE_LONG_DOUBLE: { return Cell_contents_t (static_cast<long double> ((random_sign()? -rand() : rand()) + (static_cast<double>(rand())/RAND_MAX))); break; } case CELL_TYPE_STRING: { return Cell_contents_t(std::string("make_random")); break; } default: { return Cell_contents_t(std::string("Oops")); } } }