From 6051d9b5e4d045f47a65699b143b169abac98607 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Tue, 2 Jul 2019 10:47:54 +0200 Subject: [PATCH] botan: Replace deprecated FFI function calls Several "wrapper" functions have been marked deprecated with 2.11.0. --- .../plugins/botan/botan_ec_diffie_hellman.c | 2 +- .../plugins/botan/botan_ec_private_key.c | 2 +- .../plugins/botan/botan_rsa_private_key.c | 11 +++++++---- .../plugins/botan/botan_rsa_public_key.c | 2 +- src/libstrongswan/plugins/botan/botan_x25519.c | 2 +- src/libstrongswan/tests/suites/test_rsa.c | 2 ++ src/libstrongswan/utils/leak_detective.c | 3 +-- 7 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/libstrongswan/plugins/botan/botan_ec_diffie_hellman.c b/src/libstrongswan/plugins/botan/botan_ec_diffie_hellman.c index ed28b46390..50234b2e02 100644 --- a/src/libstrongswan/plugins/botan/botan_ec_diffie_hellman.c +++ b/src/libstrongswan/plugins/botan/botan_ec_diffie_hellman.c @@ -211,7 +211,7 @@ botan_ec_diffie_hellman_t *botan_ec_diffie_hellman_create( return NULL; } - if (botan_privkey_create_ecdh(&this->key, rng, this->curve_name)) + if (botan_privkey_create(&this->key, "ECDH", this->curve_name, rng)) { DBG1(DBG_LIB, "ECDH private key generation failed"); botan_rng_destroy(rng); diff --git a/src/libstrongswan/plugins/botan/botan_ec_private_key.c b/src/libstrongswan/plugins/botan/botan_ec_private_key.c index f8dbb66d78..d9469e916b 100644 --- a/src/libstrongswan/plugins/botan/botan_ec_private_key.c +++ b/src/libstrongswan/plugins/botan/botan_ec_private_key.c @@ -336,7 +336,7 @@ botan_ec_private_key_t *botan_ec_private_key_gen(key_type_t type, va_list args) this = create_empty(oid); - if (botan_privkey_create_ecdsa(&this->key, rng, curve)) + if (botan_privkey_create(&this->key, "ECDSA", curve, rng)) { DBG1(DBG_LIB, "EC private key generation failed"); botan_rng_destroy(rng); diff --git a/src/libstrongswan/plugins/botan/botan_rsa_private_key.c b/src/libstrongswan/plugins/botan/botan_rsa_private_key.c index 02820b297f..06a9345624 100644 --- a/src/libstrongswan/plugins/botan/botan_rsa_private_key.c +++ b/src/libstrongswan/plugins/botan/botan_rsa_private_key.c @@ -225,7 +225,7 @@ METHOD(private_key_t, get_keysize, int, return 0; } - if (botan_privkey_rsa_get_n(n, this->key) || + if (botan_privkey_get_field(n, this->key, "n") || botan_mp_num_bits(n, &bits)) { botan_mp_destroy(n); @@ -346,6 +346,7 @@ botan_rsa_private_key_t *botan_rsa_private_key_gen(key_type_t type, { private_botan_rsa_private_key_t *this; botan_rng_t rng; + char buf[BUF_LEN]; u_int key_size = 0; while (TRUE) @@ -375,7 +376,9 @@ botan_rsa_private_key_t *botan_rsa_private_key_gen(key_type_t type, this = create_empty(); - if (botan_privkey_create_rsa(&this->key, rng, key_size)) + snprintf(buf, sizeof(buf), "%u", key_size); + + if (botan_privkey_create(&this->key, "RSA", buf, rng)) { botan_rng_destroy(rng); free(this); @@ -412,7 +415,7 @@ static bool calculate_pq(botan_mp_t *n, botan_mp_t *e, botan_mp_t *d, } /* k must be even */ - if (!botan_mp_is_even(k)) + if (botan_mp_get_bit(k, 0) != 0) { goto error; } @@ -424,7 +427,7 @@ static bool calculate_pq(botan_mp_t *n, botan_mp_t *e, botan_mp_t *d, goto error; } - for (t = 0; !botan_mp_is_odd(r); t++) + for (t = 0; botan_mp_get_bit(r, 0) != 1; t++) { if (botan_mp_rshift(r, r, 1)) { diff --git a/src/libstrongswan/plugins/botan/botan_rsa_public_key.c b/src/libstrongswan/plugins/botan/botan_rsa_public_key.c index 244caa5856..af573b7c03 100644 --- a/src/libstrongswan/plugins/botan/botan_rsa_public_key.c +++ b/src/libstrongswan/plugins/botan/botan_rsa_public_key.c @@ -215,7 +215,7 @@ METHOD(public_key_t, get_keysize, int, return 0; } - if (botan_pubkey_rsa_get_n(n, this->key) || + if (botan_pubkey_get_field(n, this->key, "n") || botan_mp_num_bits(n, &bits)) { botan_mp_destroy(n); diff --git a/src/libstrongswan/plugins/botan/botan_x25519.c b/src/libstrongswan/plugins/botan/botan_x25519.c index 519f29f55f..8863f3fa63 100644 --- a/src/libstrongswan/plugins/botan/botan_x25519.c +++ b/src/libstrongswan/plugins/botan/botan_x25519.c @@ -161,7 +161,7 @@ diffie_hellman_t *botan_x25519_create(diffie_hellman_group_t group) return NULL; } - if (botan_privkey_create_ecdh(&this->key, rng, "curve25519")) + if (botan_privkey_create(&this->key, "Curve25519", "", rng)) { DBG1(DBG_LIB, "x25519 private key generation failed"); botan_rng_destroy(rng); diff --git a/src/libstrongswan/tests/suites/test_rsa.c b/src/libstrongswan/tests/suites/test_rsa.c index c90196f559..db6a09dda8 100644 --- a/src/libstrongswan/tests/suites/test_rsa.c +++ b/src/libstrongswan/tests/suites/test_rsa.c @@ -157,8 +157,10 @@ START_TEST(test_gen) privkey = lib->creds->create(lib->creds, CRED_PRIVATE_KEY, KEY_RSA, BUILD_KEY_SIZE, key_sizes[_i], BUILD_END); ck_assert(privkey != NULL); + ck_assert_int_eq(key_sizes[_i], privkey->get_keysize(privkey)); pubkey = privkey->get_public_key(privkey); ck_assert(pubkey != NULL); + ck_assert_int_eq(key_sizes[_i], pubkey->get_keysize(pubkey)); test_good_sig(privkey, pubkey); diff --git a/src/libstrongswan/utils/leak_detective.c b/src/libstrongswan/utils/leak_detective.c index 63b7453f3e..d4ebfeac78 100644 --- a/src/libstrongswan/utils/leak_detective.c +++ b/src/libstrongswan/utils/leak_detective.c @@ -626,8 +626,7 @@ static char *whitelist[] = { "TNC_IMV_NotifyConnectionChange", /* Botan */ "botan_public_key_load", - "botan_privkey_create_ecdsa", - "botan_privkey_create_ecdh", + "botan_privkey_create", "botan_privkey_load_ecdh", "botan_privkey_load", }; -- 2.47.2