1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 | #ifndef _NODE_BLF_H_
|
35 | #define _NODE_BLF_H_
|
36 |
|
37 | #include <sys/types.h>
|
38 |
|
39 |
|
40 | #ifdef __sun
|
41 | #define u_int8_t uint8_t
|
42 | #define u_int16_t uint16_t
|
43 | #define u_int32_t uint32_t
|
44 | #define u_int64_t uint64_t
|
45 | #endif
|
46 |
|
47 | #ifdef _WIN32
|
48 | #define u_int8_t unsigned __int8
|
49 | #define u_int16_t unsigned __int16
|
50 | #define u_int32_t unsigned __int32
|
51 | #define u_int64_t unsigned __int64
|
52 | #endif
|
53 |
|
54 |
|
55 | #if defined(_WIN32) || defined(_WIN64)
|
56 | # if defined(_WIN64)
|
57 | typedef __int64 LONG_PTR;
|
58 | # else
|
59 | typedef long LONG_PTR;
|
60 | # endif
|
61 | typedef LONG_PTR SSIZE_T;
|
62 | typedef SSIZE_T ssize_t;
|
63 | #endif
|
64 |
|
65 |
|
66 | #ifdef __MVS__
|
67 | typedef unsigned char u_int8_t;
|
68 | typedef unsigned short u_int16_t;
|
69 | typedef unsigned int u_int32_t;
|
70 | typedef unsigned long long u_int64_t;
|
71 | #endif
|
72 |
|
73 | #define BCRYPT_VERSION '2'
|
74 | #define BCRYPT_MAXSALT 16
|
75 | #define BCRYPT_BLOCKS 6
|
76 | #define BCRYPT_MINROUNDS 16
|
77 |
|
78 |
|
79 |
|
80 |
|
81 |
|
82 |
|
83 |
|
84 |
|
85 | #define BLF_N 16
|
86 | #define BLF_MAXKEYLEN ((BLF_N-2)*4)
|
87 | #define BLF_MAXUTILIZED ((BLF_N+2)*4)
|
88 |
|
89 | #define _PASSWORD_LEN 128
|
90 | #define _SALT_LEN 32
|
91 |
|
92 |
|
93 | typedef struct BlowfishContext {
|
94 | u_int32_t S[4][256];
|
95 | u_int32_t P[BLF_N + 2];
|
96 | } blf_ctx;
|
97 |
|
98 |
|
99 |
|
100 |
|
101 |
|
102 |
|
103 |
|
104 | void Blowfish_encipher(blf_ctx *, u_int32_t *, u_int32_t *);
|
105 | void Blowfish_decipher(blf_ctx *, u_int32_t *, u_int32_t *);
|
106 | void Blowfish_initstate(blf_ctx *);
|
107 | void Blowfish_expand0state(blf_ctx *, const u_int8_t *, u_int16_t);
|
108 | void Blowfish_expandstate
|
109 | (blf_ctx *, const u_int8_t *, u_int16_t, const u_int8_t *, u_int16_t);
|
110 |
|
111 |
|
112 |
|
113 | void blf_key(blf_ctx *, const u_int8_t *, u_int16_t);
|
114 | void blf_enc(blf_ctx *, u_int32_t *, u_int16_t);
|
115 | void blf_dec(blf_ctx *, u_int32_t *, u_int16_t);
|
116 |
|
117 | void blf_ecb_encrypt(blf_ctx *, u_int8_t *, u_int32_t);
|
118 | void blf_ecb_decrypt(blf_ctx *, u_int8_t *, u_int32_t);
|
119 |
|
120 | void blf_cbc_encrypt(blf_ctx *, u_int8_t *, u_int8_t *, u_int32_t);
|
121 | void blf_cbc_decrypt(blf_ctx *, u_int8_t *, u_int8_t *, u_int32_t);
|
122 |
|
123 |
|
124 | u_int32_t Blowfish_stream2word(const u_int8_t *, u_int16_t , u_int16_t *);
|
125 |
|
126 |
|
127 | void bcrypt_gensalt(char, u_int8_t, u_int8_t*, char *);
|
128 | void bcrypt(const char *, size_t key_len, const char *, char *);
|
129 | void encode_salt(char *, u_int8_t *, char, u_int16_t, u_int8_t);
|
130 | u_int32_t bcrypt_get_rounds(const char *);
|
131 |
|
132 | #endif
|