| 117 | } |
| 118 | |
| 119 | static void encode_8_chars(char *dest, const uint8_t *buf, int bytes) |
| 120 | { |
| 121 | beint64_t val = 0; |
| 122 | uint64_t res; |
| 123 | int bits = bytes * 8; |
| 124 | |
| 125 | assert(bytes > 0 && bytes <= 5); |
| 126 | memcpy((char *)&val + 3, buf, bytes); |
| 127 | res = be64_to_cpu(val); |
| 128 | |
| 129 | while (bits > 0) { |
| 130 | *dest = base32_chars[(res >> 35) & 0x1F]; |
| 131 | dest++; |
| 132 | res <<= 5; |
| 133 | bits -= 5; |
| 134 | } |
| 135 | |
| 136 | if (bytes != 5) |
| 137 | memset(dest, base32_chars[32], padlen(bytes)); |
| 138 | } |
| 139 | |
| 140 | bool base32_encode(const void *buf, size_t bufsize, char *dest, size_t destsize) |
| 141 | { |
no test coverage detected