| 69 | } |
| 70 | |
| 71 | void BIP32Hash(const ChainCode &chainCode, unsigned int nChild, unsigned char header, const unsigned char data[32], unsigned char output[64]) |
| 72 | { |
| 73 | unsigned char num[4]; |
| 74 | num[0] = (nChild >> 24) & 0xFF; |
| 75 | num[1] = (nChild >> 16) & 0xFF; |
| 76 | num[2] = (nChild >> 8) & 0xFF; |
| 77 | num[3] = (nChild >> 0) & 0xFF; |
| 78 | CHMAC_SHA512(chainCode.begin(), chainCode.size()).Write(&header, 1).Write(data, 32).Write(num, 4).Finalize(output); |
| 79 | } |
| 80 | |
| 81 | #define ROTL(x, b) (uint64_t)(((x) << (b)) | ((x) >> (64 - (b)))) |
| 82 | |