84 lines
2.6 KiB
C
84 lines
2.6 KiB
C
|
/*******************************************************************************
|
||
|
* 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 */
|