234 lines
7.7 KiB
C
234 lines
7.7 KiB
C
|
/*!
|
|||
|
\ingroup Base_Encoding
|
|||
|
|
|||
|
\brief This function decodes the given Base64 encoded input, in, and
|
|||
|
stores the result in the output buffer out. It also sets the size
|
|||
|
written to the output buffer in the variable outLen.
|
|||
|
|
|||
|
\return 0 Returned upon successfully decoding the Base64 encoded input
|
|||
|
\return BAD_FUNC_ARG Returned if the output buffer is too small to
|
|||
|
store the decoded input
|
|||
|
\return ASN_INPUT_E Returned if a character in the input buffer falls
|
|||
|
outside of the Base64 range ([A-Za-z0-9+/=]) or if there is an invalid
|
|||
|
line ending in the Base64 encoded input
|
|||
|
|
|||
|
\param in pointer to the input buffer to decode
|
|||
|
\param inLen length of the input buffer to decode
|
|||
|
\param out pointer to the output buffer in which to store the decoded
|
|||
|
message
|
|||
|
\param outLen pointer to the length of the output buffer. Updated with
|
|||
|
the bytes written at the end of the function call
|
|||
|
|
|||
|
_Example_
|
|||
|
\code
|
|||
|
byte encoded[] = { // initialize text to decode };
|
|||
|
byte decoded[sizeof(encoded)];
|
|||
|
// requires at least (sizeof(encoded) * 3 + 3) / 4 room
|
|||
|
|
|||
|
int outLen = sizeof(decoded);
|
|||
|
|
|||
|
if( Base64_Decode(encoded,sizeof(encoded), decoded, &outLen) != 0 ) {
|
|||
|
// error decoding input buffer
|
|||
|
}
|
|||
|
\endcode
|
|||
|
|
|||
|
\sa Base64_Encode
|
|||
|
\sa Base16_Decode
|
|||
|
*/
|
|||
|
WOLFSSL_API int Base64_Decode(const byte* in, word32 inLen, byte* out,
|
|||
|
word32* outLen);
|
|||
|
|
|||
|
/*!
|
|||
|
\ingroup Base_Encoding
|
|||
|
|
|||
|
\brief This function encodes the given input, in, and stores the Base64
|
|||
|
encoded result in the output buffer out. It writes the data with the
|
|||
|
traditional ‘\n’ line endings, instead of escaped %0A line endings. Upon
|
|||
|
successfully completing, this function also sets outLen to the number
|
|||
|
of bytes written to the output buffer.
|
|||
|
|
|||
|
\return 0 Returned upon successfully decoding the Base64 encoded input
|
|||
|
\return BAD_FUNC_ARG Returned if the output buffer is too small to
|
|||
|
store the encoded input
|
|||
|
\return BUFFER_E Returned if the output buffer runs out of room
|
|||
|
while encoding
|
|||
|
|
|||
|
\param in pointer to the input buffer to encode
|
|||
|
\param inLen length of the input buffer to encode
|
|||
|
\param out pointer to the output buffer in which to store the
|
|||
|
encoded message
|
|||
|
\param outLen pointer to the length of the output buffer in
|
|||
|
which to store the encoded message
|
|||
|
|
|||
|
_Example_
|
|||
|
\code
|
|||
|
byte plain[] = { // initialize text to encode };
|
|||
|
byte encoded[MAX_BUFFER_SIZE];
|
|||
|
|
|||
|
int outLen = sizeof(encoded);
|
|||
|
|
|||
|
if( Base64_Encode(plain, sizeof(plain), encoded, &outLen) != 0 ) {
|
|||
|
// error encoding input buffer
|
|||
|
}
|
|||
|
\endcode
|
|||
|
|
|||
|
\sa Base64_EncodeEsc
|
|||
|
\sa Base64_Decode
|
|||
|
*/
|
|||
|
WOLFSSL_API
|
|||
|
int Base64_Encode(const byte* in, word32 inLen, byte* out,
|
|||
|
word32* outLen);
|
|||
|
|
|||
|
/*!
|
|||
|
\ingroup Base_Encoding
|
|||
|
|
|||
|
\brief This function encodes the given input, in, and stores the
|
|||
|
Base64 encoded result in the output buffer out. It writes the data
|
|||
|
with %0A escaped line endings instead of ‘\n’ line endings.
|
|||
|
Upon successfully completing, this function also sets outLen
|
|||
|
to the number of bytes written to the output buffer.
|
|||
|
|
|||
|
\return 0 Returned upon successfully decoding the Base64 encoded input
|
|||
|
\return BAD_FUNC_ARG Returned if the output buffer is too small
|
|||
|
to store the encoded input
|
|||
|
\return BUFFER_E Returned if the output buffer runs out of
|
|||
|
room while encoding
|
|||
|
\return ASN_INPUT_E Returned if there is an error processing
|
|||
|
the decode on the input message
|
|||
|
|
|||
|
\param in pointer to the input buffer to encode
|
|||
|
\param inLen length of the input buffer to encode
|
|||
|
\param out pointer to the output buffer in which to store
|
|||
|
the encoded message
|
|||
|
\param outLen pointer to the length of the output buffer in
|
|||
|
which to store the encoded message
|
|||
|
|
|||
|
_Example_
|
|||
|
\code
|
|||
|
byte plain[] = { // initialize text to encode };
|
|||
|
byte encoded[MAX_BUFFER_SIZE];
|
|||
|
|
|||
|
int outLen = sizeof(encoded);
|
|||
|
|
|||
|
if( Base64_EncodeEsc(plain, sizeof(plain), encoded, &outLen) != 0 ) {
|
|||
|
// error encoding input buffer
|
|||
|
}
|
|||
|
\endcode
|
|||
|
|
|||
|
\sa Base64_Encode
|
|||
|
\sa Base64_Decode
|
|||
|
*/
|
|||
|
int Base64_EncodeEsc(const byte* in, word32 inLen, byte* out,
|
|||
|
word32* outLen);
|
|||
|
|
|||
|
/*!
|
|||
|
\ingroup Base_Encoding
|
|||
|
|
|||
|
\brief This function encodes the given input, in, and stores the
|
|||
|
Base64 encoded result in the output buffer out. It writes the data
|
|||
|
with no new lines. Upon successfully completing, this function
|
|||
|
also sets outLen to the number of bytes written to the output buffer
|
|||
|
|
|||
|
\return 0 Returned upon successfully decoding the Base64 encoded input
|
|||
|
\return BAD_FUNC_ARG Returned if the output buffer is too small
|
|||
|
to store the encoded input
|
|||
|
\return BUFFER_E Returned if the output buffer runs out of room
|
|||
|
while encoding
|
|||
|
\return ASN_INPUT_E Returned if there is an error processing the
|
|||
|
decode on the input message
|
|||
|
|
|||
|
\param in pointer to the input buffer to encode
|
|||
|
\param inLen length of the input buffer to encode
|
|||
|
\param out pointer to the output buffer in which to store the
|
|||
|
encoded message
|
|||
|
\param outLen pointer to the length of the output buffer in which to
|
|||
|
store the encoded message
|
|||
|
|
|||
|
_Example_
|
|||
|
\code
|
|||
|
byte plain[] = { // initialize text to encode };
|
|||
|
byte encoded[MAX_BUFFER_SIZE];
|
|||
|
int outLen = sizeof(encoded);
|
|||
|
if( Base64_Encode_NoNl(plain, sizeof(plain), encoded, &outLen) != 0 ) {
|
|||
|
// error encoding input buffer
|
|||
|
}
|
|||
|
\endcode
|
|||
|
|
|||
|
\sa Base64_Encode
|
|||
|
\sa Base64_Decode
|
|||
|
*/
|
|||
|
WOLFSSL_API
|
|||
|
int Base64_Encode_NoNl(const byte* in, word32 inLen, byte* out,
|
|||
|
word32* outLen);
|
|||
|
|
|||
|
/*!
|
|||
|
\ingroup Base_Encoding
|
|||
|
|
|||
|
\brief This function decodes the given Base16 encoded input, in, and
|
|||
|
stores the result in the output buffer out. It also sets the size written
|
|||
|
to the output buffer in the variable outLen.
|
|||
|
|
|||
|
\return 0 Returned upon successfully decoding the Base16 encoded input
|
|||
|
\return BAD_FUNC_ARG Returned if the output buffer is too small to store
|
|||
|
the decoded input or if the input length is not a multiple of two
|
|||
|
\return ASN_INPUT_E Returned if a character in the input buffer falls
|
|||
|
outside of the Base16 range ([0-9A-F])
|
|||
|
|
|||
|
\param in pointer to the input buffer to decode
|
|||
|
\param inLen length of the input buffer to decode
|
|||
|
\param out pointer to the output buffer in which to store the decoded
|
|||
|
message
|
|||
|
\param outLen pointer to the length of the output buffer. Updated with the
|
|||
|
bytes written at the end of the function call
|
|||
|
|
|||
|
_Example_
|
|||
|
\code
|
|||
|
byte encoded[] = { // initialize text to decode };
|
|||
|
byte decoded[sizeof(encoded)];
|
|||
|
int outLen = sizeof(decoded);
|
|||
|
|
|||
|
if( Base16_Decode(encoded,sizeof(encoded), decoded, &outLen) != 0 ) {
|
|||
|
// error decoding input buffer
|
|||
|
}
|
|||
|
\endcode
|
|||
|
|
|||
|
\sa Base64_Encode
|
|||
|
\sa Base64_Decode
|
|||
|
\sa Base16_Encode
|
|||
|
*/
|
|||
|
WOLFSSL_API
|
|||
|
int Base16_Decode(const byte* in, word32 inLen, byte* out, word32* outLen);
|
|||
|
|
|||
|
/*!
|
|||
|
\ingroup Base_Encoding
|
|||
|
|
|||
|
\brief Encode input to base16 output.
|
|||
|
|
|||
|
\return 0 Success
|
|||
|
\return BAD_FUNC_ARG Returns if in, out, or outLen is null or if outLen is
|
|||
|
less than 2 times inLen plus 1.
|
|||
|
|
|||
|
\param in Pointer to input buffer to be encoded.
|
|||
|
\param inLen Length of input buffer.
|
|||
|
\param out Pointer to output buffer.
|
|||
|
\param outLen Length of output buffer. Is set to len of encoded output.
|
|||
|
|
|||
|
_Example_
|
|||
|
\code
|
|||
|
byte in[] = { // Contents of something to be encoded };
|
|||
|
byte out[NECESSARY_OUTPUT_SIZE];
|
|||
|
word32 outSz = sizeof(out);
|
|||
|
|
|||
|
if(Base16_Encode(in, sizeof(in), out, &outSz) != 0)
|
|||
|
{
|
|||
|
// Handle encode error
|
|||
|
}
|
|||
|
\endcode
|
|||
|
|
|||
|
\sa Base64_Encode
|
|||
|
\sa Base64_Decode
|
|||
|
\sa Base16_Decode
|
|||
|
*/
|
|||
|
WOLFSSL_API
|
|||
|
int Base16_Encode(const byte* in, word32 inLen, byte* out, word32* outLen);
|