Create a checksum. */
| 154 | |
| 155 | /** Create a checksum. */ |
| 156 | data CreateChecksum(Encoding encoding, const std::string& hrp, const data& values) |
| 157 | { |
| 158 | data enc = Cat(ExpandHRP(hrp), values); |
| 159 | enc.resize(enc.size() + 12); // ELEMENTS: Append 6->12 zeroes |
| 160 | uint64_t mod = PolyMod(enc) ^ EncodingConstant(encoding); // Determine what to XOR into those 6 zeroes. |
| 161 | data ret(12); // ELEMENTS: 6->12 |
| 162 | for (size_t i = 0; i < 12; ++i) { // ELEMENTS: 6->12 |
| 163 | // Convert the 5-bit groups in mod to checksum values. |
| 164 | ret[i] = (mod >> (5 * (11 - i))) & 31; // ELEMENTS: 5->11 |
| 165 | } |
| 166 | return ret; |
| 167 | } |
| 168 | |
| 169 | /** Encode a Blech32 or Blech32m string. */ |
| 170 | std::string Encode(Encoding encoding, const std::string& hrp, const data& values) { |