~ubuntu-branches/debian/lenny/dropbear/lenny

« back to all changes in this revision

Viewing changes to libtomcrypt/mycrypt_pk.h

  • Committer: Bazaar Package Importer
  • Author(s): Gerrit Pape
  • Date: 2005-05-25 22:38:17 UTC
  • mfrom: (1.2.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20050525223817-fdl653extybmz1zb
Tags: 0.45-3
* debian/dropbear.init: init script prints human readable message in case
  it's disabled (closes: #309099).
* debian/dropbear.postinst: configure: restart service through init script
  instead of start.
* debian/dropbear.prerm: set -u -> set -e.

Show diffs side-by-side

added added

removed removed

Lines of Context:
44
44
     }                                                           \
45
45
}
46
46
 
47
 
extern int is_prime(mp_int *, int *);
48
 
extern int rand_prime(mp_int *N, long len, prng_state *prng, int wprng);
 
47
 int is_prime(mp_int *, int *);
 
48
 int rand_prime(mp_int *N, long len, prng_state *prng, int wprng);
49
49
 
50
50
#else
51
51
   #ifdef MRSA
67
67
 
68
68
#define PK_PRIVATE            0        /* PK private keys */
69
69
#define PK_PUBLIC             1        /* PK public keys */
70
 
#define PK_PRIVATE_OPTIMIZED  2        /* PK private key [rsa optimized] */
71
70
 
72
71
/* ---- PACKET ---- */
73
72
#ifdef PACKET
74
73
 
75
 
extern void packet_store_header(unsigned char *dst, int section, int subsection);
76
 
extern int packet_valid_header(unsigned char *src, int section, int subsection);
 
74
 void packet_store_header(unsigned char *dst, int section, int subsection);
 
75
 int packet_valid_header(unsigned char *src, int section, int subsection);
77
76
 
78
77
#endif
79
78
 
90
89
 
91
90
typedef struct Rsa_key {
92
91
    int type;
93
 
    mp_int e, d, N, qP, pQ, dP, dQ, p, q;
 
92
    mp_int e, d, N, p, q, qP, dP, dQ;
94
93
} rsa_key;
95
94
 
96
 
extern int rsa_make_key(prng_state *prng, int wprng, int size, long e, rsa_key *key);
 
95
 int rsa_make_key(prng_state *prng, int wprng, int size, long e, rsa_key *key);
97
96
 
98
 
extern int rsa_exptmod(const unsigned char *in,   unsigned long inlen,
 
97
 int rsa_exptmod(const unsigned char *in,   unsigned long inlen,
99
98
                      unsigned char *out,  unsigned long *outlen, int which,
100
99
                      prng_state    *prng, int           prng_idx,
101
100
                      rsa_key *key);
102
101
 
103
102
#ifdef RSA_TIMING
104
103
 
105
 
extern int tim_exptmod(prng_state *prng, int prng_idx, 
 
104
 int tim_exptmod(prng_state *prng, int prng_idx, 
106
105
                       mp_int *c, mp_int *e, mp_int *d, mp_int *n, mp_int *m);
107
106
 
108
107
#else
111
110
 
112
111
#endif
113
112
 
114
 
extern void rsa_free(rsa_key *key);
 
113
 void rsa_free(rsa_key *key);
115
114
 
 
115
/* These use PKCS #1 v2.0 padding */
116
116
int rsa_encrypt_key(const unsigned char *inkey,  unsigned long inlen,
117
117
                          unsigned char *outkey, unsigned long *outlen,
118
118
                    const unsigned char *lparam, unsigned long lparamlen,
137
137
                          int            hash_idx, unsigned long saltlen,
138
138
                          int           *stat,     rsa_key      *key);
139
139
 
 
140
/* these use PKCS #1 v1.5 padding */
 
141
int rsa_v15_encrypt_key(const unsigned char *inkey,    unsigned long  inlen,
 
142
                              unsigned char *outkey,   unsigned long *outlen,
 
143
                              prng_state    *prng,     int            prng_idx, 
 
144
                              rsa_key       *key);
 
145
                              
 
146
int rsa_v15_decrypt_key(const unsigned char *in,     unsigned long  inlen,
 
147
                              unsigned char *outkey, unsigned long keylen, 
 
148
                              prng_state    *prng,   int            prng_idx,
 
149
                              int           *res,    rsa_key       *key);
 
150
 
 
151
int rsa_v15_sign_hash(const unsigned char *msghash,  unsigned long  msghashlen, 
 
152
                            unsigned char *sig,      unsigned long *siglen, 
 
153
                            prng_state    *prng,     int            prng_idx,
 
154
                            int            hash_idx, rsa_key       *key);
 
155
 
 
156
int rsa_v15_verify_hash(const unsigned char *sig,      unsigned long siglen,
 
157
                        const unsigned char *msghash,  unsigned long msghashlen,
 
158
                              prng_state    *prng,     int           prng_idx,
 
159
                              int            hash_idx, int          *stat,     
 
160
                              rsa_key       *key);
 
161
 
 
162
 
 
163
/* PKCS #1 import/export */
140
164
int rsa_export(unsigned char *out, unsigned long *outlen, int type, rsa_key *key);
141
165
int rsa_import(const unsigned char *in, unsigned long inlen, rsa_key *key);
142
166
                        
150
174
    mp_int x, y;
151
175
} dh_key;
152
176
 
153
 
extern int dh_test(void);
154
 
extern void dh_sizes(int *low, int *high);
155
 
extern int dh_get_size(dh_key *key);
156
 
 
157
 
extern int dh_make_key(prng_state *prng, int wprng, int keysize, dh_key *key);
158
 
extern void dh_free(dh_key *key);
159
 
 
160
 
extern int dh_export(unsigned char *out, unsigned long *outlen, int type, dh_key *key);
161
 
extern int dh_import(const unsigned char *in, unsigned long inlen, dh_key *key);
162
 
 
163
 
extern int dh_shared_secret(dh_key *private_key, dh_key *public_key,
 
177
 int dh_test(void);
 
178
 void dh_sizes(int *low, int *high);
 
179
 int dh_get_size(dh_key *key);
 
180
 
 
181
 int dh_make_key(prng_state *prng, int wprng, int keysize, dh_key *key);
 
182
 void dh_free(dh_key *key);
 
183
 
 
184
 int dh_export(unsigned char *out, unsigned long *outlen, int type, dh_key *key);
 
185
 int dh_import(const unsigned char *in, unsigned long inlen, dh_key *key);
 
186
 
 
187
 int dh_shared_secret(dh_key *private_key, dh_key *public_key,
164
188
                            unsigned char *out, unsigned long *outlen);
165
189
 
166
 
extern int dh_encrypt_key(const unsigned char *inkey, unsigned long keylen,
 
190
 int dh_encrypt_key(const unsigned char *inkey, unsigned long keylen,
167
191
                                unsigned char *out,  unsigned long *len, 
168
192
                                prng_state *prng, int wprng, int hash, 
169
193
                                dh_key *key);
170
194
 
171
 
extern int dh_decrypt_key(const unsigned char *in,  unsigned long inlen, 
 
195
 int dh_decrypt_key(const unsigned char *in,  unsigned long inlen, 
172
196
                                unsigned char *outkey, unsigned long *keylen, 
173
197
                                dh_key *key);
174
198
 
175
 
extern int dh_sign_hash(const unsigned char *in,  unsigned long inlen,
 
199
 int dh_sign_hash(const unsigned char *in,  unsigned long inlen,
176
200
                              unsigned char *out, unsigned long *outlen,
177
201
                              prng_state *prng, int wprng, dh_key *key);
178
202
 
179
 
extern int dh_verify_hash(const unsigned char *sig, unsigned long siglen,
 
203
 int dh_verify_hash(const unsigned char *sig, unsigned long siglen,
180
204
                          const unsigned char *hash, unsigned long hashlen, 
181
205
                                int *stat, dh_key *key);
182
206
 
195
219
    mp_int k;
196
220
} ecc_key;
197
221
 
198
 
extern int ecc_test(void);
199
 
extern void ecc_sizes(int *low, int *high);
200
 
extern int ecc_get_size(ecc_key *key);
201
 
 
202
 
extern int ecc_make_key(prng_state *prng, int wprng, int keysize, ecc_key *key);
203
 
extern void ecc_free(ecc_key *key);
204
 
 
205
 
extern int ecc_export(unsigned char *out, unsigned long *outlen, int type, ecc_key *key);
206
 
extern int ecc_import(const unsigned char *in, unsigned long inlen, ecc_key *key);
207
 
 
208
 
extern int ecc_shared_secret(ecc_key *private_key, ecc_key *public_key, 
 
222
 int ecc_test(void);
 
223
 void ecc_sizes(int *low, int *high);
 
224
 int ecc_get_size(ecc_key *key);
 
225
 
 
226
 int ecc_make_key(prng_state *prng, int wprng, int keysize, ecc_key *key);
 
227
 void ecc_free(ecc_key *key);
 
228
 
 
229
 int ecc_export(unsigned char *out, unsigned long *outlen, int type, ecc_key *key);
 
230
 int ecc_import(const unsigned char *in, unsigned long inlen, ecc_key *key);
 
231
 
 
232
 int ecc_shared_secret(ecc_key *private_key, ecc_key *public_key, 
209
233
                             unsigned char *out, unsigned long *outlen);
210
234
 
211
 
extern int ecc_encrypt_key(const unsigned char *inkey, unsigned long keylen,
 
235
 int ecc_encrypt_key(const unsigned char *inkey, unsigned long keylen,
212
236
                                 unsigned char *out,  unsigned long *len, 
213
237
                                 prng_state *prng, int wprng, int hash, 
214
238
                                 ecc_key *key);
215
239
 
216
 
extern int ecc_decrypt_key(const unsigned char *in, unsigned long inlen,
 
240
 int ecc_decrypt_key(const unsigned char *in, unsigned long inlen,
217
241
                                 unsigned char *outkey, unsigned long *keylen, 
218
242
                                 ecc_key *key);
219
243
 
220
 
extern int ecc_sign_hash(const unsigned char *in,  unsigned long inlen,
 
244
 int ecc_sign_hash(const unsigned char *in,  unsigned long inlen,
221
245
                               unsigned char *out, unsigned long *outlen,
222
246
                               prng_state *prng, int wprng, ecc_key *key);
223
247
 
224
 
extern int ecc_verify_hash(const unsigned char *sig,  unsigned long siglen,
 
248
 int ecc_verify_hash(const unsigned char *sig,  unsigned long siglen,
225
249
                           const unsigned char *hash, unsigned long hashlen, 
226
250
                                 int *stat, ecc_key *key);
227
251
#endif
233
257
   mp_int g, q, p, x, y;
234
258
} dsa_key;
235
259
 
236
 
extern int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key);
237
 
extern void dsa_free(dsa_key *key);
 
260
 int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key);
 
261
 void dsa_free(dsa_key *key);
238
262
 
239
 
extern int dsa_sign_hash(const unsigned char *in,  unsigned long inlen,
 
263
 int dsa_sign_hash(const unsigned char *in,  unsigned long inlen,
240
264
                        unsigned char *out, unsigned long *outlen,
241
265
                        prng_state *prng, int wprng, dsa_key *key);
242
266
 
243
 
extern int dsa_verify_hash(const unsigned char *sig, unsigned long siglen,
 
267
 int dsa_verify_hash(const unsigned char *sig, unsigned long siglen,
244
268
                           const unsigned char *hash, unsigned long inlen, 
245
269
                           int *stat, dsa_key *key);
246
270
 
247
 
extern int dsa_import(const unsigned char *in, unsigned long inlen, dsa_key *key);
248
 
 
249
 
extern int dsa_export(unsigned char *out, unsigned long *outlen, int type, dsa_key *key);
250
 
 
251
 
extern int dsa_verify_key(dsa_key *key, int *stat);
252
 
 
253
 
#endif
 
271
 int dsa_import(const unsigned char *in, unsigned long inlen, dsa_key *key);
 
272
 
 
273
 int dsa_export(unsigned char *out, unsigned long *outlen, int type, dsa_key *key);
 
274
 
 
275
 int dsa_verify_key(dsa_key *key, int *stat);
 
276
 
 
277
#endif
 
278
 
 
279
/* ifdef added by matt - a bit of a hack */
 
280
#ifdef MPI
 
281
/* DER handling */
 
282
int der_encode_integer(mp_int *num, unsigned char *out, unsigned long *outlen);
 
283
int der_decode_integer(const unsigned char *in, unsigned long *inlen, mp_int *num);
 
284
int der_length_integer(mp_int *num, unsigned long *len);
 
285
int der_put_multi_integer(unsigned char *dst, unsigned long *outlen, mp_int *num, ...);
 
286
int der_get_multi_integer(const unsigned char *src, unsigned long *inlen,  mp_int *num, ...);
 
287
#endif
 
288