void Signal::deinit() { m_storage.deinit(); signal_context_destroy(m_signalContext); }
void test_teardown() { signal_context_destroy(global_context); }
END_TEST START_TEST(test_curve25519_random_agreements) { int result; int i; ec_key_pair *alice_key_pair = 0; ec_public_key *alice_public_key = 0; ec_private_key *alice_private_key = 0; ec_key_pair *bob_key_pair = 0; ec_public_key *bob_public_key = 0; ec_private_key *bob_private_key = 0; uint8_t *shared_alice = 0; uint8_t *shared_bob = 0; signal_context *context; signal_context_create(&context, 0); setup_test_crypto_provider(context); for(i = 0; i < 50; i++) { /* Generate Alice's key pair */ result = curve_generate_key_pair(context, &alice_key_pair); ck_assert_int_eq(result, 0); alice_public_key = ec_key_pair_get_public(alice_key_pair); alice_private_key = ec_key_pair_get_private(alice_key_pair); ck_assert_ptr_ne(alice_public_key, 0); ck_assert_ptr_ne(alice_private_key, 0); /* Generate Bob's key pair */ result = curve_generate_key_pair(context, &bob_key_pair); ck_assert_int_eq(result, 0); bob_public_key = ec_key_pair_get_public(bob_key_pair); bob_private_key = ec_key_pair_get_private(bob_key_pair); ck_assert_ptr_ne(bob_public_key, 0); ck_assert_ptr_ne(bob_private_key, 0); /* Calculate Alice's key agreement */ result = curve_calculate_agreement(&shared_alice, bob_public_key, alice_private_key); ck_assert_int_eq(result, 32); ck_assert_ptr_ne(shared_alice, 0); /* Calculate Bob's key agreement */ result = curve_calculate_agreement(&shared_bob, alice_public_key, bob_private_key); ck_assert_int_eq(result, 32); ck_assert_ptr_ne(shared_bob, 0); /* Assert that key agreements match */ ck_assert_int_eq(memcmp(shared_alice, shared_bob, 32), 0); /* Cleanup */ if(shared_alice) { free(shared_alice); } if(shared_bob) { free(shared_bob); } SIGNAL_UNREF(alice_key_pair); SIGNAL_UNREF(bob_key_pair); alice_key_pair = 0; bob_key_pair = 0; alice_public_key = 0; alice_private_key = 0; bob_public_key = 0; bob_private_key = 0; shared_alice = 0; shared_bob = 0; } signal_context_destroy(context); }