"Fossies" - the Fresh Open Source Software Archive

Member "bind-9.11.23/lib/isc/include/isc/base64.h" (7 Sep 2020, 2865 Bytes) of package /linux/misc/dns/bind9/9.11.23/bind-9.11.23.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "base64.h" see the Fossies "Dox" file reference documentation.

    1 /*
    2  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
    3  *
    4  * This Source Code Form is subject to the terms of the Mozilla Public
    5  * License, v. 2.0. If a copy of the MPL was not distributed with this
    6  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
    7  *
    8  * See the COPYRIGHT file distributed with this work for additional
    9  * information regarding copyright ownership.
   10  */
   11 
   12 
   13 #ifndef ISC_BASE64_H
   14 #define ISC_BASE64_H 1
   15 
   16 /*! \file isc/base64.h */
   17 
   18 #include <isc/lang.h>
   19 #include <isc/types.h>
   20 
   21 ISC_LANG_BEGINDECLS
   22 
   23 /***
   24  *** Functions
   25  ***/
   26 
   27 isc_result_t
   28 isc_base64_totext(isc_region_t *source, int wordlength,
   29           const char *wordbreak, isc_buffer_t *target);
   30 /*!<
   31  * \brief Convert data into base64 encoded text.
   32  *
   33  * Notes:
   34  *\li   The base64 encoded text in 'target' will be divided into
   35  *  words of at most 'wordlength' characters, separated by
   36  *  the 'wordbreak' string.  No parentheses will surround
   37  *  the text.
   38  *
   39  * Requires:
   40  *\li   'source' is a region containing binary data
   41  *\li   'target' is a text buffer containing available space
   42  *\li   'wordbreak' points to a null-terminated string of
   43  *      zero or more whitespace characters
   44  *
   45  * Ensures:
   46  *\li   target will contain the base64 encoded version of the data
   47  *  in source.  The 'used' pointer in target will be advanced as
   48  *  necessary.
   49  */
   50 
   51 isc_result_t
   52 isc_base64_decodestring(const char *cstr, isc_buffer_t *target);
   53 /*!<
   54  * \brief Decode a null-terminated base64 string.
   55  *
   56  * Requires:
   57  *\li   'cstr' is non-null.
   58  *\li   'target' is a valid buffer.
   59  *
   60  * Returns:
   61  *\li   #ISC_R_SUCCESS  -- the entire decoded representation of 'cstring'
   62  *             fit in 'target'.
   63  *\li   #ISC_R_BADBASE64 -- 'cstr' is not a valid base64 encoding.
   64  *
   65  *  Other error returns are any possible error code from:
   66  *\li       isc_lex_create(),
   67  *\li       isc_lex_openbuffer(),
   68  *\li       isc_base64_tobuffer().
   69  */
   70 
   71 isc_result_t
   72 isc_base64_tobuffer(isc_lex_t *lexer, isc_buffer_t *target, int length);
   73 /*!<
   74  * \brief Convert base64 encoded text from a lexer context into
   75  * `target`. If 'length' is non-negative, it is the expected number of
   76  * encoded octets to convert.
   77  *
   78  * If 'length' is -1 then 0 or more encoded octets are expected.
   79  * If 'length' is -2 then 1 or more encoded octets are expected.
   80  *
   81  * Returns:
   82  *\li   #ISC_R_BADBASE64 -- invalid base64 encoding.
   83  *\li   #ISC_R_UNEXPECTEDEND: the text does not contain the expected
   84  *                number of encoded octets.
   85  *
   86  * Requires:
   87  *\li   'lexer' is a valid lexer context
   88  *\li   'target' is a buffer containing binary data
   89  *\li   'length' is -2, -1, or non-negative
   90  *
   91  * Ensures:
   92  *\li   target will contain the data represented by the base64 encoded
   93  *  string parsed by the lexer.  No more than `length` octets will
   94  *  be read, if `length` is non-negative.  The 'used' pointer in
   95  *  'target' will be advanced as necessary.
   96  */
   97 
   98 ISC_LANG_ENDDECLS
   99 
  100 #endif /* ISC_BASE64_H */