1251881Speter/** 2251881Speter * @copyright 3251881Speter * ==================================================================== 4251881Speter * Licensed to the Apache Software Foundation (ASF) under one 5251881Speter * or more contributor license agreements. See the NOTICE file 6251881Speter * distributed with this work for additional information 7251881Speter * regarding copyright ownership. The ASF licenses this file 8251881Speter * to you under the Apache License, Version 2.0 (the 9251881Speter * "License"); you may not use this file except in compliance 10251881Speter * with the License. You may obtain a copy of the License at 11251881Speter * 12251881Speter * http://www.apache.org/licenses/LICENSE-2.0 13251881Speter * 14251881Speter * Unless required by applicable law or agreed to in writing, 15251881Speter * software distributed under the License is distributed on an 16251881Speter * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17251881Speter * KIND, either express or implied. See the License for the 18251881Speter * specific language governing permissions and limitations 19251881Speter * under the License. 20251881Speter * ==================================================================== 21251881Speter * @endcopyright 22251881Speter * 23251881Speter * @file svn_base64.h 24251881Speter * @brief Base64 encoding and decoding functions 25251881Speter */ 26251881Speter 27251881Speter#ifndef SVN_BASE64_H 28251881Speter#define SVN_BASE64_H 29251881Speter 30251881Speter#include <apr_pools.h> 31251881Speter 32251881Speter#include "svn_types.h" 33251881Speter#include "svn_io.h" /* for svn_stream_t */ 34251881Speter#include "svn_string.h" 35251881Speter 36251881Speter#ifdef __cplusplus 37251881Speterextern "C" { 38251881Speter#endif /* __cplusplus */ 39251881Speter 40251881Speter/** 41251881Speter * 42251881Speter * 43251881Speter * @defgroup base64 Base64 encoding/decoding functions 44251881Speter * 45251881Speter * @{ 46251881Speter */ 47251881Speter 48251881Speter/** Return a writable generic stream which will encode binary data in 49251881Speter * base64 format and write the encoded data to @a output. Be sure to 50251881Speter * close the stream when done writing in order to squeeze out the last 51251881Speter * bit of encoded data. The stream is allocated in @a pool. 52251881Speter */ 53251881Spetersvn_stream_t * 54251881Spetersvn_base64_encode(svn_stream_t *output, 55251881Speter apr_pool_t *pool); 56251881Speter 57251881Speter/** Return a writable generic stream which will decode base64-encoded 58251881Speter * data and write the decoded data to @a output. The stream is allocated 59251881Speter * in @a pool. 60251881Speter */ 61251881Spetersvn_stream_t * 62251881Spetersvn_base64_decode(svn_stream_t *output, 63251881Speter apr_pool_t *pool); 64251881Speter 65251881Speter 66251881Speter/** Encode an @c svn_stringbuf_t into base64. 67251881Speter * 68251881Speter * A simple interface for encoding base64 data assuming we have all of 69251881Speter * it present at once. If @a break_lines is true, newlines will be 70251881Speter * inserted periodically; otherwise the string will only consist of 71251881Speter * base64 encoding characters. The returned string will be allocated 72251881Speter * from @a pool. 73251881Speter * 74251881Speter * @since New in 1.6. 75251881Speter */ 76251881Speterconst svn_string_t * 77251881Spetersvn_base64_encode_string2(const svn_string_t *str, 78251881Speter svn_boolean_t break_lines, 79251881Speter apr_pool_t *pool); 80251881Speter 81251881Speter/** 82251881Speter * Same as svn_base64_encode_string2, but with @a break_lines always 83251881Speter * TRUE. 84251881Speter * 85251881Speter * @deprecated Provided for backward compatibility with the 1.5 API. 86251881Speter */ 87251881SpeterSVN_DEPRECATED 88251881Speterconst svn_string_t * 89251881Spetersvn_base64_encode_string(const svn_string_t *str, 90251881Speter apr_pool_t *pool); 91251881Speter 92251881Speter/** Decode an @c svn_stringbuf_t from base64. 93251881Speter * 94251881Speter * A simple interface for decoding base64 data assuming we have all of 95251881Speter * it present at once. The returned string will be allocated from @c 96251881Speter * pool. 97251881Speter * 98251881Speter */ 99251881Speterconst svn_string_t * 100251881Spetersvn_base64_decode_string(const svn_string_t *str, 101251881Speter apr_pool_t *pool); 102251881Speter 103251881Speter 104251881Speter/** Return a base64-encoded checksum for finalized @a digest. 105251881Speter * 106251881Speter * @a digest contains @c APR_MD5_DIGESTSIZE bytes of finalized data. 107251881Speter * Allocate the returned checksum in @a pool. 108251881Speter * 109251881Speter * @deprecated Provided for backward compatibility with the 1.5 API. 110251881Speter */ 111251881SpeterSVN_DEPRECATED 112251881Spetersvn_stringbuf_t * 113251881Spetersvn_base64_from_md5(unsigned char digest[], 114251881Speter apr_pool_t *pool); 115251881Speter 116251881Speter 117251881Speter/** @} end group: Base64 encoding/decoding functions */ 118251881Speter 119251881Speter#ifdef __cplusplus 120251881Speter} 121251881Speter#endif /* __cplusplus */ 122251881Speter 123251881Speter#endif /* SVN_BASE64_H */ 124