Skip to content

Commit 3a32762

Browse files
authored
Merge pull request #4956 from randombit/jack/fix-clang-tidy-cppcoreguidelines-slicing
Enable and fix clang-tidy warning cppcoreguidelines-slicing
2 parents 930d7f6 + bff7d20 commit 3a32762

7 files changed

Lines changed: 15 additions & 13 deletions

File tree

src/.clang-tidy

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ Checks: >
2525
-cppcoreguidelines-init-variables,
2626
-cppcoreguidelines-owning-memory,
2727
-cppcoreguidelines-prefer-member-initializer,
28-
-cppcoreguidelines-slicing,
2928
-hicpp-explicit-conversions,
3029
-misc-const-correctness,
3130
-misc-include-cleaner,

src/cli/timing_tests.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@ class Bleichenbacker_Timing_Test final : public Timing_Test {
141141
public:
142142
explicit Bleichenbacker_Timing_Test(size_t keysize) :
143143
m_privkey(timing_test_rng(), keysize),
144-
m_pubkey(m_privkey),
145-
m_enc(m_pubkey, timing_test_rng(), "Raw"),
144+
m_pubkey(m_privkey.public_key()),
145+
m_enc(*m_pubkey, timing_test_rng(), "Raw"),
146146
m_dec(m_privkey, timing_test_rng(), "PKCS1v15") {}
147147

148148
std::vector<uint8_t> prepare_input(const std::string& input) override {
@@ -160,7 +160,7 @@ class Bleichenbacker_Timing_Test final : public Timing_Test {
160160
const size_t m_expected_content_size = 48;
161161
const size_t m_ctext_length = 256;
162162
Botan::RSA_PrivateKey m_privkey;
163-
Botan::RSA_PublicKey m_pubkey;
163+
std::unique_ptr<Botan::Public_Key> m_pubkey;
164164
Botan::PK_Encryptor_EME m_enc;
165165
Botan::PK_Decryptor_EME m_dec;
166166
};
@@ -180,8 +180,8 @@ class Manger_Timing_Test final : public Timing_Test {
180180
public:
181181
explicit Manger_Timing_Test(size_t keysize) :
182182
m_privkey(timing_test_rng(), keysize),
183-
m_pubkey(m_privkey),
184-
m_enc(m_pubkey, timing_test_rng(), m_encrypt_padding),
183+
m_pubkey(m_privkey.public_key()),
184+
m_enc(*m_pubkey, timing_test_rng(), m_encrypt_padding),
185185
m_dec(m_privkey, timing_test_rng(), m_decrypt_padding) {}
186186

187187
std::vector<uint8_t> prepare_input(const std::string& input) override {
@@ -202,7 +202,7 @@ class Manger_Timing_Test final : public Timing_Test {
202202
const std::string m_decrypt_padding = "EME1(SHA-256)";
203203
const size_t m_ctext_length = 256;
204204
Botan::RSA_PrivateKey m_privkey;
205-
Botan::RSA_PublicKey m_pubkey;
205+
std::unique_ptr<Botan::Public_Key> m_pubkey;
206206
Botan::PK_Encryptor_EME m_enc;
207207
Botan::PK_Decryptor_EME m_dec;
208208
};

src/lib/pubkey/ecies/ecies.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ namespace {
2323

2424
/**
2525
* Private key type for ECIES_ECDH_KA_Operation
26+
*
27+
* TODO(Botan4) this can be removed once cofactor support is removed from ECDH
2628
*/
2729

2830
BOTAN_DIAGNOSTIC_PUSH
@@ -32,6 +34,7 @@ class ECIES_PrivateKey final : public EC_PrivateKey,
3234
public PK_Key_Agreement_Key {
3335
public:
3436
explicit ECIES_PrivateKey(const ECDH_PrivateKey& private_key) :
37+
// NOLINTNEXTLINE(*-slicing)
3538
EC_PublicKey(private_key), EC_PrivateKey(private_key), PK_Key_Agreement_Key(), m_key(private_key) {}
3639

3740
std::vector<uint8_t> public_value() const override { return m_key.public_value(); }

src/lib/pubkey/hss_lms/lm_ots.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ void LMOTS_Private_Key::derive_random_C(std::span<uint8_t> out, HashFunction& ha
307307
gen.gen(out, hash, m_seed);
308308
}
309309

310-
LMOTS_Public_Key::LMOTS_Public_Key(const LMOTS_Private_Key& lmots_sk) : OTS_Instance(lmots_sk) {
310+
LMOTS_Public_Key::LMOTS_Public_Key(const LMOTS_Private_Key& lmots_sk) : /* NOLINT(*-slicing) */ OTS_Instance(lmots_sk) {
311311
const auto pk_hash = lmots_sk.params().hash();
312312
pk_hash->update(lmots_sk.identifier());
313313
pk_hash->update(store_be(lmots_sk.q()));

src/lib/pubkey/hss_lms/lms.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,8 @@ LMS_Signature LMS_Signature::from_bytes_or_throw(BufferSlicer& slicer) {
345345
return LMS_Signature(q, std::move(lmots_sig), lms_type, std::move(auth_path));
346346
}
347347

348-
LMS_PublicKey::LMS_PublicKey(const LMS_PrivateKey& sk) : LMS_Instance(sk), m_lms_root(sk.lms_params().m()) {
348+
LMS_PublicKey::LMS_PublicKey(const LMS_PrivateKey& sk) :
349+
/* NOLINT(*-slicing) */ LMS_Instance(sk), m_lms_root(sk.lms_params().m()) {
349350
lms_treehash(StrongSpan<LMS_Tree_Node>(m_lms_root), std::nullopt, std::nullopt, sk);
350351
}
351352

src/scripts/dev_tools/run_clang_tidy.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@
5555
'cppcoreguidelines-init-variables',
5656
'cppcoreguidelines-owning-memory',
5757
'cppcoreguidelines-prefer-member-initializer',
58-
'cppcoreguidelines-slicing', # private->public key slicing
5958
'hicpp-explicit-conversions',
6059
'misc-const-correctness', # pretty noisy
6160
'misc-include-cleaner',

src/tests/test_xmss.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ std::vector<Test::Result> xmss_legacy_private_key() {
275275
"A5E22C249FA9D1E7DA08DB351709C4");
276276

277277
Botan::XMSS_PrivateKey legacy_secret_key = Botan::XMSS_PrivateKey(legacy_xmss_private_key);
278-
Botan::XMSS_PublicKey public_key_from_secret_key(legacy_secret_key);
278+
auto public_key_from_secret_key = legacy_secret_key.public_key();
279279
Botan::XMSS_PublicKey legacy_public_key = Botan::XMSS_PublicKey(legacy_xmss_public_key);
280280

281281
const auto message = Botan::hex_decode("deadcafe");
@@ -289,14 +289,14 @@ std::vector<Test::Result> xmss_legacy_private_key() {
289289
Botan::PK_Signer signer(legacy_secret_key, *rng, algo_name);
290290
auto signature = signer.sign_message(message, *rng);
291291

292-
Botan::PK_Verifier verifier(public_key_from_secret_key, algo_name);
292+
Botan::PK_Verifier verifier(*public_key_from_secret_key, algo_name);
293293
result.confirm("legacy private key generates signatures that are still verifiable",
294294
verifier.verify_message(message, signature));
295295
}),
296296

297297
CHECK("Verify a legacy signature",
298298
[&](auto& result) {
299-
Botan::PK_Verifier verifier(public_key_from_secret_key, algo_name);
299+
Botan::PK_Verifier verifier(*public_key_from_secret_key, algo_name);
300300
result.confirm("legacy private key generates signatures that are still verifiable",
301301
verifier.verify_message(message, legacy_signature));
302302
}),

0 commit comments

Comments
 (0)