Changeset 128 in libcf for trunk/src/cf_codec.c


Ignore:
Timestamp:
06/22/13 12:03:53 (11 years ago)
Author:
cheese
Message:

#1 add bitwise util from ARIA of chevalier

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/cf_codec.c

    r119 r128  
    11/**
    2  * \file    cf_codec.c
    3  * \author  myusgun <myusgun@gmail.com>
     2 * \file cf_codec.c
     3 *
     4 * \author myusgun <myusgun@gmail.com>
    45 *
    56 * \brief 데이터 변환 구현
    67 */
    78#include "cf_codec.h"
     9#include "cf_type.h"
    810#include "cf_error.h"
    911
     
    1517        return CF_ERROR_CODEC_INVALID_ARGS
    1618
    17 const static unsigned char g_ascii_HexDecode[] = {
     19const static cf_byte g_ascii_HexDecode[] = {
    1820    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /*  00 -  15 */
    1921    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    /*  16 -  31 */
     
    4850};
    4951
    50 const static unsigned char g_ascii_Base64Decode[] = {
     52const static cf_byte g_ascii_Base64Decode[] = {
    5153    0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,    /*  00 -  15 */
    5254    0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,    /*  16 -  31 */
     
    8284 */
    8385int
    84 CF_Codec_Hex_Encode (const unsigned char    * bin,
    85                      const size_t           len,
    86                      char                   * hex)
     86CF_Codec_Hex_Encode (const cf_byte  * bin,
     87                     const size_t   len,
     88                     char           * hex)
    8789{
    8890    size_t  iter = 0;
    8991    size_t  hexlen = len * 2 + 1;
    9092
    91     const unsigned char * ptr = bin;
     93    const cf_byte   * ptr = bin;
    9294
    9395    const static char   hexchar[] = {'0', '1', '2', '3',
     
    122124 */
    123125int
    124 CF_Codec_Hex_Decode (const char     * hex,
    125                      unsigned char  * bin,
    126                      size_t         * len)
     126CF_Codec_Hex_Decode (const char * hex,
     127                     cf_byte    * bin,
     128                     size_t     * len)
    127129{
    128     size_t  length = 0; /* absolutely even-number */
    129     size_t  iter = 0;
    130     size_t  binlen = 0;
    131 
    132     const char      * ptr = hex;
    133     char            buf = 0;
    134     unsigned char   val = 0;
    135     unsigned char   asciiHex = 0;
     130    size_t      length = 0; /* absolutely even-number */
     131    size_t      iter = 0;
     132    size_t      binlen = 0;
     133
     134    const char  * ptr = hex;
     135    char        buf = 0;
     136    cf_byte     val = 0;
     137    cf_byte     asciiHex = 0;
    136138
    137139    ASSERT_ARGS (hex == NULL);
     
    156158        do {                                        \
    157159        buf = *(x);                                 \
    158         val = (unsigned char)(val << 4);            \
     160        val = (cf_byte)(val << 4);          \
    159161        asciiHex = g_ascii_HexDecode[(int)buf];     \
    160162                                                    \
    161         val |=  (unsigned char)                     \
     163        val |=  (cf_byte)                       \
    162164                (buf - asciiHex + (asciiHex == '0' ? 0 : 10));  \
    163165        } while (0)
     
    188190 */
    189191int
    190 CF_Codec_Base64_Encode (const unsigned char * bin,
     192CF_Codec_Base64_Encode (const cf_byte   * bin,
    191193                        const size_t        len,
    192194                        char                * base64)
    193195{
    194     const unsigned char * src = bin;
    195     char                * dst = base64;
     196    const cf_byte   * src = bin;
     197    char            * dst = base64;
    196198
    197199    ASSERT_ARGS (src == NULL);
     
    252254int
    253255CF_Codec_Base64_Decode (const char      * base64,
    254                         unsigned char   * bin,
     256                        cf_byte * bin,
    255257                        size_t          * len)
    256258{
    257     const char      * src = base64;
    258     unsigned char   * dst = bin;
    259     int             remain = 0;
    260     int             binlen = 0;
     259    const char  * src = base64;
     260    cf_byte     * dst = bin;
     261    int         remain = 0;
     262    int         binlen = 0;
    261263
    262264    ASSERT_ARGS (src == NULL);
     
    283285    for (src = base64 ; remain > 4 ; remain -= 4, src += 4)
    284286    {
    285         *dst++ = (unsigned char)(SEXTUPLE_D_1 (src) | SEXTUPLE_D_2 (src));
    286         *dst++ = (unsigned char)(SEXTUPLE_D_3 (src) | SEXTUPLE_D_4 (src));
    287         *dst++ = (unsigned char)(SEXTUPLE_D_5 (src) | SEXTUPLE_D_6 (src));
     287        *dst++ = (cf_byte)(SEXTUPLE_D_1 (src) | SEXTUPLE_D_2 (src));
     288        *dst++ = (cf_byte)(SEXTUPLE_D_3 (src) | SEXTUPLE_D_4 (src));
     289        *dst++ = (cf_byte)(SEXTUPLE_D_5 (src) | SEXTUPLE_D_6 (src));
    288290    }
    289291
    290292    if (remain > 1)
    291         *dst++ = (unsigned char)(SEXTUPLE_D_1 (src) | SEXTUPLE_D_2 (src));
     293        *dst++ = (cf_byte)(SEXTUPLE_D_1 (src) | SEXTUPLE_D_2 (src));
    292294    if (remain > 2)
    293         *dst++ = (unsigned char)(SEXTUPLE_D_3 (src) | SEXTUPLE_D_4 (src));
     295        *dst++ = (cf_byte)(SEXTUPLE_D_3 (src) | SEXTUPLE_D_4 (src));
    294296    if (remain > 3)
    295         *dst++ = (unsigned char)(SEXTUPLE_D_5 (src) | SEXTUPLE_D_6 (src));
     297        *dst++ = (cf_byte)(SEXTUPLE_D_5 (src) | SEXTUPLE_D_6 (src));
    296298
    297299    return binlen - (4 - remain);
Note: See TracChangeset for help on using the changeset viewer.