/******************************************************************************* * Copyright (c) 2018 Wind River Systems, Inc. All Rights Reserved. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * and Eclipse Distribution License v1.0 which accompany this distribution. * * The Eclipse Public License is available at * https://www.eclipse.org/legal/epl-2.0/ * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Keith Holman - initial implementation and documentation *******************************************************************************/ #if !defined(BASE64_H) #define BASE64_H /** type for size of a buffer, it saves passing around @p size_t (unsigned long long or unsigned long int) */ typedef unsigned int b64_size_t; /** type for raw base64 data */ typedef unsigned char b64_data_t; /** * Decodes base64 data * * @param[out] out decoded data * @param[in] out_len length of output buffer * @param[in] in base64 string to decode * @param[in] in_len length of input buffer * * @return the amount of data decoded * * @see Base64_decodeLength * @see Base64_encode */ b64_size_t Base64_decode( b64_data_t *out, b64_size_t out_len, const char *in, b64_size_t in_len ); /** * Size of buffer required to decode base64 data * * @param[in] in base64 string to decode * @param[in] in_len length of input buffer * * @return the size of buffer the decoded string would require * * @see Base64_decode * @see Base64_encodeLength */ b64_size_t Base64_decodeLength( const char *in, b64_size_t in_len ); /** * Encodes base64 data * * @param[out] out encode base64 string * @param[in] out_len length of output buffer * @param[in] in raw data to encode * @param[in] in_len length of input buffer * * @return the amount of data encoded * * @see Base64_decode * @see Base64_encodeLength */ b64_size_t Base64_encode( char *out, b64_size_t out_len, const b64_data_t *in, b64_size_t in_len ); /** * Size of buffer required to encode base64 data * * @param[in] in raw data to encode * @param[in] in_len length of input buffer * * @return the size of buffer the encoded string would require * * @see Base64_decodeLength * @see Base64_encode */ b64_size_t Base64_encodeLength( const b64_data_t *in, b64_size_t in_len ); #endif /* BASE64_H */