| 85 | |
| 86 | template <typename Stream, typename Data> |
| 87 | void DeserializeDB(Stream& stream, Data& data, bool fCheckSum = true) |
| 88 | { |
| 89 | CHashVerifier<Stream> verifier(&stream); |
| 90 | // de-serialize file header (network specific magic number) and .. |
| 91 | unsigned char pchMsgTmp[4]; |
| 92 | verifier >> pchMsgTmp; |
| 93 | // ... verify the network matches ours |
| 94 | if (memcmp(pchMsgTmp, Params().MessageStart(), sizeof(pchMsgTmp))) { |
| 95 | throw std::runtime_error{"Invalid network magic number"}; |
| 96 | } |
| 97 | |
| 98 | // de-serialize data |
| 99 | verifier >> data; |
| 100 | |
| 101 | // verify checksum |
| 102 | if (fCheckSum) { |
| 103 | uint256 hashTmp; |
| 104 | stream >> hashTmp; |
| 105 | if (hashTmp != verifier.GetHash()) { |
| 106 | throw std::runtime_error{"Checksum mismatch, data corrupted"}; |
| 107 | } |
| 108 | } |
| 109 | } |
| 110 | |
| 111 | template <typename Data> |
| 112 | void DeserializeFileDB(const fs::path& path, Data& data, int version) |
no test coverage detected