| 163 | } |
| 164 | |
| 165 | static const char * |
| 166 | add_base64_padding(const char *str, string& storage) |
| 167 | { |
| 168 | // storage won't contain padded string if no padding needed |
| 169 | |
| 170 | size_t len = strlen(str); |
| 171 | |
| 172 | if (len % 4 == 0) |
| 173 | return str; |
| 174 | |
| 175 | size_t npad = 4 - len % 4; |
| 176 | |
| 177 | storage.reserve(len + npad); |
| 178 | |
| 179 | storage = str; |
| 180 | |
| 181 | storage.resize(len + npad, '='); |
| 182 | |
| 183 | return storage.c_str(); |
| 184 | } |
| 185 | |
| 186 | static const char * |
| 187 | remove_base64_padding(string& str) |