source: project/release/4/modular-crypt/trunk/implementations/blowfish/common_blowfish.c @ 22216

Last change on this file since 22216 was 22216, checked in by sjamaan, 9 years ago

Add initial code for crypt egg

File size: 927 bytes
Line 
1#ifndef COMMON_BLOWFISH_INCLUDE
2#define COMMON_BLOWFISH_INCLUDE 1
3
4#include <errno.h>
5#ifndef __set_errno
6#define __set_errno(val) errno = (val)
7#endif
8
9typedef unsigned int BF_word;
10
11static unsigned char BF_itoa64[64 + 1] =
12        "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
13
14static void BF_encode(char *dst, const BF_word *src, int size)
15{
16        unsigned char *sptr = (unsigned char *)src;
17        unsigned char *end = sptr + size;
18        unsigned char *dptr = (unsigned char *)dst;
19        unsigned int c1, c2;
20
21        do {
22                c1 = *sptr++;
23                *dptr++ = BF_itoa64[c1 >> 2];
24                c1 = (c1 & 0x03) << 4;
25                if (sptr >= end) {
26                        *dptr++ = BF_itoa64[c1];
27                        break;
28                }
29
30                c2 = *sptr++;
31                c1 |= c2 >> 4;
32                *dptr++ = BF_itoa64[c1];
33                c1 = (c2 & 0x0f) << 2;
34                if (sptr >= end) {
35                        *dptr++ = BF_itoa64[c1];
36                        break;
37                }
38
39                c2 = *sptr++;
40                c1 |= c2 >> 6;
41                *dptr++ = BF_itoa64[c1];
42                *dptr++ = BF_itoa64[c2 & 0x3f];
43        } while (sptr < end);
44}
45
46#endif
Note: See TracBrowser for help on using the repository browser.