#include <stddef.h>
#include <assert.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include "my_config.h"
#include "my_inttypes.h"
Go to the source code of this file.
◆ MY_BASE64_DECODE_ALLOW_MULTIPLE_CHUNKS
#define MY_BASE64_DECODE_ALLOW_MULTIPLE_CHUNKS 1 |
◆ MY_BASE64_DECODER
◆ base64_decode()
static int64 base64_decode |
( |
const char * |
src_base, |
|
|
size_t |
len, |
|
|
void * |
dst, |
|
|
const char ** |
end_ptr, |
|
|
int |
flags |
|
) |
| |
|
inlinestatic |
Decode a base64 string The base64-encoded data in the range ['src','*end_ptr') will be decoded and stored starting at 'dst'.
The decoding will stop after 'len' characters have been read from 'src', or when padding occurs in the base64-encoded data. In either case: if 'end_ptr' is non-null, '*end_ptr' will be set to point to the character after the last read character, even in the presence of error.
Note: We require that 'dst' is pre-allocated to correct size.
- Parameters
-
src_base | Pointer to base64-encoded string |
len | Length of string at 'src' |
dst | Pointer to location where decoded data will be stored |
end_ptr | Pointer to variable that will refer to the character after the end of the encoded data that were decoded. Can be NULL. |
flags | flags e.g. allow multiple chunks |
- Returns
- Number of bytes written at 'dst', or -1 in case of failure
◆ base64_decode_max_arg_length()
constexpr uint64 base64_decode_max_arg_length |
( |
| ) |
|
|
inlineconstexpr |
◆ base64_encode()
static int base64_encode |
( |
const void * |
src, |
|
|
size_t |
src_len, |
|
|
char * |
dst |
|
) |
| |
|
inlinestatic |
◆ base64_encode_max_arg_length()
constexpr uint64 base64_encode_max_arg_length |
( |
| ) |
|
|
inlineconstexpr |
◆ base64_needed_decoded_length()
static uint64 base64_needed_decoded_length |
( |
uint64 |
length_of_encoded_data | ) |
|
|
inlinestatic |
◆ base64_needed_encoded_length()
static uint64 base64_needed_encoded_length |
( |
uint64 |
length_of_data | ) |
|
|
inlinestatic |
◆ my_base64_add()
Convert the next character in a base64 encoded stream to a number in the range [0..63] and mix it with the previously collected value in decoder->c.
- Parameters
-
decoder | base64 decoding stream |
- Returns
- false on success true on error (invalid base64 character found)
◆ my_base64_decoder_getch()
Get the next character from a base64 encoded stream.
Skip spaces, then scan the next base64 character or a pad character and collect bits into decoder->c.
- Parameters
-
decoder | Pointer to MY_BASE64_DECODER |
- Returns
- false on success (a valid base64 encoding character found) true on error (unexpected character or unexpected end-of-input found)
◆ my_base64_decoder_skip_spaces()
Skip leading spaces in a base64 encoded stream and stop on the first non-space character.
decoder->src will point to the first non-space character, or to the end of the input string. In case when end-of-input met on unexpected position, decoder->error is also set to 1.
- Parameters
-
decoder | Pointer to MY_BASE64_DECODER |
- Returns
- false on success (there are some more non-space input characters) true on error (end-of-input found)
◆ base64_table
Initial value:=
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789+/"
◆ from_base64_table