69 #define _PASSWORD_EFMT1 '_'
72 "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
75 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4,
76 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8,
77 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3,
78 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7
84 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18,
85 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36,
86 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22,
87 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4
91 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1
96 14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10,
97 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2,
98 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48,
99 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32
109 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,
110 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,
111 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,
112 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13
115 15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,
116 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,
117 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,
118 13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9
121 10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8,
122 13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1,
123 13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7,
124 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12
127 7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15,
128 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9,
129 10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4,
130 3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14
133 2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9,
134 14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6,
135 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14,
136 11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3
139 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11,
140 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8,
141 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6,
142 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13
145 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1,
146 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6,
147 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2,
148 6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12
151 13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7,
152 1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2,
153 7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,
154 2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11
160 16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10,
161 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25
166 0x80000000, 0x40000000, 0x20000000, 0x10000000,
167 0x08000000, 0x04000000, 0x02000000, 0x01000000,
168 0x00800000, 0x00400000, 0x00200000, 0x00100000,
169 0x00080000, 0x00040000, 0x00020000, 0x00010000,
170 0x00008000, 0x00004000, 0x00002000, 0x00001000,
171 0x00000800, 0x00000400, 0x00000200, 0x00000100,
172 0x00000080, 0x00000040, 0x00000020, 0x00000010,
173 0x00000008, 0x00000004, 0x00000002, 0x00000001
208 return (ch -
'a' + 38);
212 return (ch -
'A' + 12);
243 for (
i = 0;
i < 8;
i++)
244 for (
j = 0;
j < 64;
j++)
246 b = (
j & 0x20) | ((
j & 1) << 4) | ((
j >> 1) & 0xf);
254 for (
b = 0;
b < 4;
b++)
255 for (
i = 0;
i < 64;
i++)
256 for (
j = 0;
j < 64;
j++)
265 for (
i = 0;
i < 64;
i++)
275 for (
i = 0;
i < 56;
i++)
285 for (
i = 0;
i < 48;
i++)
292 for (k = 0; k < 8; k++)
294 for (
i = 0;
i < 256;
i++)
300 for (
j = 0;
j < 8;
j++)
316 for (
i = 0;
i < 128;
i++)
320 for (
j = 0;
j < 7;
j++)
335 for (
j = 0;
j < 7;
j++)
355 for (
i = 0;
i < 32;
i++)
358 for (
b = 0;
b < 4;
b++)
359 for (
i = 0;
i < 256;
i++)
362 for (
j = 0;
j < 8;
j++)
386 for (
i = 0;
i < 24;
i++)
411 if ((rawkey0 | rawkey1)
449 for (round = 0; round < 16; round++)
456 t0 = (k0 << shifts) | (k0 >> (28 - shifts));
457 t1 = (k1 << shifts) | (k1 >> (28 - shifts));
554 r48l = ((r & 0x00000001) << 23)
555 | ((r & 0xf8000000) >> 9)
556 | ((r & 0x1f800000) >> 11)
557 | ((r & 0x01f80000) >> 13)
558 | ((r & 0x001f8000) >> 15);
560 r48r = ((r & 0x0001f800) << 7)
561 | ((r & 0x00001f80) << 5)
562 | ((r & 0x000001f8) << 3)
563 | ((r & 0x0000001f) << 1)
564 | ((r & 0x80000000) >> 31);
632 memcpy(buffer, in,
sizeof(buffer));
637 retval =
do_des(rawl, rawr, &l_out, &r_out, count);
645 memcpy(out, buffer,
sizeof(buffer));
672 q = (
uint8 *) keybuf;
673 while (q - (
uint8 *) keybuf - 8)
694 if (strlen(setting) < 9)
696 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
699 for (
i = 1, count = 0L;
i < 5;
i++)
702 for (
i = 5, salt = 0L;
i < 9;
i++)
710 if (
des_cipher((
char *) keybuf, (
char *) keybuf, 0L, 1))
716 q = (
uint8 *) keybuf;
717 while (q - (
uint8 *) keybuf - 8 && *
key)
742 if (strlen(setting) < 2)
744 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
766 if (
do_des(0L, 0L, &r0, &r1, count))
778 l = (r0 << 16) | ((r1 >> 16) & 0xffff);
static int des_cipher(const char *in, char *out, long salt, int count)
static uint8 inv_key_perm[64]
static uint32 key_perm_maskl[8][128]
static uint32 ip_maskl[8][256]
static int ascii_to_bin(char ch)
static uint32 comp_maskl[8][128]
static void des_init(void)
static uint8 key_perm[56]
static uint32 psbox[4][256]
static uint32 en_keysr[16]
static void setup_salt(long salt)
static uint32 fp_maskr[8][256]
static int des_initialised
static uint32 de_keysr[16]
static uint8 u_key_perm[56]
static uint32 _crypt_bits32[32]
char * px_crypt_des(const char *key, const char *setting)
static uint8 init_perm[64]
static uint32 old_rawkey0
static uint8 final_perm[64]
static uint32 comp_maskr[8][128]
static uint8 key_shifts[16]
static uint32 key_perm_maskr[8][128]
static uint8 comp_perm[48]
static uint8 m_sbox[4][4096]
static uint8 u_sbox[8][64]
static uint32 fp_maskl[8][256]
static int do_des(uint32 l_in, uint32 r_in, uint32 *l_out, uint32 *r_out, int count)
static uint32 en_keysl[16]
static uint32 de_keysl[16]
static uint32 old_rawkey1
static int des_setkey(const char *key)
static uint8 _crypt_bits8[8]
static const char _crypt_a64[]
static uint8 inv_comp_perm[56]
static uint32 ip_maskr[8][256]
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
#define CHECK_FOR_INTERRUPTS()
size_t strlcpy(char *dst, const char *src, size_t siz)