libfortuna
1
FortunalibraryfunctionsextractedfromPostgreSQLsource
Main Page
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Macros
px.h
Go to the documentation of this file.
1
/*
2
* px.h
3
* Header file for pgcrypto.
4
*
5
* Copyright (c) 2001 Marko Kreen
6
* All rights reserved.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions
10
* are met:
11
* 1. Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* 2. Redistributions in binary form must reproduce the above copyright
14
* notice, this list of conditions and the following disclaimer in the
15
* documentation and/or other materials provided with the distribution.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
* SUCH DAMAGE.
28
*
29
* contrib/pgcrypto/px.h
30
*/
31
32
#ifndef __PX_H
33
#define __PX_H
34
35
#include <stdlib.h>
36
#include <sys/types.h>
37
#include <sys/param.h>
38
#include <malloc_np.h>
39
#include "
c.h
"
40
41
/* keep debug messages? */
42
#define PX_DEBUG
43
44
45
/* max len of 'type' parms */
46
#define PX_MAX_NAMELEN 128
47
48
/* max salt returned */
49
#define PX_MAX_SALT_LEN 128
50
51
/*
52
* PX error codes
53
*/
54
#define PXE_OK 0
55
#define PXE_ERR_GENERIC -1
56
#define PXE_NO_HASH -2
57
#define PXE_NO_CIPHER -3
58
#define PXE_NOTBLOCKSIZE -4
59
#define PXE_BAD_OPTION -5
60
#define PXE_BAD_FORMAT -6
61
#define PXE_KEY_TOO_BIG -7
62
#define PXE_CIPHER_INIT -8
63
#define PXE_HASH_UNUSABLE_FOR_HMAC -9
64
#define PXE_DEV_READ_ERROR -10
65
#define PXE_OSSL_RAND_ERROR -11
66
#define PXE_BUG -12
67
#define PXE_ARGUMENT_ERROR -13
68
#define PXE_UNKNOWN_SALT_ALGO -14
69
#define PXE_BAD_SALT_ROUNDS -15
70
#define PXE_MCRYPT_INTERNAL -16
71
#define PXE_NO_RANDOM -17
72
#define PXE_DECRYPT_FAILED -18
73
74
#define PXE_MBUF_SHORT_READ -50
75
76
#define PXE_PGP_CORRUPT_DATA -100
77
#define PXE_PGP_CORRUPT_ARMOR -101
78
#define PXE_PGP_UNSUPPORTED_COMPR -102
79
#define PXE_PGP_UNSUPPORTED_CIPHER -103
80
#define PXE_PGP_UNSUPPORTED_HASH -104
81
#define PXE_PGP_COMPRESSION_ERROR -105
82
#define PXE_PGP_NOT_TEXT -106
83
#define PXE_PGP_UNEXPECTED_PKT -107
84
#define PXE_PGP_NO_BIGNUM -108
85
#define PXE_PGP_MATH_FAILED -109
86
#define PXE_PGP_SHORT_ELGAMAL_KEY -110
87
#define PXE_PGP_RSA_UNSUPPORTED -111
88
#define PXE_PGP_UNKNOWN_PUBALGO -112
89
#define PXE_PGP_WRONG_KEY -113
90
#define PXE_PGP_MULTIPLE_KEYS -114
91
#define PXE_PGP_EXPECT_PUBLIC_KEY -115
92
#define PXE_PGP_EXPECT_SECRET_KEY -116
93
#define PXE_PGP_NOT_V4_KEYPKT -117
94
#define PXE_PGP_KEYPKT_CORRUPT -118
95
#define PXE_PGP_NO_USABLE_KEY -119
96
#define PXE_PGP_NEED_SECRET_PSW -120
97
#define PXE_PGP_BAD_S2K_MODE -121
98
#define PXE_PGP_UNSUPPORTED_PUBALGO -122
99
#define PXE_PGP_MULTIPLE_SUBKEYS -123
100
101
102
typedef
struct
px_digest
PX_MD
;
103
typedef
struct
px_alias
PX_Alias
;
104
typedef
struct
px_hmac
PX_HMAC
;
105
typedef
struct
px_cipher
PX_Cipher
;
106
typedef
struct
px_combo
PX_Combo
;
107
108
struct
px_digest
109
{
110
unsigned (*
result_size
) (
PX_MD
*h);
111
unsigned (*
block_size
) (
PX_MD
*h);
112
void (*
reset
) (
PX_MD
*h);
113
void (*
update
) (
PX_MD
*h,
const
uint8
*data,
unsigned
dlen);
114
void (*
finish
) (
PX_MD
*h,
uint8
*dst);
115
void (*
free
) (
PX_MD
*h);
116
/* private */
117
union
118
{
119
unsigned
code
;
120
void
*
ptr
;
121
}
p
;
122
};
123
124
struct
px_alias
125
{
126
char
*
alias
;
127
char
*
name
;
128
};
129
130
struct
px_hmac
131
{
132
unsigned (*
result_size
) (
PX_HMAC
*h);
133
unsigned (*
block_size
) (
PX_HMAC
*h);
134
void (*
reset
) (
PX_HMAC
*h);
135
void (*
update
) (
PX_HMAC
*h,
const
uint8
*data,
unsigned
dlen);
136
void (*
finish
) (
PX_HMAC
*h,
uint8
*dst);
137
void (*
free
) (
PX_HMAC
*h);
138
void (*
init
) (
PX_HMAC
*h,
const
uint8
*key,
unsigned
klen);
139
140
PX_MD
*
md
;
141
/* private */
142
struct
143
{
144
uint8
*
ipad
;
145
uint8
*
opad
;
146
}
p
;
147
};
148
149
struct
px_cipher
150
{
151
unsigned (*
block_size
) (
PX_Cipher
*c);
152
unsigned (*
key_size
) (
PX_Cipher
*c);
/* max key len */
153
unsigned (*
iv_size
) (
PX_Cipher
*c);
154
155
int (*
init
) (
PX_Cipher
*c,
const
uint8
*key,
unsigned
klen,
const
uint8
*iv);
156
int (*
encrypt
) (
PX_Cipher
*c,
const
uint8
*data,
unsigned
dlen,
uint8
*res);
157
int (*
decrypt
) (
PX_Cipher
*c,
const
uint8
*data,
unsigned
dlen,
uint8
*res);
158
void (*
free
) (
PX_Cipher
*c);
159
/* private */
160
void
*
ptr
;
161
int
pstat
;
/* mcrypt uses it */
162
};
163
164
struct
px_combo
165
{
166
int (*
init
) (
PX_Combo
*cx,
const
uint8
*key,
unsigned
klen,
167
const
uint8
*iv,
unsigned
ivlen);
168
int (*
encrypt
) (
PX_Combo
*cx,
const
uint8
*data,
unsigned
dlen,
169
uint8
*res,
unsigned
*rlen);
170
int (*
decrypt
) (
PX_Combo
*cx,
const
uint8
*data,
unsigned
dlen,
171
uint8
*res,
unsigned
*rlen);
172
unsigned (*
encrypt_len
) (
PX_Combo
*cx,
unsigned
dlen);
173
unsigned (*
decrypt_len
) (
PX_Combo
*cx,
unsigned
dlen);
174
void (*
free
) (
PX_Combo
*cx);
175
176
PX_Cipher
*
cipher
;
177
unsigned
padding
;
178
};
179
180
int
px_find_digest
(
const
char
*name,
PX_MD
**res);
181
int
px_find_hmac
(
const
char
*name,
PX_HMAC
**res);
182
int
px_find_cipher
(
const
char
*name,
PX_Cipher
**res);
183
int
px_find_combo
(
const
char
*name,
PX_Combo
**res);
184
185
int
px_get_random_bytes
(
uint8
*dst,
unsigned
count);
186
int
px_get_pseudo_random_bytes
(
uint8
*dst,
unsigned
count);
187
int
px_add_entropy
(
const
uint8
*data,
unsigned
count);
188
189
unsigned
px_acquire_system_randomness
(
uint8
*dst);
190
191
const
char
*
px_strerror
(
int
err);
192
193
const
char
*
px_resolve_alias
(
const
PX_Alias
*aliases,
const
char
*name);
194
195
void
px_set_debug_handler
(
void
(*handler) (
const
char
*));
196
197
198
#define px_md_result_size(md) (md)->result_size(md)
199
#define px_md_block_size(md) (md)->block_size(md)
200
#define px_md_reset(md) (md)->reset(md)
201
#define px_md_update(md, data, dlen) (md)->update(md, data, dlen)
202
#define px_md_finish(md, buf) (md)->finish(md, buf)
203
#define px_md_free(md) (md)->free(md)
204
205
#define px_hmac_result_size(hmac) (hmac)->result_size(hmac)
206
#define px_hmac_block_size(hmac) (hmac)->block_size(hmac)
207
#define px_hmac_reset(hmac) (hmac)->reset(hmac)
208
#define px_hmac_init(hmac, key, klen) (hmac)->init(hmac, key, klen)
209
#define px_hmac_update(hmac, data, dlen) (hmac)->update(hmac, data, dlen)
210
#define px_hmac_finish(hmac, buf) (hmac)->finish(hmac, buf)
211
#define px_hmac_free(hmac) (hmac)->free(hmac)
212
213
214
#define px_cipher_key_size(c) (c)->key_size(c)
215
#define px_cipher_block_size(c) (c)->block_size(c)
216
#define px_cipher_iv_size(c) (c)->iv_size(c)
217
#define px_cipher_init(c, k, klen, iv) (c)->init(c, k, klen, iv)
218
#define px_cipher_encrypt(c, data, dlen, res) \
219
(c)->encrypt(c, data, dlen, res)
220
#define px_cipher_decrypt(c, data, dlen, res) \
221
(c)->decrypt(c, data, dlen, res)
222
#define px_cipher_free(c) (c)->free(c)
223
224
225
#define px_combo_encrypt_len(c, dlen) (c)->encrypt_len(c, dlen)
226
#define px_combo_decrypt_len(c, dlen) (c)->decrypt_len(c, dlen)
227
#define px_combo_init(c, key, klen, iv, ivlen) \
228
(c)->init(c, key, klen, iv, ivlen)
229
#define px_combo_encrypt(c, data, dlen, res, rlen) \
230
(c)->encrypt(c, data, dlen, res, rlen)
231
#define px_combo_decrypt(c, data, dlen, res, rlen) \
232
(c)->decrypt(c, data, dlen, res, rlen)
233
#define px_combo_free(c) (c)->free(c)
234
235
#endif
/* __PX_H */
src
px.h
Generated on Fri Jul 19 2013 03:29:02 for libfortuna by
1.8.3.1