/**
* Copyright ( C ) 2021 Koichiro Iwao , all xrdp contributors
*
* Licensed under the Apache License , Version 2 . 0 ( the " License " ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an " AS IS " BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
*/
/**
* @ file common / base64 . h
* @ brief Base64 encoder / decoder
*
* Base - 64 is described in RFC4648 . The following notes apply to this
* implementation : -
* - The only supported characters are [ A - Za - z0 - 9 + / = ] . At present ,
* embedded linefeeds and URL encodings are not supported .
*
*/
#if !defined (BASE64_CALLS_H)
#define BASE64_CALLS_H
#include "arch.h"
/*
* Decodes a base64 string
*
* @ param src Pointer to null - terminated source
* @ param dst Pointer to output buffer
* @ param dst_len Length of above . No more than this is written to the
* output buffer
* @ param actual_len Pointer to value to receive actual length of decoded data
* @ return 0 for success , 1 for an invalid input string
*
* The following notes apply to this implementation : -
* - Embedded padding is supported , provided it only occurs at the end
* of a quantum as described in RFC4648 ( 4 ) . This allows concatenated
* encodings to be fed into the decoder .
* - Padding of the last quantum is assumed if not provided .
* - Excess padding of the last quantum is ignored .
*
* Only dst_len bytes at most are written to the output . The length
* returned in actual_len however represents how much buffer is needed for
* a correct result . This may be more than dst_len , and enables the caller
* to detect a potential buffer overflow
*/
int
base64_decode(const char *src, char *dst, size_t dst_len, size_t *actual_len);
/*
* Encodes a buffer as base64
*
* @ param src Pointer to source
* @ param src_len Length of above .
* @ param dst Pointer to output buffer for null - terminated string
* @ param dst_len Length of above . No more than this is written to the
* output buffer
* @ return Number of source characters processed
*
* The following notes apply to this implementation : -
* - Padding of the last quantum is always written if the number of
* source bytes is not divisible by 3 .
*
* The number of source characters processed is always returned . If
* the destination buffer is too small for all the output plus a
* terminator , the returned value from this procedure will be less than
* src_len . In this case no padding characters will have been written ,
* and the remaining characters can be converted with more calls to
* this procedure .
*/
size_t
base64_encode(const char *src, size_t src_len, char *dst, size_t dst_len);
#endif /* BASE64_CALLS_H */
Messung V0.5 in Prozent C=86 H=92 G=88
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet am 2026-07-10)
¤
*© Formatika GbR, Deutschland