Return indices of invalid characters in a Bech32 string. */
| 282 | |
| 283 | /** Return indices of invalid characters in a Bech32 string. */ |
| 284 | bool CheckCharacters(const std::string& str, std::vector<int>& errors) |
| 285 | { |
| 286 | bool lower = false, upper = false; |
| 287 | for (size_t i = 0; i < str.size(); ++i) { |
| 288 | unsigned char c{(unsigned char)(str[i])}; |
| 289 | if (c >= 'a' && c <= 'z') { |
| 290 | if (upper) { |
| 291 | errors.push_back(i); |
| 292 | } else { |
| 293 | lower = true; |
| 294 | } |
| 295 | } else if (c >= 'A' && c <= 'Z') { |
| 296 | if (lower) { |
| 297 | errors.push_back(i); |
| 298 | } else { |
| 299 | upper = true; |
| 300 | } |
| 301 | } else if (c < 33 || c > 126) { |
| 302 | errors.push_back(i); |
| 303 | } |
| 304 | } |
| 305 | return errors.empty(); |
| 306 | } |
| 307 | |
| 308 | /** Expand a HRP for use in checksum computation. */ |
| 309 | data ExpandHRP(const std::string& hrp) |
no test coverage detected