user84856: I'm trying to implement a barebones HD wallet generator in C#.  I'm starting with a mnemonic and derivation path m/0' and want to generate BIP141 p2wpkh-in-p2sh addresses.  Obviously for the Master Node the fingerprint is 0x00000000, but when I get to depth 1 (0'), I need to calculate the fingerprint of the parent key.  My question is, is the formula RipeMD160(parentPrivKey) or RipeMD160(SHA256(parentPrivKey))?  I've been looking at Ian Coleman's implementation in javascript (https://iancoleman.io/bip39/) and he seems to do the latter one.  However, on this site under "Parent Fingerprint", it says it's the former.

user76567: It's ripemd160(sha256(parentpriv)) also known as hash160(parentpriv) source. There is also a python implementation here

user96284: Can't use comments because of reputation, but both the question and the answer is saying that the fingerprint is based on private key. It should be the hash160 of the PUBLIC key. for even if you are deriving a private key you should use the parents PUBLIC key for generating the fingerprint. This is important to make both a derived public and a derived private key having  the same fingerprint so you can relate them to each other.

84856: <p>I'm trying to implement a barebones HD wallet generator in C#.  I'm starting with a mnemonic and derivation path <code>m/0'</code> and want to generate BIP141 p2wpkh-in-p2sh addresses.  Obviously for the Master Node the fingerprint is <code>0x00000000</code>, but when I get to depth 1 (<code>0'</code>), I need to calculate the fingerprint of the parent key.  My question is, is the formula <code>RipeMD160(parentPrivKey)</code> or <code>RipeMD160(SHA256(parentPrivKey))</code>?  I've been looking at Ian Coleman's implementation in javascript (<a href="https://iancoleman.io/bip39/" rel="nofollow noreferrer">https://iancoleman.io/bip39/</a>) and he seems to do the latter one.  However, on <a href="https://blog.aeternity.com/implementing-extended-keys-in-%C3%A6ternitys-elixir-wallet-e70303dec433" rel="nofollow noreferrer">this site</a> under "Parent Fingerprint", it says it's the former.</p>
 76567: <p>It's <code>ripemd160(sha256(parentpriv))</code> also known as <code>hash160(parentpriv)</code> <a href="https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#key-identifiers" rel="nofollow noreferrer">source</a>. There is also a python implementation <a href="https://github.com/mcdallas/cryptotools/blob/master/btctools/HD/bip32.py" rel="nofollow noreferrer">here</a></p>
 96284: <p>Can't use comments because of reputation, but both the question and the answer is saying that the fingerprint is based on private key. It should be the hash160 of the PUBLIC key. for even if you are deriving a private key you should use the parents PUBLIC key for generating the fingerprint. This is important to make both a derived public and a derived private key having  the same fingerprint so you can relate them to each other.</p>
