base64.h File Reference

Base64 utility functions. More...

Functions

static size_t spdk_base64_get_encoded_strlen (size_t raw_len)
 Following the Base64 part in RFC4648: https://tools.ietf.org/html/rfc4648.html. More...
 
static size_t spdk_base64_get_decoded_len (size_t encoded_strlen)
 Calculate length of raw buffer based on strlen of encoded Base64. More...
 
int spdk_base64_encode (char *dst, const void *src, size_t src_len)
 Base 64 Encoding with Standard Base64 Alphabet defined in RFC4684. More...
 
int spdk_base64_urlsafe_encode (char *dst, const void *src, size_t src_len)
 Base 64 Encoding with URL and Filename Safe Alphabet. More...
 
int spdk_base64_decode (void *dst, size_t *dst_len, const char *src)
 Base 64 Decoding with Standard Base64 Alphabet defined in RFC4684. More...
 
int spdk_base64_urlsafe_decode (void *dst, size_t *dst_len, const char *src)
 Base 64 Decoding with URL and Filename Safe Alphabet. More...
 

Detailed Description

Base64 utility functions.

Function Documentation

◆ spdk_base64_decode()

int spdk_base64_decode ( void *  dst,
size_t *  dst_len,
const char *  src 
)

Base 64 Decoding with Standard Base64 Alphabet defined in RFC4684.

Parameters
dstBuffer address of decoded raw data. Its length should be enough to contain decoded raw data, so it needs to be at least as long as spdk_base64_get_decoded_len(encoded_strlen). If NULL, only dst_len will be populated indicating the exact decoded length.
dst_lenOutput parameter for the length of actual decoded raw data. If NULL, the actual decoded length won't be returned.
srcData buffer for base64 string to be decoded.
Returns
0 on success.
-EINVAL if src is NULL, or content of src is illegal.

◆ spdk_base64_encode()

int spdk_base64_encode ( char *  dst,
const void *  src,
size_t  src_len 
)

Base 64 Encoding with Standard Base64 Alphabet defined in RFC4684.

Parameters
dstBuffer address of encoded Base64 string. Its length should be enough to contain Base64 string and the terminating null byte ('\0'), so it needs to be at least as long as 1 + spdk_base64_get_encoded_strlen(src_len).
srcRaw data buffer to be encoded.
src_lenLength of raw data buffer.
Returns
0 on success.
-EINVAL if dst or src is NULL, or binary_len <= 0.

◆ spdk_base64_get_decoded_len()

static size_t spdk_base64_get_decoded_len ( size_t  encoded_strlen)
inlinestatic

Calculate length of raw buffer based on strlen of encoded Base64.

This length will be the max possible decoded len. The exact decoded length could be shorter depending on if there was padding in the Base64 string.

Parameters
encoded_strlenLength of encoded Base64 string, excluding terminating null byte ('\0').
Returns
Length of raw buffer.

◆ spdk_base64_get_encoded_strlen()

static size_t spdk_base64_get_encoded_strlen ( size_t  raw_len)
inlinestatic

Following the Base64 part in RFC4648: https://tools.ietf.org/html/rfc4648.html.

Calculate strlen of encoded Base64 string based on raw buffer length.

Parameters
raw_lenLength of raw buffer.
Returns
Encoded Base64 string length, excluding the terminating null byte ('\0').

◆ spdk_base64_urlsafe_decode()

int spdk_base64_urlsafe_decode ( void *  dst,
size_t *  dst_len,
const char *  src 
)

Base 64 Decoding with URL and Filename Safe Alphabet.

Parameters
dstBuffer address of decoded raw data. Its length should be enough to contain decoded raw data, so it needs to be at least as long as spdk_base64_get_decoded_len(encoded_strlen). If NULL, only dst_len will be populated indicating the exact decoded length.
dst_lenOutput parameter for the length of actual decoded raw data. If NULL, the actual decoded length won't be returned.
srcData buffer for base64 string to be decoded.
Returns
0 on success.
-EINVAL if src is NULL, or content of src is illegal.

◆ spdk_base64_urlsafe_encode()

int spdk_base64_urlsafe_encode ( char *  dst,
const void *  src,
size_t  src_len 
)

Base 64 Encoding with URL and Filename Safe Alphabet.

Parameters
dstBuffer address of encoded Base64 string. Its length should be enough to contain Base64 string and the terminating null byte ('\0'), so it needs to be at least as long as 1 + spdk_base64_get_encoded_strlen(src_len).
srcRaw data buffer to be encoded.
src_lenLength of raw data buffer.
Returns
0 on success.
-EINVAL if dst or src is NULL, or binary_len <= 0.