Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /**
  2.  * \file base64.h
  3.  *
  4.  * \brief RFC 1521 base64 encoding/decoding
  5.  *
  6.  *  Copyright (C) 2006-2010, Brainspark B.V.
  7.  *
  8.  *  This file is part of PolarSSL (http://www.polarssl.org)
  9.  *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
  10.  *
  11.  *  All rights reserved.
  12.  *
  13.  *  This program is free software; you can redistribute it and/or modify
  14.  *  it under the terms of the GNU General Public License as published by
  15.  *  the Free Software Foundation; either version 2 of the License, or
  16.  *  (at your option) any later version.
  17.  *
  18.  *  This program is distributed in the hope that it will be useful,
  19.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  20.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  21.  *  GNU General Public License for more details.
  22.  *
  23.  *  You should have received a copy of the GNU General Public License along
  24.  *  with this program; if not, write to the Free Software Foundation, Inc.,
  25.  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  26.  */
  27. #ifndef POLARSSL_BASE64_H
  28. #define POLARSSL_BASE64_H
  29.  
  30. #include <string.h>
  31.  
  32. #define POLARSSL_ERR_BASE64_BUFFER_TOO_SMALL               -0x002A  /**< Output buffer too small. */
  33. #define POLARSSL_ERR_BASE64_INVALID_CHARACTER              -0x002C  /**< Invalid character in input. */
  34.  
  35. #ifdef __cplusplus
  36. extern "C" {
  37. #endif
  38.  
  39. /**
  40.  * \brief          Encode a buffer into base64 format
  41.  *
  42.  * \param dst      destination buffer
  43.  * \param dlen     size of the buffer
  44.  * \param src      source buffer
  45.  * \param slen     amount of data to be encoded
  46.  *
  47.  * \return         0 if successful, or POLARSSL_ERR_BASE64_BUFFER_TOO_SMALL.
  48.  *                 *dlen is always updated to reflect the amount
  49.  *                 of data that has (or would have) been written.
  50.  *
  51.  * \note           Call this function with *dlen = 0 to obtain the
  52.  *                 required buffer size in *dlen
  53.  */
  54. int base64_encode( unsigned char *dst, size_t *dlen,
  55.                    const unsigned char *src, size_t slen );
  56.  
  57. /**
  58.  * \brief          Decode a base64-formatted buffer
  59.  *
  60.  * \param dst      destination buffer
  61.  * \param dlen     size of the buffer
  62.  * \param src      source buffer
  63.  * \param slen     amount of data to be decoded
  64.  *
  65.  * \return         0 if successful, POLARSSL_ERR_BASE64_BUFFER_TOO_SMALL, or
  66.  *                 POLARSSL_ERR_BASE64_INVALID_CHARACTER if the input data is
  67.  *                 not correct. *dlen is always updated to reflect the amount
  68.  *                 of data that has (or would have) been written.
  69.  *
  70.  * \note           Call this function with *dlen = 0 to obtain the
  71.  *                 required buffer size in *dlen
  72.  */
  73. int base64_decode( unsigned char *dst, size_t *dlen,
  74.                    const unsigned char *src, size_t slen );
  75.  
  76. /**
  77.  * \brief          Checkup routine
  78.  *
  79.  * \return         0 if successful, or 1 if the test failed
  80.  */
  81. int base64_self_test( int verbose );
  82.  
  83. #ifdef __cplusplus
  84. }
  85. #endif
  86.  
  87. #endif /* base64.h */
  88.