Skip to content

FilipBlazekovic/encode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

encode

Simple C library for Base16, Base32 and Base64 encoding/decoding.
Based on RFC 4638.

Building:

git clone git@github.com:FilipBlazekovic/encode.git

cd encode

cmake -B build -S .

cmake --build build --target encode

sudo cmake --install build
To change install location of encode.h and libencode.a change the following two properties in CMakeLists.txt:

set(HEADERS_DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
set(LIBRARY_DESTINATION ${CMAKE_INSTALL_LIBDIR})

Usage:

#include <encode.h>

void to_base16(const unsigned char *input, size_t input_length, char **output);
void to_base32(const unsigned char *input, size_t input_length, char **output);
void to_base64(const unsigned char *input, size_t input_length, char **output);

size_t from_base16(const char *input, unsigned char **output);
size_t from_base32(const char *input, unsigned char **output);
size_t from_base64(const char *input, unsigned char **output);

Example:

#include <stdio.h>
#include <encode.h>

char *data = "foobar";
char *encoded_data = NULL;
unsigned char *decoded_data = NULL;

// Encoding
to_base64((unsigned char *)data, strlen(data), &encoded_data);
if (encoded_data != NULL)
{
    /* Outputs Zm9vYmFy to stdout */
    printf("ENCODED: %s\n", encoded_data);
}

// Decoding
size_t length = from_base64(encoded_data, &decoded_data);
if (decoded_data != NULL)
{
    /* Outputs foobar to stdout */
    printf("DECODED: %.*s\n", length, decoded_data);
}

free(encoded_data);
free(decoded_data);

About

Simple C library for Base16, Base32 and Base64 encoding/decoding

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published