1/** 2 * @copyright 3 * ==================================================================== 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance 10 * with the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 * KIND, either express or implied. See the License for the 18 * specific language governing permissions and limitations 19 * under the License. 20 * ==================================================================== 21 * @endcopyright 22 * 23 * @file svn_base64.h 24 * @brief Base64 encoding and decoding functions 25 */ 26 27#ifndef SVN_BASE64_H 28#define SVN_BASE64_H 29 30#include <apr_pools.h> 31 32#include "svn_types.h" 33#include "svn_io.h" /* for svn_stream_t */ 34#include "svn_string.h" 35 36#ifdef __cplusplus 37extern "C" { 38#endif /* __cplusplus */ 39 40/** 41 * 42 * 43 * @defgroup base64 Base64 encoding/decoding functions 44 * 45 * @{ 46 */ 47 48/** Return a writable generic stream which will encode binary data in 49 * base64 format and write the encoded data to @a output. Be sure to 50 * close the stream when done writing in order to squeeze out the last 51 * bit of encoded data. The stream is allocated in @a pool. 52 */ 53svn_stream_t * 54svn_base64_encode(svn_stream_t *output, 55 apr_pool_t *pool); 56 57/** Return a writable generic stream which will decode base64-encoded 58 * data and write the decoded data to @a output. The stream is allocated 59 * in @a pool. 60 */ 61svn_stream_t * 62svn_base64_decode(svn_stream_t *output, 63 apr_pool_t *pool); 64 65 66/** Encode an @c svn_stringbuf_t into base64. 67 * 68 * A simple interface for encoding base64 data assuming we have all of 69 * it present at once. If @a break_lines is true, newlines will be 70 * inserted periodically; otherwise the string will only consist of 71 * base64 encoding characters. The returned string will be allocated 72 * from @a pool. 73 * 74 * @since New in 1.6. 75 */ 76const svn_string_t * 77svn_base64_encode_string2(const svn_string_t *str, 78 svn_boolean_t break_lines, 79 apr_pool_t *pool); 80 81/** 82 * Same as svn_base64_encode_string2, but with @a break_lines always 83 * TRUE. 84 * 85 * @deprecated Provided for backward compatibility with the 1.5 API. 86 */ 87SVN_DEPRECATED 88const svn_string_t * 89svn_base64_encode_string(const svn_string_t *str, 90 apr_pool_t *pool); 91 92/** Decode an @c svn_stringbuf_t from base64. 93 * 94 * A simple interface for decoding base64 data assuming we have all of 95 * it present at once. The returned string will be allocated from @c 96 * pool. 97 * 98 */ 99const svn_string_t * 100svn_base64_decode_string(const svn_string_t *str, 101 apr_pool_t *pool); 102 103 104/** Return a base64-encoded checksum for finalized @a digest. 105 * 106 * @a digest contains @c APR_MD5_DIGESTSIZE bytes of finalized data. 107 * Allocate the returned checksum in @a pool. 108 * 109 * @deprecated Provided for backward compatibility with the 1.5 API. 110 */ 111SVN_DEPRECATED 112svn_stringbuf_t * 113svn_base64_from_md5(unsigned char digest[], 114 apr_pool_t *pool); 115 116 117/** @} end group: Base64 encoding/decoding functions */ 118 119#ifdef __cplusplus 120} 121#endif /* __cplusplus */ 122 123#endif /* SVN_BASE64_H */ 124