Files
bitcoin/src
merge-script 8ecbe270f0 Merge bitcoin/bitcoin#35606: script: qa: Improve Key::Fingerprint type safety
c9a70f9338 script: qa: Improve Key::Fingerprint type safety (David Gumberg)

Pull request description:

  Extracted from pseudoramdom's work in #35436:

  Instead of using c style arrays for key fingerprints, use `std::array`'s whose length can always reasoned about at compile time and for most operations the compiler enforces the size being correct.

  ```cpp
  using KeyFingerprint = std::array<unsigned char, 4>;
  ```

  ```diff
  -    unsigned char vchFingerprint[4];
  +    KeyFingerprint fingerprint;
  ```

  This allows the replacement of a lot of raw `memcpy` + trust-me-bro lengths, with the assignment operator:

  ```cpp
  -    memcpy(ret.vchFingerprint, vchFingerprint, 4);
  +    ret.fingerprint = fingerprint;
  ```

  This commit also adds two helper functions for
  - Retrieving the [fingerprint of a key identifier](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#user-content-Key_identifiers) (`CKeyID`)
  - Retrieving the fingerprint of the key identifier of an XPUB.

ACKs for top commit:
  w0xlt:
    ACK c9a70f9338
  sedited:
    ACK c9a70f9338
  pseudoramdom:
    Code review ACK w/ some minor nits c9a70f9338
  polespinasa:
    ACK c9a70f9338

Tree-SHA512: 3ee76742c0bc317dfbc12a6731afdcc40495db6e4d5d94880d0a721990d36cb3e4d374ccc96079ba1f8ad3f88581ee5a609bfe259c0ea7cd28cade373aac1b38
2026-07-29 09:55:39 +02:00
..