private child key
let I
IF index ≥ 2^31 (hardened key)
  I = HMAC-SHA512(parent_private_key, chaincode)
****ELSE
  I = HMAC-SHA512(parent_public_key, chaincode)
I_l, I_r = I.split()
child_private_key = I_l
child_chaincode = I_r
public child key (neutered)
public child key
If index **≥** 2^31 (hardened key)
  return failure
ELSE
  HMAC-SHA512(parent_public_key, chaincode)
  
// same as the above.
private child key: Not possible.