Changeset 444299


Ignore:
Timestamp:
02/17/09 21:40:40 (4 years ago)
Author:
Erik Ekman <yarrick@…>
Branches:
master
Children:
c7b21b
Parents:
eed52b
git-author:
Erik Ekman <yarrick@…> (02/17/09 21:40:40)
git-committer:
Erik Ekman <erik@…> (02/04/12 20:34:00)
Message:

#51 handle one block encode/decode for base32

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/base32.c

    ra5031e r444299  
    104104 
    105105        /* how many chars can we encode within the buf */ 
    106         maxsize = BLKSIZE_RAW * (*buflen / BLKSIZE_ENC - 1) - 1; 
     106        maxsize = BLKSIZE_RAW * (*buflen / BLKSIZE_ENC); 
    107107        /* how big will the encoded data be */ 
    108         newsize = BLKSIZE_ENC * (size / BLKSIZE_RAW + 1) + 1; 
     108        newsize = BLKSIZE_ENC * (size / BLKSIZE_RAW); 
     109        if (size % BLKSIZE_RAW) { 
     110                newsize += BLKSIZE_ENC; 
     111        } 
    109112        /* if the buffer is too small, eat some of the data */ 
    110113        if (*buflen < newsize) { 
     
    133136        *buflen = size; 
    134137 
    135         return strlen(buf) - 1; 
     138        return strlen(buf); 
    136139} 
    137140 
  • tests/base32.c

    r3ee493 r444299  
    8686END_TEST 
    8787 
     88START_TEST(test_base32_blksize) 
     89{ 
     90        size_t rawlen; 
     91        size_t enclen; 
     92        char *rawbuf; 
     93        char *encbuf; 
     94        struct encoder *b32; 
     95        int i; 
     96        int val; 
     97 
     98        b32 = get_base32_encoder(); 
     99 
     100        rawlen = b32->blocksize_raw(); 
     101        enclen = b32->blocksize_encoded(); 
     102 
     103        rawbuf = malloc(rawlen + 16); 
     104        encbuf = malloc(enclen + 16); 
     105 
     106        for (i = 0; i < rawlen; i++) { 
     107                rawbuf[i] = 'A'; 
     108        } 
     109        rawbuf[i] = 0; 
     110 
     111        val = b32->encode(encbuf, &enclen, rawbuf, rawlen); 
     112 
     113        fail_unless(rawlen == 5, "raw length was %d not 5", rawlen); 
     114        fail_unless(enclen == 5, "encoded %d bytes, not 5", enclen); 
     115        fail_unless(val == 8, "encoded string %s was length %d", encbuf, val); 
     116 
     117        memset(rawbuf, 0, rawlen + 16); 
     118 
     119        enclen = val; 
     120        val = b32->decode(rawbuf, &rawlen, encbuf, enclen); 
     121 
     122        fail_unless(rawlen == 5, "raw length was %d not 5", rawlen); 
     123        fail_unless(val == 5, "val was not 5 but %d", val); 
     124        for (i = 0; i < rawlen; i++) { 
     125                fail_unless(rawbuf[i] == 'A'); 
     126        } 
     127} 
     128END_TEST 
     129 
    88130TCase * 
    89131test_base32_create_tests() 
     
    95137        tcase_add_loop_test(tc, test_base32_decode, 0, TUPLES); 
    96138        tcase_add_test(tc, test_base32_5to8_8to5); 
     139        tcase_add_test(tc, test_base32_blksize); 
    97140 
    98141        return tc; 
Note: See TracChangeset for help on using the changeset viewer.